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 addressdescription
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] 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)
- m805_893x memory layout
- memory layout
- classic memory layout & flexible memory layout
- Program Memory Layout
- u-boot memory layout
- memory layout (xia)
- C/C++ Memory Layout
- C/C++ Memory Layout
- C/C++ Memory Layout
- C/C++ Memory Layout
- C/C++ Memory Layout
- C/C++ Memory Layout
- u-boot memory layout
- c language memory layout
- C/C++ Memory Layout
- C Program Memory Layout
- arm64 memory layout
- 查看Android physical memory layout和virtual memory layout
- 小析 HTTP 的方法
- shell-根据扩展名切分文件名
- mongodb 集群出现 for log file: errno:30 Read-only file system (文件系统只读)
- I am here now.
- Linux内核构建系统之一
- m805_893x memory layout
- 子弹证据眼镜消除刑事违法收费
- s:if 用法
- Android Studio 调试过程中快捷查看断点处变量值(Ctrl+Shift+I无效)?
- Python JSON序列化
- android GPS 获取城市信息
- HTML 基础
- 子弹点规则
- hdu2090 解题报告 算菜价