Dear Adam,
I still have another question. I set the address of kernel in mem_layout-xxx.cpp, it successfully get into kernel ( get into __main(), stop in some place I still not checking ), but I fill confuse on virtual memory setting.
On my platform, ram is start at 0x3000,0000, so I set : * RAM_BASE=0x3000,000 * DEFAULT_RELOC_arm=0x0 * MOD_ADDR use default value in modules.list, i.e., 0x0200,0000 * Mem_layout::platform_phys_base=0x3000,0000 * Mem_layout::Sdram_phys_base =0x3020,0000
So fiasco kernel start at 0x3020,0000, sigma0 and roottask are under 0x3020,000, which are 0x3006,8000 and 0x3007,8000, respectively.
But how does kernel know the area from 0x3010,0000 to 0x3020,0000 ? I see map_1mb in map_hw will map this area( from Mem_layout::platform_map_base to Mem_layout::platform_phys_base ), but this only mapping 1mb, where is 0x3010,0000 to 0x3020,0000 setting ? Or I'm missing some setting ? And I fill strange in Mem_layout::Sdram_phys_base to 0x3020,0000, since physical ram is started at 0x3000,0000, is this setting really correct or I misunderstand its meaning ?
Best Regards, Tsai, Tung-Chieh