uboot启动Linux内核过程分为4大步骤:

问题1:Flash的分区相关问题

上述步骤1/2/4 中都提到了从启动介质(iNand/SD)中读取uboot/kernel到SRAM/DDR中,那么具体从启动介质的什么位置分别读取呢?
上述步骤1中,iROM的code是SoC出厂内置的,因此这个位置要参考SoC的数据手册。摘抄数据手册如下:

  1. SD/MMC/eSSD作为存储介质时,BL1在存储介质的Block1开始,长度为N. 每个block为512个bytes, 我们设置的BL1为16K,所以占用31个block,即block1 – block32用来存储BL1. (以下实例均以SD为例)

  2. NAND作为存储介质时,BL1在存储介质的Page0开始,长度为N.

    上述步骤2中,从存储介质(SD/Nand)中读取整个uboot到DDR中, BL2在存储介质中的地址是BL1(uboot前16k)中的code 定义的,所以和数据手册无关,我们根据需要自己实现即可。
    比如,以SD为例,我们将整个uboot.bin烧录到SD卡的第49扇区开始的地方(block 48), 假如uboot大小为200K,则占用400个block, 所以uboot在SD的位置: block48 – block447.

上述步骤4中,从存储介质(SD/Nand)中读取整个kernel到DDR中,这个地址同步骤二,自己定义即可。
比如,以SD为例,我们将整个kernel烧录到SD卡的第601扇区开始的地方(block 600), 假如kernel大小为10240K,则占用20480个block, 所以uboot在SD的位置: block600 – block10839.

关于问题1,总结以下,存储介质(SD/Nand Flash)中的分区一般包含BL1,uboot, kernel, 其中BL1的位置和SoC的启动设计有关,需要参考数据手册,而uboot和kernel的所在的位置自己实现即可,我们一定要按照事先设计好的分区来烧写存储介质。
1) uboot必须在Flash开头(取决于SoC启动设计),其他分区相对位置是可变的。
2) 各分区的大小由系统移植工程师自己来定,一般定为合适大小(不能太小,太小了容易溢出;不能太大,太大了浪费空间)
3) 分区在系统移植前确定好,在uboot中和kernel中使用同一个分区表。将来在系统部署时和系统代码中的分区方法也必须一样。

遗留问题1:存储介质分区应该还包含roofs,即根文件系统,这个位置是怎么规划的?是怎么通知到内核的呢(传参(tag- ATAG_CMDLINE),用root=指定位置)?
遗留问题2:存储介质分区应该还包含环境变量。
2.1.uboot学习前传/ 2.1.12.uboot中对Flash和DDR的管理 有描述。

uboot引导kernel - 1 - Flash的分区相关推荐

  1. 嵌入式 uboot引导kernel,kernel引导fs【转】

    转自:http://www.cnblogs.com/lidabo/p/5383934.html#3639633 1.uboot引导kernel:u-boot中有个bootm命令,它可以引导内存中的应用 ...

  2. 嵌入式 uboot引导kernel,kernel引导fs

    1.uboot引导kernel:u-boot中有个bootm命令,它可以引导内存中的应用程序映像(Kernel),bootm命令对应 common/cmd_bootm.c中的do_bootm()函数, ...

  3. uboot引导kernel - 3 -uboot给内核传参详解

    uboot中执行theKernel函数后,kernel正式启动.如下函数,我们发现有3个参数. 1. 参数 0: 2. 参数machid; 如下code 中获取machid, gd是个全局变量. 2. ...

  4. uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题

    uboot启动Linux内核过程分为4大步骤: 问题2: uboot阶段DDR的分区的问题 上述步骤2和步骤4中,有将uboot/kernel拷贝纸DDR的步骤,具体要拷贝到DDR的什么位置呢? 分清 ...

  5. 用Qemu模拟vexpress-a9 (四) --- u-boot引导kernel,用nfs挂载根文件系统

    环境介绍 Win7 64 + Vmware 11 + ubuntu14.04 32 u-boot 版本:u-boot-2015-04 Linux kernel版本:linux-3.16.y busyb ...

  6. linux内核跳转到文件系统,Uboot到Kernel到文件系统(Cortex_A9)移植详细文档

    处理器:Exynos4412  Cortex_A9 四核 一: 4412 uboot 目录: uboot基本配置编译 make xxx_config 编译结果如上图. Uboot启动第一阶段分析: 1 ...

  7. 海思3518E开发笔记1.5——flash分区及uboot、kernel、rootfs烧写并部署

    目录 规划分区 烧写流程 tftp更新并重新烧写uboot的命令序列 tftp更新并重新烧写kernel的命令序列 tftp更新并重新烧写rootfs的命令序列: 裸机烧录uboot 什么是裸机 烧录 ...

  8. 鸿蒙系统研究之六:U-Boot引导

    这是我的鸿蒙系统研究系列文章的第六篇,有兴趣还可以看看前面的文章: 鸿蒙系统研究第一步:从源码构建系统镜像 鸿蒙系统研究之二:内核编译 鸿蒙系统研究之三:迈出平台移植第一步 鸿蒙系统研究之四:根文件系 ...

  9. 全志 Linux 系统启动优化 启动优化速度方式 优化启动流程 优化uboot 优化kernel等

    文章目录 1 概述 2 启动速度优化简介 2.1 启动流程 2.2 测量方法 2.2.1 printk time 2.2.2 initcall_debug 2.2.3 bootgraph. 2.2.4 ...

最新文章

  1. lvdt 运放全波整流接线方式_常见的几种二极管整流电路解析
  2. c语言文件加密异或操作,用异或算法实现文件的简单加密
  3. SVNKit支持SSH连接
  4. 什么是路由器交换机?路由器交换机介绍!
  5. bat 脚本清空窗口内容_tomcat9.0启动脚本startup.bat的分析
  6. Python reduce / map / filter 函数区别 - Python零基础入门教程
  7. Gradle+IDEA使用说明
  8. ubuntu下载chrome等软件
  9. xml.html一键解密工具,AutoJs一键解密
  10. 信号降噪方法——基于自适应神经模糊推理系统(ANFIS)的降噪处理
  11. 互联网快讯:极米Z6X Pro、极米H3S音画表现出众;快狗打车赴港IPO;vivo回应造车传闻
  12. 用python画几个东西怎么画_一步一步教你如何用Python画一个滑稽
  13. 交换游戏 (记忆化搜索 状压)
  14. 快速画好一份程序流程图
  15. mysql-connector-java.jar包的下载教程
  16. 电子书转PDF格式怎么弄?这些方法你应该要知道
  17. Hibernate JPA
  18. php文章周月总排行榜怎么实现,帝国cms7.0实现日 周 月点击排行的方法
  19. 微信小程序禁用页面下拉,且局部上下滚动不卡顿
  20. C++知识点总结及习题

热门文章

  1. C++ VS2013环境编译使用sqlite数据库全过程
  2. python 错误之SyntaxError: Missing parentheses in call to 'print'
  3. Html_div圆角
  4. Solr初始化源码分析-Solr初始化与启动
  5. 中国挪动批改KPI查核制度将器重客户满意度
  6. 在IE7中无效的解决办法
  7. 《OpenCV3编程入门》学习笔记3 HighGUI图形用户界面初步
  8. usaco Sweet Butter(迪杰斯特拉(优先队列优化),bellman_ford算法模板)
  9. Ceres入门——Ceres的基本使用方法
  10. 我所理解的卡尔曼滤波——公式推导与应用