Hello,
On 04/18/2017 12:42 PM, Vasan VS wrote:
Hi all,
We are trying to build and run Genode on a custom board with iMX6 processor. As part of this process, we are trying to understand the implementation of base-hw in the 17.02 version release.
In trying to understand the implementation of base-hw in the 16.05 implementation and in the current 17.02 version, we find that the bootstrap portion of the implementation is present in 17.02 source base @ base-hw/src/bootstrap which is NOT present in 16.05 code base.
We had a look at the detailed release notes of all the intermediate releases between these two versions (16.05->16.08, 16.08->16.11, 16.11->17.02) but we could not find any documentation of the changes that has been done on this particular portion of base-hw between these two releases.
If we use the 16.05 version on our board, we get the "Kernel initialized" message after init is started but on the 17.02 version, the board is hanging and refusing to boot up after "Starting kernel" message(from uboot).
Can someone help us with the following: a) Provide the details of the changes that has been done between the two versions in the bootstrap portion
I'm really sorry that we did not add a corresponding section in the last release notes. Actually, this was done by intention, because the bootstrap component[1] is part of a major restructuring of base-hw to run core/kernel as part of every protection domain[2] that is not yet complete. Anyway, now I think it would have been better to at least give some hints in the release notes.
In principle, the bootstrap component is used to initialize the cpu cores, to setup core's page-table, and to execute any board specifics that need to be done before the MMU is enabled. Finally it enables the MMU and starts core. Moreover, all board specific things are encoded into bootstrap and not core. Instead bootstrap provides all necessary information, like available RAM to core in a generic way, via the so called Bootinfo.
b) Point us to any clues on why we are facing this hang problem after the log service is initialized and while enabling the MMU and caches.
As already mentioned, bootstrap initializes core's page-tables. Therefore, all available RAM and memory-mapped I/O registers used by core need to be stated within the board-specific Platform::Board constructor in the bootstrap component. The current release contains some intermediate state, where the corresponding file for your platform resides here:
repos/base-hw/src/bootstrap/spec/imx6/platform.cc
Another, thing that changed recently is that we enabled multiprocessor support for the Wandboard, which is the i.MX6 board we are using. To be on the safe side, you can limit the numbers of cores in these files:
repos/base-hw/lib/mk/spec/imx6/*.mk
Regards Stefan
[1] https://github.com/genodelabs/genode/issues/2092 [2] https://github.com/genodelabs/genode/issues/2091
Thanks in advance,
Vasan
Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main