Am 03.07.2014 18:21, schrieb Martin Schröder:
My board is equipped with 128MB external DRAM:
L4 Bootstrapper Build: #1234 Do 3. Jul 17:34:17 CEST 2014, 4.6.2 Scanning up to 128 MB RAM Memory size is 128MB (40000000 - 47ffffff) RAM: 0000000040000000 - 0000000047ffffff: 131072kB Total RAM: 128MB
In addition the CPU has 128kb internal RAM (so called On-Chip-RAM) which is located at address 0 - 0001ffff.
I want to expose this OCRAM as a virtual device to a (already existing) kernel driver within l4linux, so I added these few lines to my config:
OCRAM => new Device() { .hid= "ocram"; new-res Mmio(0x00000000 .. 0x0001FFFF); }
client0 => new System_bus() { ... "ocram" = wrap(hw-root.OCRAM); }
Unfortunately IO cannot map this device, but maps instead something else which is of no use for me:
io | <0x1bff0>IOMEM [00000000000000-0000000001ffff 20000] non-pref (32bit) (align=1ffff flags=4002) io | WARNING: phys mmio resource allocation failed io | <0x1bff0>IOMEM [00000000000000-0000000001ffff 20000] non-pref (32bit) (align=1ffff flags=4002) io | allocated resource: <0x1bff0>IOMEM [00000001000000-0000000101ffff 20000] non-pref (align=1ffff flags=4002)
But a few lines up I see:
MOE: Hello world! MOE: found 109032 KByte free memory MOE: found RAM from 40000000 to 47000000 ...
Probably MOE assumes this as normal ram and adds it to its pool.
But how can I inhibit MOE grabbing this piece of RAM and instead assign it to the OCRAM device in IO?
After some debugging it am convinced that MOE is not using or blocking this OCRAM at address 0x0.
But what is the reason that io cannot allocate the requested memory and maps instead something of the same size?
Martin.