Hello, All!
This post is about how to eliminate memory restriction 256MB in realview-pbxa9 platform (ARM Cortex A9 processor). The problem is that L4 bootstrap doesn't scan all RAM memory presented on this board. In QEMU source code for this platform (see hw/realview.c in QEMU source directory, function: realview_init) we can find that it can be 3 memory intervals in pbx a9:
1) base=0x00, size=min(sz, 256MB) This is "SDRAM1" 2) base=0x20000000, size=sz-512MB (appears when sz>512) This is called "core tile ram" 3) base=0x70000000, size=512 This is "SDRAM2", where sz is a total board memory, in QEMU specified via -m option. If that memory map is true (I have no pbx-a9 board operator's manual), we can make a simple patch to L4 bootstrap (file <genode>/base-foc/contrib/l4/pkg/bootstrap/server/src/platform/rv.cc), that extends a basic 256MB memory to 256MB+512MB by overloading setup_memory_map virtual function.
/namespace { class Platform_arm_rv : public Platform_single_region_ram { bool probe() { return true; }
//fix a memory limit 256MB in realview-pbxa9.platform. Adds another memory chip of 512MB. //WARNING: this fix works only if 512MB memory chip (or more) is present! //In case of QEMU you must run it with -m 512 or higher. void setup_memory_map(l4util_mb_info_t *, Region_list *ram, Region_list *) { ram->add(Region::n(0x0, 0x10000000, ".ram", Region::Ram)); //SDRAM as it defined in realview.c (QUEMU sources) ram->add(Region::n(0x70000000, 0x90000000, ".ram", Region::Ram)); //the second 512MB SDRAM //TODO: add more RAM regions if you need it according to the the platform map. }
void init() { static L4::Uart_pl011 _uart(36,36); _uart.startup(0x10009000); set_stdio_uart(&_uart); } }; }
REGISTER_PLATFORM(Platform_arm_rv); / This is an example patch, it would be more correct (if total RAM size is less then 512) to find total memory size first, then add the memory regions, regarding a total memory size. I hope it will be usefull. Best regards, and happy cristmas&new year.
Evgeny Fedotov. Samsung Research Center, Moscow.