您的位置:首页 > 其它

uboot中对Flash和DDR的管理

2016-04-15 14:38 176 查看
《朱老师物联网大讲堂》学习笔记

学习地址:www.zhulaoshi.org

uboot中对flash和ddr的管理

uboot阶段对flash的分区,

uboot,var,kernel,rootfs,自由。

uboot中是没有操作系统中的,但是都有一个分区表决定分配方法,

这个分配不是随意的,比如soc要从第1个扇区开始读,我们的分配就得配合它,

在移植前,这个分配得定好,这个标准是:

uboot:uboot必须从Flash起始地址开始存放(也许是扇区0,也许是扇区1,也许是其他,取决于SoC的启动设计),

uboot分区的大小一般设计为512KB或者1MB(因为一般uboot肯定不足512KB);

环境变量:环境变量分区一般紧贴着uboot来存放,大小为32KB或者更多一点。

kernel:kernel可以紧贴环境变量存放,大小一般为3MB或5MB或其他。

rootfs:······

剩下的就是自由分区,一般kernel启动后将自由分区挂载到rootfs下使用

uboot必须在Flash开头,其他分区相对位置是可变的。

分区在系统移植前确定好,在uboot中和kernel中使用同一个分区表。将来在系统部署时和系统代码中的分区方法也必须一样。

uboot阶段DDR的分区

Flash是掉电存在的,DDR是掉电消失,因此DDR每次系统运行时才开始部署使用的,

内存的分区一般是在linux内核启动起来之前,linux内核启动后内核的内存管理模块会接管整个内存空间,我们就不用管了,

内存中分区必须分配好,以避免各个不同功能使用了同一块内存造成的互相踩踏,

比如tftp 0x23E00000 zImage去下载zImage到内存的0x23E00000处就会出错,因为这个内存处实际是uboot的镜像所在,

这样下载会导致下载的zImage把内存中的uboot给冲掉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息