zoukankan      html  css  js  c++  java
  • uboot对Flash和DDR的分区管理

    1、uboot阶段对Flash的分区

    (1)、所谓分区,就是对Flash进行分块管理。

    (2)、PC机等产品中,因为大家都是在操作系统下使用硬盘的,整个硬盘由操作系统统一管理,操作系统会使用文件系统帮助我们管理磁盘空间。(管理保证了文件之间不会相互堆叠),于是乎使用者不用自己太多在意分区问题。

    (3)、在uboot中是没有操作系统的,因此我们对flash(相当于硬盘)的管理必须事先使用分区界定(实际上在uboot中和kernel中都有一个分区表,分区表就是我们在做系统移植时对Flash的整体管理分配方法)。有了这个界定之后,我们在部署系统时按照分区界定方法来部署,uboot和kernel的软件中也是按照这个分区界定来工作,这样就不会出错。

    (4)、分区方法不是一定的,不是固定的,是可以变动的。但是在一个移植中必须事先设计好定死,一般在设计系统移植时就会定好,定的标准就是:

    uboot:uboot必须从Flash起始地址开始存放(也许是扇区0,也许是扇区1,也许是其他,这个主要取决于SoC的启动设计),uboot分区的大小必须保证uboot肯定能放下,一般设计为512KB或者是1MB(因为一般的uboot肯定不足512KB,给再大其实也可以工作,但是浪费);

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

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

    rootfs:rootfs可以紧贴kernel存放,大小看个人需求了。

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

    总结:一般规律如下:

    (1)各分区彼此相连,前面一个分区的结尾就是后一个分区的开头。

    (2)整个flash充分利用,从开头到结尾。

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

    (4)各分区的大小由系统移植工程师自己来定,一般定为合适大小(不能太小,太小了容易溢出;不能太大,太大了浪费空间)

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

    uboot阶段对DDR的分区

    (1)DDR的分区和Flash的分区不同,主要是因为Flash是掉电存在的,而DDR是掉电消失,因此可以说DDR是每次系统运行时才开始部署使用的。

    (2)内存的分区主要是在Linux内核启动起来之前,Linux内核启动后内存的管理模块会接管整个内存空间,那时候就不用我们来管了。

    (3)注意内存分区关键就在于内存中哪一块用来干什么必须分配好,以避免各个不同功能使用了同一块内存造成的相互踩踏。

  • 相关阅读:
    XMIND
    android studio 更新 Gradle错误解决方法
    解决下载Android Build-tools 19.1.0失败
    Android Studio怎么删除项目
    android studio 更改背景和设置字体大小
    IOS开发常用技术网站
    Gitbook安装
    深入解析AsyncTask(转)
    Android中Bitmap和Drawable(转)
    提高Android在eclipse下的编译速度
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11095599.html
Copyright © 2011-2022 走看看