m805_893x memory layout

The bootloader passes memory layout profile to kernel via tag pmap.


The address/size of TAG/Kernel/Ramdisk are decided by macros in

lk/target/m805_893x_evm/rule.mk:

BASE_ADDR := 0x80000000

MEMBASE := 0x82000000

MEMSIZE := 0x01000000   //16MB

TAGS_ADDR := BASE_ADDR+0x00000100

KERNEL_ADDR := BASE_ADDR+0x00008000

RAMDISK_ADDR := BASE_ADDR+0x01000000


The log shows:

name = pmem, base = 0x82000000, size = 0x0
name = ump_reserved, base = 0x82000000, size = 0x1b00000
name = fb_wmixer, base = 0x83b00000, size = 0x400000
name = ram_console, base = 0x83f00000, size = 0x100000
name = secured_inbuff, base = 0x84000000, size = 0x0
name = overlay, base = 0x84000000, size = 0x1800000
name = overlay1, base = 0x85800000, size = 0x1000000
name = overlay_rot, base = 0x86800000, size = 0x400000
name = video, base = 0x86c00000, size = 0x3e00000
name = viqe, base = 0x8aa00000, size = 0x1500000
name = ext_camera, base = 0x8bf00000, size = 0x0
name = fb_video, base = 0x8bf00000, size = 0x2000000
name = fb_scale, base = 0x8df00000, size = 0x0
name = fb_scale0, base = 0x8df00000, size = 0x0
name = fb_scale1, base = 0x8df00000, size = 0x0
name = fb_g2d0, base = 0x8df00000, size = 0x0
name = fb_g2d1, base = 0x8df00000, size = 0x0
name = video_dual, base = 0x8df00000, size = 0x0
name = jpeg_header, base = 0x8aa00000, size = 0x100000
name = jpeg_raw, base = 0x8b000000, size = 0xf00000
name = jpeg_stream, base = 0x8ab00000, size = 0x500000
name = nand_mem, base = 0x8df00000, size = 0x100000
name = jpg_enc_dxb, base = 0x8e000000, size = 0x300000
name = jpg_raw_dxb, base = 0x8e300000, size = 0x300000
name = video_ext, base = 0x8e600000, size = 0x0
name = total, base = 0x82000000, size = 0xc600000
booting linux @ 0x80008000, ramdisk @ 0x81000000 (1784625)



According to the log info, together with the official spec,  we can get the system memory layout like this:

Physical/Virtual address
description
size
comment
80000100 - 80007FFF / c0000100 - c0007FFFATAG32KB 
80008000 -                     / c0008000 -Kernel Imageabout 4-5 MB 
81000000 -                     / c1000000 -ramdisk (initramfs)about 600KB 
80000000 - 82000000 / c0000000 - c20000000Kernel / User32MB 
    
82000000 - 83b00000 / c2000000 - c3b00000UMP27MBcontiguous physical memory
for dedicated UMP
83b00000 - 83f00000  / c3b00000 - c3f00000FB WMIXER4MB 
83f00000 - 84000000  / c3f00000 - c4000000RAM console1MB 
84000000 - 86c00000 / c4000000 - c6c00000Overlay44MB 
86c00000 - 8aa00000 / c6c00000 - caa00000Video62MB 
8aa00000 - 8bf00000  / caa00000 - cbf00000VIQE / JPEC decoder21MB 
8bf00000 - 8df00000   / cbf00000 - cdf00000FB_Video32MBFrame buffer
8df00000 - 8e000000  / cdf00000 -ce000000NAND1MB 
8e000000 - 8e600000 / ce000000 - ce600000JPEG encoder/capture6MB 
    
8e600000 - c0000000 / ce600000 - FFFFFFFFKernel / User794MBMax mali heap size is 750MB;
Max UMP heap size is 64MB
    
      
    
NOTE: __virt_to_phys(x)    (x) - PAGE_OFFSET + PHYS_OFFSET

             __phys_to_virt(x)    (x) - PHYS_OFFSET + PAGE_OFFSET

             PAGE_OFFSET = 0xC0000000;

             PHYS_OFFSET = 0x80000000;


As we can see,  the virtual address space, from 0xc2000000 t0 0xce600000 (198MB), is reserved for specific 8935 hardware blocks, like VIQE, FB, and so forth.

The virtual address spaces, from 0xc0000000 t0 0xc2000000 and from 0xce600000 - 0xFFFFFFFF (total 826MB) is used by ATAG / Kimage / ramdisk /kernel.

NOTE: 198 + 826 = 1024MB (on-board DDR3)


The details of kernel memory space looks like below:

[    0.000000] PAGE_OFFSET = 0xc0000000                                                
[    0.000000] TASK_SIZE = 0xbf000000
[    0.000000] PHYS_OFFSET = 0x80000000
[    0.000000] VMALLOC_START = 0xe0800000
[    0.000000] VMALLOC_OFFSET = 0x800000
[    0.000000] VMALLOC_END = 0xf0000000
[    0.000000] MODULES_VADDR = 0xbf000000
[    0.000000] MODULES_END = 0xbfe00000

[    0.000000]     vector  :        0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  :       0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     DMA     :        0xff600000 - 0xffe00000   (   8 MB)
[    0.000000]     vmalloc :      0xe0800000 - 0xf0000000   ( 248 MB)
[    0.000000]     lowmem  :   0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     pkmap   :     0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules :   0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text :          0xc0008000 - 0xc0595f80   (5688 kB)          //Start of the kernel image
[    0.000000]       .init :           0xc0596000 - 0xc05c36c0   ( 182 kB)
[    0.000000]       .data :         0xc05c4000 - 0xc0786b60   (1803 kB)
[    0.000000]        .bss :         0xc0786b84 - 0xc08fa5a0   (1487 kB)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值