Hi Steve,

When we have encountered this in the past we typically do one of the following:
- Get an earlier stage boot loader to set up the device.  Either uboot, or 
modifying the ELFLoader to set up a static pinmux configuration during 
initialization that seL4 and userlevel doesn't need to modify.  In these 
scenarios UBoot or the ELFloader already have mechanisms for parsing a device 
tree and doing platform specific initialization.
- Add the initialization to a kernel platform init function.  In some cases 
where a kernel driver such as a timer needs to depend on some additional 
configuration then this is added to the device's platform initialization 
functions.  The am335x platform already has some of this in am335x-timer.c and 
plat/am335x/machine/hardware.c.  This approach is usually used when there is a 
reasonably unambiguous configuration requirement that the kernel has such as 
disabling a reset watchdog timer.
- Pick a different platform that doesn't use additional physical memory 
protection on hardware registers that limits access from unprivileged processor 
modes. This additional limitation that some platforms have is a bit outside of 
seL4's assumptions of what mechanisms in the ISA's system architecture are 
available for it to use.  This is similar to how seL4 can't support platforms 
that don't have a memory management unit.

In your case, adding an initialization model to the kernel or to the elfloader 
would be an option. It would likely be better to target the ELFloader as it's 
where we try and put most platform initialization that the kernel doesn't have 
to be aware of.

Cheers,
Kent.
_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel

Reply via email to