User Tools

Site Tools


dev:nab:v2:mtl

Metal source compilation

Overview

The Nabaztag:tag uses a virtual machine to run “bytecodes”, quite like Java does. It makes it easier for the developpers to “update” the code at runtime (and I guess it also sandboxes the “user” code, allowing for better ressources management and maybe some security…). The bytecodes are written in a subset/version of a language called “Metal”, written by Sylvain Huet.

The Nabaztag:tag uses two bytecodes, that I will describe as:

  • The BOOT bytecode, which is embedded in the firmware and runs at boot time. It manages the configuration page and also the boot process of the Nabaztag (Wifi auth , DHCP, Firmware updates, …)
  • The NOMINAL bytecode, which is downloaded when the Nabaztag boots. It will be the main runtime bytecode.

The BOOT bytecode can only be updated through a firmware update, while the NOMINAL bytecode can be customized for every Nabaztag. But I'm no expert for this stuff; Pixel did a great job exploring and tweaking the bytecode to add functions, even before we had the sources, see the OpenJabNab wiki (French) for more informations.

Well, now that we have the sources, the remaining question is: How to compile from a Metal source to an executable bytecode ?

Get the source

Git repo: redox/mtl_linux.git

Compilation

Conversion for embedding into the firmware

/home/share/www/redox.ws/wiki/data/pages/dev/nab/v2/mtl.txt · Last modified: 2023/11/24 22:23 by redox