Linux&Tina&Melis内存布局分析以及linux reserved memory机制

本文详细分析了Linux在启动过程中的内存布局,特别是针对Linux reserved内存机制,包括memblock内存块记录、reserved内存的管理,以及如何通过/dev/firmware/memmap获取内存分布。此外,还探讨了在不同架构下,如X86和ARM,内存管理的差异,以及在Melis系统中的内存分配接口。最后,讨论了如何通过页表管理和页表标志来实现缓存一致性。
摘要由CSDN通过智能技术生成

这是同一块开发板运行Melis4.0系统的内存布局图:

板级的物理地址和软件系统是没有关系的,软件系统只会影响虚拟地址,现在分析Tina的地址映射过程,构造一张类似的表.

从启动开始:

首先查看编译的固件vmlinux入口地址,是链接时由链接参数指定:

编译参数:

+ arm-openwrt-linux-muslgnueabi-ld -EL -p --no-undefined -X --pic-veneer --build-id -o vmlinux -T ./arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o init/built-in.o --start-group usr/built-in.o arch/arm/vfp/built-in.o arch/arm/kernel/built-in.o arch/arm/mm/built-in.o arch/arm/common/built-in.o arch/arm/probes/built-in.o arch/arm/net/built-in.o arch/arm/crypto/built-in.o arch/arm/firmware/built-in.o arch/arm/mach-sunxi/built-in.o kernel/built-in.o certs/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o security/built-in.o crypto/built-in.o block/built-in.o arch/arm/lib/lib.a lib/lib.a arch/arm/lib/built-in.o lib/built-in.o drivers/built-in.o sound/built-in.o firmware/built-in.o net/built-in.o virt/built-in.o --end-group .tmp_kallsyms2.o

以上编译通过如下命令触发: 

make -C /home1/caozilong/WorkSpace/gov/tina-v83x/out/v833-perf1/compile_dir/target/linux-v833-perf1/linux-4.9.191 HOSTCFLAGS="-O2 -I/home1/caozilong/WorkSpace/gov/tina-v83x/out/host/include -I/home1/caozilong/WorkSpace/gov/tina-v83x/out/host/usr/include  -Wall -Wmissing-prototypes -Wstrict-prototypes" CROSS_COMPILE="arm-openwrt-linux-muslgnueabi-" ARCH="arm" KBUILD_HAVE_NLS=no KBUILD_BUILD_USER="" KBUILD_BUILD_HOST="" CONFIG_SHELL="bash" V=''  CC="arm-openwrt-linux-muslgnueabi-gcc" zImage V=1 -B -j32

当我们在入口处添加死循环指令后,发现它确实会断在这里:

CONFIG_ARM_VIRT_EXT是默认开启的,无法关闭: 

配合系统数据:

这张表是怎么来的呢? 

首先按从更简单的看起

 

释放的位置:

DISP模块reseaved的地址范围为[0x4e3f000, 0x12c0000] ,这个地址区间比较特殊,首先是因为我们并没有在reserved列表中看到它。原因正如上面所看到的,disp_reserve_mem接口被调用了两次,第二次是释放掉了,所以才导致看不到,这片内存是用来传递bootlogo用的。

uboot的也会显示logo,为了防止内核启动过程中,logo所在内存被内核占用(导致花屏),所以保留了这块内存,但是等到显示驱动加载完毕后,这个快保留内存会被释放。

另外一个:

所以,这里添加了[0x40008200,  0x7372bc]到系统里面。

下一个:<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值