matcha/tock: add support for loading seL4/cantrip from nexus spi flash
Cantrip's seL4 boot bundle is a tarball of:
- seL4 kernel elf image
- capdl-loader elf image: seL4 rootserver + CAmkES components
- cpio archive of built-in apps, models, and opaque files
The loader copies each piece from spi flash to the appropriate place in
memory, starts the smc core running, and then passes boot parameters to
seL4 to do its bootstrap.
Copying the cpio archive to memory is a temporary hack to compensate
for the missing storage manager service meant to provide access to the
spi flash. A 1/2 MB of memory at the end of smc ram is reserved for the
archive. This carve out and the loader work will be eventually be removed.
Specific changes:
- reserve 1/2 MB of smc memory for the cantrip builtins bundle
- overhaul the elf loader to handle the seL4 boot bundle and retrieve
data from spi flash
- setup hal support for the platform
- extend elf file support for loader needs
- add smc_send_bootmsg api for passing seL4 boot parameters to the smc
via the mailbox interface
- add smc_ram_memcpy api for copying data to smc memory
- add smc_ram_zero api for zeroing smc memory (e.g. bss)
NB: the cpio archive may be omitted so that when booting on Renode the
archive can be loaded without involving Tock; this can be used, for
example, to load a bundle larger than 1/2M together with a larger
smc memory config for testing
Change-Id: I7af318c25efc3613e44dc126d1e177c2485d48de
7 files changed