Thanks for all replies. I think I have excluded [0, 0x02200000), and also have changed the parameter RAM_BASE and RAM_SIZE.
Let me list what I have done to move foc kernel address:
1) modify file base-foc/contrib/kern/arm/bsp/mem_layout_xxxx.cc , change Sdram_phy_address from 0x0 to 0x02200000.
2) modify file base-foc/contrib/l4/mk/platforms/myplatform.conf, set PLATFORM_RAM_BASE = 0x02200000 and PLATFORM_RAM_SIZE_MB = 990.
3) modify file base-foc/contrib/kern/arm/bsp/Modules, set CONFIG_KERNEL_LOAD_ADDR := 0x02200000.
4) modify file base-foc/src/core/myplatform/target.mk, change LD_TEXT_ADDR value from 0x00140000 to 0x02340000.
Am I right?
What else should I do to make sure foc kernel address is moved and nothing else can use [0, 0x02200000) ?
Also, I have confirmed that Attached_io_mem_dataspace can work in this case, because what I write in uboot can be read correctly in genode.
Here is part of my serial log.
Starting kernel ...
L4 Bootstrapper
Build: #162 Tue Mar 11 13:53:39 CST 2014, 4.7.2
Scanning up to 990 MB RAM
Memory size is 990MB (02200000 - 40000000)
RAM: 0000000002200000 - 000000003fffffff: 1013760kB
Total RAM: 990MB
mod21: 03ad5000-03b1c000: genode/root-amt.gz
mod20: 03a99000-03ad4bfc: genode/terminal_log
mod19: 03a3d000-03a985c4: genode/terminal
mod18: 0365c000-03a3c438: genode/l4android
mod17: 0361c000-0365be1c: genode/nit_fb
mod16: 035cd000-0361bc48: genode/nitpicker
mod15: 0358e000-035cc004: genode/omapx_xmodem_drv
mod14: 0354b000-0358dfa0: genode/part_blk
mod13: 0350e000-0354ac70: genode/omapx_fb_drv
mod12: 034cf000-0350dc90: genode/omapx_input_drv
mod11: 0348f000-034ced18: genode/sd_card_drv
mod10: 0344f000-0348e58c: genode/kdb_uart_drv
mod09: 03410000-0344e4a0: genode/omapx_i2c_drv
mod08: 033d9000-0340f818: genode/omapx_gpio_drv
mod07: 033a6000-033d8ec4: genode/omapx_ddr_pwr_drv
mod06: 03373000-033a5eac: genode/omapx_appwr_drv
mod05: 03338000-03372e3c: genode/timer
mod04: 032f2000-03337738: genode/init
mod03: 032f0000-032f14c9: genode/config
mod02: 03289000-032ef31c: genode/core
mod01: 0327f000-03288374: sigma0
mod00: 03216000-0327e330: /home/android/genode-master-hello/build_foc_pandax/kernel/fiasco.oc/fiasco
Moving up to 22 modules behind 3300000
moving module 00 { 3216000-327e32f } -> { 3c06000-3c6e32f } [426800]
moving module 01 { 327f000-3288373 } -> { 3c6f000-3c78373 } [37748]
moving module 02 { 3289000-32ef31b } -> { 3c79000-3cdf31b } [418588]
moving module 03 { 32f0000-32f14c8 } -> { 3b1c000-3b1d4c8 } [5321]
moving module 04 { 32f2000-3337737 } -> { 3b1e000-3b63737 } [284472]
moving module 05 { 3338000-3372e3b } -> { 3300000-333ae3b } [241212]
moving module 06 { 3373000-33a5eab } -> { 333b000-336deab } [208556]
moving module 07 { 33a6000-33d8ec3 } -> { 336e000-33a0ec3 } [208580]
moving module 08 { 33d9000-340f817 } -> { 33a1000-33d7817 } [223256]
moving module 09 { 3410000-344e49f } -> { 33d8000-341649f } [255136]
moving module 10 { 344f000-348e58b } -> { 3417000-345658b } [259468]
moving module 11 { 348f000-34ced17 } -> { 3457000-3496d17 } [261400]
moving module 12 { 34cf000-350dc8f } -> { 3497000-34d5c8f } [257168]
moving module 13 { 350e000-354ac6f } -> { 34d6000-3512c6f } [248944]
moving module 14 { 354b000-358df9f } -> { 3513000-3555f9f } [274336]
moving module 15 { 358e000-35cc003 } -> { 3556000-3594003 } [253956]
moving module 16 { 35cd000-361bc47 } -> { 3595000-35e3c47 } [322632]
moving module 17 { 361c000-365be1b } -> { 35e4000-3623e1b } [261660]
moving module 18 { 365c000-3a3c437 } -> { 3624000-3a04437 } [4064312]
moving module 19 { 3a3d000-3a985c3 } -> { 3a05000-3a605c3 } [374212]
moving module 20 { 3a99000-3ad4bfb } -> { 3a61000-3a9cbfb } [244732]
moving module 21 { 3ad5000-3b1bfff } -> { 3a9d000-3ae3fff } [290816]
moving module 03 { 3b1c000-3b1d4c8 } -> { 3ae4000-3ae54c8 } [5321]
moving module 04 { 3b1e000-3b63737 } -> { 3ae6000-3b2b737 } [284472]
Scanning /home/android/genode-master-hello/build_foc_pandax/kernel/fiasco.oc/fiasco -serial_esc
Scanning sigma0
Scanning genode/core
Relocated mbi to [0x320f000-0x320f387]
Loading e-master-hello/build_foc_pandax/kernel/fiasco.oc/fiasco
Loading sigma0
Loading genode/core
find kernel info page...
found kernel info page at 0x2202000
Regions of list 'regions'
[ 2201000, 2201a7f] { a80} Kern e-master-hello/build_foc_pandax/kernel/fiasco.oc/fiasco
[ 2202000, 2278fff] { 77000} Kern e-master-hello/build_foc_pandax/kernel/fiasco.oc/fiasco
[ 2290000, 229673b] { 673c} Sigma0 sigma0
[ 2298000, 229e17b] { 617c} Sigma0 sigma0
[ 2340000, 248743f] { 147440} Root genode/core
[ 3200000, 32153f3] { 153f4} Boot bootstrap
[ 320f000, 320f484] { 485} Root Multiboot info
[ 3300000, 3b2b737] { 82b738} Root Module
API Version: (87) experimental
Sigma0 config ip:02290100 sp:03214d24
Roottask config ip:0238af84 sp:00000000
Starting kernel e-master-hello/build_foc_pandax/kernel/fiasco.oc/fiasco at 022011c4
L2: ID=410004c8 Type=9e300300 Aux=7e460001 WMask=ff S=0
L2: Type L2C-310 Size = 512kB
Hello from Startup::stage2
Per_cpu_data_alloc: (orig: 0xf00651b8-0xf0065b28)
Boot_alloc: size=0xc
Boot_alloc: allocated extra memory block @0xf13e1000 (size=400)
Boot_alloc: @ 0xf13e1000
Boot_alloc: remaining free block @ 0xf13e1010 (size=3f0)
Boot_alloc: size=0x80
Boot_alloc: @ 0xf13e1010
Boot_alloc: remaining free block @ 0xf13e1090 (size=370)
Number of IRQs available at this GIC: 96
Boot_alloc: size=0x180
Boot_alloc: @ 0xf13e1090
Boot_alloc: remaining free block @ 0xf13e1210 (size=1f0)
Cache config: ON
ID_PFR[01]: 00001231 00000011 ID_[DA]FR0: 00010444 00000000
ID_MMFR[04]: 00100103 20000000 01230000 00102111
FPU0: Arch: VFPv3(3), Part: VFPv3(30), r: 4, v: 9, i: 41, t: hard, p: dbl/sngl
Startup::stage2 finished
SERIAL ESC: allocated IRQ 71 for serial uart
Not using serial hack in slow timer handler.
Welcome to Fiasco.OC (arm)!
L4/Fiasco.OC arm microkernel (C) 1998-2013 TU Dresden
Rev: rexporte compiled with gcc 4.7.2 for pandax_evb []
Build: #128 Tue Mar 11 13:53:25 CST 2014
Per_cpu_data_alloc: (orig: 0xf00651b8-0xf0065b28)
Allocate 2416 bytes (2KB) for CPU[4] local storage (offset=1180e48, 0xf11e6000-0xf11e6970)
Number of CPUs: 2
Calibrating timer loop... Per_cpu_data_alloc: (orig: 0xf00651b8-0xf0065b28)
done.
Allocate 2416 bytes (2KB) for CPU[1] local storage (offset=1181e48, 0xf11e7000-0xf11e7970)
SCache config: ON
IID_PFR[01]: 00001231 00000011G ID_[DA]FR0: 00010444 00000000
MID_MMFR[04]: 00100103 20000000 01230000 00102111
AFPU1: Arch: VFPv3(3), Part: VFPv3(30), r: 4, v: 9, i: 41, t: hard, p: dbl/sngl
0: CPU[1]: goes to idle loop
Hello!
KIP @ 2202000
allocated 4KB for maintenance structures
SIGMA0: Dump of all resource maps
RAM:------------------------
[0:2200000;2200fff]
[0:2279000;228ffff]
[0:2297000;2297fff]
[0:229f000;233ffff]
[4:2340000;2487fff]
[0:2488000;320efff]
[4:320f000;320ffff]
[0:3210000;32fffff]
[4:3300000;3b2bfff]
[0:3b2c000;3effffff]
IOMEM:----------------------
[0:0;21fffff]
[0:40000000;ffffffff]
KIP @ 2202000
magic: 4be6344c
version: 87014444
sigma0 esp: 03214d24 eip: 02290100
sigma1 esp: 00000000 eip: 00000000
root esp: 00000000 eip: 0238af84
MBI @ 320f000
mod[3] [3ae4000,3ae54c9) config
mod[4] [3ae6000,3b2b738) init
mod[5] [3300000,333ae3c) timer
mod[6] [333b000,336deac) omapx_appwr_drv
mod[7] [336e000,33a0ec4) omapx_ddr_pwr_drv
mod[8] [33a1000,33d7818) omapx_gpio_drv
mod[9] [33d8000,34164a0) omapx_i2c_drv
mod[10] [3417000,345658c) kdb_uart_drv
mod[11] [3457000,3496d18) sd_card_drv
mod[12] [3497000,34d5c90) omapx_input_drv
mod[13] [34d6000,3512c70) omapx_fb_drv
mod[14] [3513000,3555fa0) part_blk
mod[15] [3556000,3594004) omapx_xmodem_drv
mod[16] [3595000,35e3c48) nitpicker
mod[17] [35e4000,3623e1c) nit_fb
mod[18] [3624000,3a04438) l4android
mod[19] [3a05000,3a605c4) terminal
mod[20] [3a61000,3a9cbfc) terminal_log
mod[21] [3a9d000,3ae4000) root-amt.gz
:ram_alloc: Allocator 2470784 dump:
Block: [02200000,0220001c) size=0000001c avail=00000000 max_avail=00000000
Block: [0220001c,02200038) size=0000001c avail=00000000 max_avail=00000000
Block: [02200038,02200438) size=00000400 avail=00000000 max_avail=00000000
Block: [02200438,02200454) size=0000001c avail=00000000 max_avail=00000000
Block: [02200454,02200470) size=0000001c avail=00000000 max_avail=00000000
Block: [02200470,0220048c) size=0000001c avail=00000000 max_avail=00016fe4
Block: [0220048c,022004a8) size=0000001c avail=00000000 max_avail=00000000
Block: [022004a8,02201000) size=00000b58 avail=00000b58 max_avail=00000b58
Block: [02279000,0227901c) size=0000001c avail=00000000 max_avail=00016fe4
Block: [0227901c,02290000) size=00016fe4 avail=00016fe4 max_avail=00016fe4
Block: [02297000,0229701c) size=0000001c avail=00000000 max_avail=00016fe4
Block: [0229701c,02297038) size=0000001c avail=00000000 max_avail=00000000
Block: [02297038,02297054) size=0000001c avail=00000000 max_avail=00000000
Block: [02297054,02297070) size=0000001c avail=00000000 max_avail=00000000
Block: [02297070,0229708c) size=0000001c avail=00000000 max_avail=00000000
Block: [0229708c,022970a8) size=0000001c avail=00000000 max_avail=00000000
Block: [022970a8,022970c4) size=0000001c avail=00000000 max_avail=00000000
Block: [022970c4,022970e0) size=0000001c avail=00000000 max_avail=00000000
Block: [022970e0,022970fc) size=0000001c avail=00000000 max_avail=3b4d4000
Block: [022970fc,02297118) size=0000001c avail=00000000 max_avail=00000000
Block: [02297118,02297134) size=0000001c avail=00000000 max_avail=00000eb0
Block: [02297134,02297150) size=0000001c avail=00000000 max_avail=00000000
Block: [02297150,02298000) size=00000eb0 avail=00000eb0 max_avail=00000eb0
Block: [0229f000,0229f01c) size=0000001c avail=00000000 max_avail=3b4d4000
Block: [0229f01c,02340000) size=000a0fe4 avail=000a0fe4 max_avail=000a0fe4
Block: [02488000,0320f000) size=00d87000 avail=00d87000 max_avail=3b4d4000
Block: [03210000,03300000) size=000f0000 avail=000f0000 max_avail=3b4d4000
Block: [03b2c000,3f000000) size=3b4d4000 avail=3b4d4000 max_avail=3b4d4000
=> mem_size=1010847744 (964 MB) / mem_avail=1010846160 (964 MB)
:region_alloc: Allocator 24718f4 dump:
Block: [00001000,02200000) size=021ff000 avail=021ff000 max_avail=021ff000
Block: [02201000,02202000) size=00001000 avail=00001000 max_avail=021ff000
Block: [02203000,02279000) size=00076000 avail=00076000 max_avail=00076000
Block: [02290000,02297000) size=00007000 avail=00007000 max_avail=00076000
Block: [02298000,0229f000) size=00007000 avail=00007000 max_avail=6fff0000
Block: [3f000000,40000000) size=01000000 avail=01000000 max_avail=01000000
Block: [50000000,bfff0000) size=6fff0000 avail=6fff0000 max_avail=6fff0000
Block: [bfff1000,c0000000) size=0000f000 avail=0000f000 max_avail=0000f000
=> mem_size=1932013568 (1842 MB) / mem_avail=1932013568 (1842 MB)
:io_mem: Allocator 2470be0 dump:
Block: [00000000,02200000) size=02200000 avail=02200000 max_avail=02200000
Block: [02201000,02202000) size=00001000 avail=00001000 max_avail=02200000
Block: [02203000,02279000) size=00076000 avail=00076000 max_avail=00076000
Block: [02290000,02297000) size=00007000 avail=00007000 max_avail=00076000
Block: [02298000,0229f000) size=00007000 avail=00007000 max_avail=c0ffffff
Block: [3f000000,ffffffff) size=c0ffffff avail=c0ffffff max_avail=c0ffffff
=> mem_size=3274199039 (3122 MB) / mem_avail=3274199039 (3122 MB)
:io_port: Allocator 247103c dump:
:irq: Allocator 2471498 dump:
Block: [00000000,00000100) size=00000100 avail=00000100 max_avail=00000100
=> mem_size=256 (0 MB) / mem_avail=256 (0 MB)
:rom_fs: Rom_fs 24721a8 dump:
Rom: [03ae6000,03b2b738) init
Rom: [033d8000,034164a0) omapx_i2c_drv
Rom: [0336e000,033a0ec4) omapx_ddr_pwr_drv
Rom: [0333b000,0336deac) omapx_appwr_drv
Rom: [033a1000,033d7818) omapx_gpio_drv
Rom: [034d6000,03512c70) omapx_fb_drv
Rom: [03556000,03594004) omapx_xmodem_drv
Rom: [03497000,034d5c90) omapx_input_drv
Rom: [03ae4000,03ae54c9) config
Rom: [03513000,03555fa0) part_blk
Rom: [02202000,02203000) l4v2_kip
Rom: [02202000,02203000) kip
Rom: [03417000,0345658c) kdb_uart_drv
Rom: [03624000,03a04438) l4android
Rom: [03595000,035e3c48) nitpicker
Rom: [035e4000,03623e1c) nit_fb
Rom: [03a05000,03a605c4) terminal
Rom: [03457000,03496d18) sd_card_drv
Rom: [03a9d000,03ae4000) root-amt.gz
Rom: [03300000,0333ae3c) timer
Rom: [03a61000,03a9cbfc) terminal_log
:core ranges: Allocator 2473f08 dump:
Block: [02200000,02201000) size=00001000 avail=00001000 max_avail=00001000
Block: [02279000,02290000) size=00017000 avail=00017000 max_avail=00017000
Block: [02297000,02298000) size=00001000 avail=00001000 max_avail=3bdf0000
Block: [0229f000,0320f000) size=00f70000 avail=00f70000 max_avail=3bdf0000
Block: [03210000,3f000000) size=3bdf0000 avail=3bdf0000 max_avail=3bdf0000
=> mem_size=1020760064 (973 MB) / mem_avail=1020760064 (973 MB)
int main(): --- create local services ---
int main(): --- start init ---
int main(): transferred 963 MB to init
int main(): --- init created, waiting for exit condition ---
Thanks.