m805_893x memory layout

来源:互联网 发布:js如何保留两位小数 编辑:程序博客网 时间:2024/05/09 06:12

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 UMP83b00000 - 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 buffer8df00000 - 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)
0 0
原创粉丝点击