base-hw Bootstrap implementation: 16.05 version vs. 17.02 version

Stefan Kalkowski stefan.kalkowski at ...1...
Fri Apr 21 15:01:24 CEST 2017


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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
> 

-- 
Stefan Kalkowski
Genode Labs

https://github.com/skalk ยท http://genode.org/




More information about the users mailing list