i.mx53 and fiasco.oc

Adam Lackorzynski adam at os.inf.tu-dresden.de
Wed Aug 22 23:36:29 CEST 2012


Hi,

On Wed Aug 22, 2012 at 13:16:12 +0400, Nikolay Golikov wrote:
> I trying to run fiasco.oc + l4re on freescale i.mx53qsb. And have some
> problems to do this.
> 
> I using i.mx51 platform configuration with some changes. I changed
> addresses in src/kern/arm/bsp/imx/mem_layout-arm-imx.cpp:
> EXTENSION class Mem_layout
> {
> public:
>   enum Virt_layout_imx53 {
>     Timer_map_base       = 0xef1ac000,
>     Uart_map_base        = 0xef1bc000,
>     Watchdog_map_base    = 0xef198000,
>     Pic_map_base         = 0xef200000,
>     Uart_base            = Uart_map_base,
>   };
> 
>   enum Phys_layout_imx53 {
>     Device_phys_base_1   = 0x53f00000,
>     Device_phys_base_2   = 0x0fffc000,
> 
>     Watchdog_phys_base   = 0x53f98000, // wdog1
>     Timer_phys_base      = 0x53fac000, // epit1
>     Uart_phys_base       = 0x53fbc000, // uart1
>     Pic_phys_base        = 0x0fffc000,
>   };
> 
> };
> 
> And made some little changes in other source files.
> When I try to boot it, I see something like this:
> 
> ## Booting kernel from Legacy Image at 70800000 ...
>    Image Name:   L4 Image #47
>    Image Type:   ARM Linux Kernel Image (uncompressed)
>    Data Size:    897192 Bytes = 876.2 kB
>    Load Address: 71000000
>    Entry Point:  71000000
>    Verifying Checksum ... OK
>    Loading Kernel Image ... OK
> OK
> 
> Starting kernel ...
> 
> 
> L4 Bootstrapper
>   Build: #47 �В�т. �а�в�г. 21 16:49:21 MSK 2012, 4.5.1
>   Scanning up to 1024 MB RAM
>   Memory size is 512MB (Limited by Scan) (70000000 - 90000000)
>   RAM: 0000000070000000 - 000000008fffffff: 524288kB
>   Total RAM: 512MB
>   mod04: 710c1000-710da540: hello
>   mod03: 710a7000-710c0458: l4re
>   mod02: 7106d000-710a6624: moe
>   mod01: 71063000-7106c370: sigma0
>   mod00: 71015000-71062cac: fiasco
>   Moving 5 modules to 71100000 with offset eb000
>   moving module 05 { 710c1000-710da540 } -> { 711ac000-711c5540 }
>   moving module 04 { 710a7000-710c0458 } -> { 71192000-711ab458 }
>   moving module 03 { 7106d000-710a6624 } -> { 71158000-71191624 }
>   moving module 02 { 71063000-7106c370 } -> { 7114e000-71157370 }
>   moving module 01 { 71015000-71062cac } -> { 71100000-7114dcac }
>   Scanning fiasco
>   Scanning sigma0
>   Scanning moe --init=rom/hello
>   Relocated mbi to [0x7100f000-0x7100f0d6]
>   Loading fiasco
>   Loading sigma0
>   Loading moe
>   find kernel info page...
>   found kernel info page at 0x70002000
> Regions of list regions
>     [ 70001000,  700019bf] {      9c0} Kern   fiasco
>     [ 70002000,  7005cfff] {    5b000} Kern   fiasco
>     [ 70090000,  7009e17b] {     e17c} Sigma0 sigma0
>     [ 70140000,  701717d3] {    317d4} Root   moe
>     [ 70178000,  7018eec7] {    16ec8} Root   moe
>     [ 71000000,  710143ef] {    143f0} Boot   bootstrap
>     [ 7100f000,  7100f1d3] {      1d4} Root   Multiboot info
>     [ 71192000,  711c553f] {    33540} Root   Modules Memory
>   API Version: (87) experimental
>   Sigma0 config    ip:700900e0 sp:71013044
>   Roottask config  ip:70140178 sp:00000000
>   Starting kernel fiasco at 70001000
> Hello from Startup::stage2
> Initialize page table
> 
> It stops on line 151 src/kern/arm/gic.cpp:
>  Io::write<Mword>(0, _dist_base + DIST_CTRL);
> where _dist_base is Pic_map_base.
> If I understand correctly tzic on i.mx53 and tzic on i.mx51 is equivalent.

The phys addresses in mem_layout must be 1m aligned:
     Pic_map_base         = 0xef2fc000,
     Device_phys_base_2   = 0x0ff00000,


> And second question: I do not understand for what purpose make pysical
> devices and sdram mapping in: src/kern/arm/bootstrap.cpp?
>   // map sdram linear from 0xf0000000
>   for (va = Mem_layout::Map_base, pa = Mem_layout::Sdram_phys_base;
>        va < Mem_layout::Map_base + (4 << 20); va += 0x100000, pa += 0x100000)
>     map_1mb(page_dir, va, pa, true, false);
> 
>   // map sdram 1:1
>   for (va = Mem_layout::Sdram_phys_base;
>        va < Mem_layout::Sdram_phys_base + (4 << 20); va += 0x100000)
>     map_1mb(page_dir, va, va, true, true);
> 
>   map_hw(page_dir);

To map the kernel and some memory for it.
 
> And why afterwards devises on physical addresses are out of order?

Fixed with above?



Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/




More information about the l4-hackers mailing list