UBOOT启动过程

SOC内部ROM,依据外部硬件设置的启动跳线,从相应的介质启动系统。启动跳线设置请看芯片手册。

1.系统上电;

2.SOC 内部ROM启动;

3.依据硬件设置的启动方式,从相应的介质下载MLO到soc内部的ram中运行;

4. MLO运行以后再去加载u-boot.img 到RAM中以后;

5.此时MLO退出,U-Boot.img运行;

本文档硬件:Ti J6entry (Dra71x )

Uboot 源码:Ti 官网下载

制作MLO, 请查看.MLO.cmd:

cmd_MLO := ./tools/mkimage -T omapimage -a 0x40300000 -d  spl/u-boot-spl.bin  MLO  > /dev/null

参数 –a  表示MLO运行的入口地址;

①上面命令的含义是用mkimage工具给u-boot-spl.bin加了一个0x40字节的header,指明了MLO被soc内部程序加载到内部ram 0x40300000地址上执行。

②该入口地址是soc芯片手册上有定义的

  1. MLO 构成

① u-boot-spl.multidtb.fit  dra71-dcard.dtb镜像文件

利用mkimage工具将dra71-dcard.dtb文件制作为镜像

② u-boot-spl

将编译的.o 文件链接为u-boot-spl

注意链接过程中使用了: –T u-boot-spl.lds     -Ttext 0x40300000

-Ttext指明bootloader程序在以0x40300000为起始的地址空间内。

③ u-boot-spl.lds 链接脚本,arch/arm/mach-omap2/u-boot-spl.lds

MEMORY { .sram : ORIGIN = 0x40300000, LENGTH = ((0x4037C000 - 0x00000400) - 0x40300000) } 片内内存

MEMORY { .sdram : ORIGIN = 0x80a00000, LENGTH = 0x80000 } 片外内存

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")

OUTPUT_ARCH(arm)

ENTRY(_start)

SECTIONS

{

.text :  代码段

{

__start = .;

*(.vectors)

arch/arm/cpu/armv7/start.o (.text*)

*(.text*)

} >.sram

. = ALIGN(4);

.rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram

. = ALIGN(4);

.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram      代码段,数据段位于40300000,

. = ALIGN(4);

.u_boot_list : {

KEEP(*(SORT(.u_boot_list*)));

} >.sram

. = ALIGN(4);

__image_copy_end = .;

.end :

{

*(.__end)

}

_image_binary_end = .;

.bss :

{

. = ALIGN(4);

__bss_start = .;

*(.bss*)                BSS 段数据存放在0x80a00000这个地址为开始,长度

. = ALIGN(4);            为0x800000的空间内

__bss_end = .;

} >.sdram

}

查看u-boot-spl.map文件可以观察编译后的地址分配。

④ u-boot-spl-nodtb.bin(spl/u-boot-sp-> u-boot-spl-nodtb.bin )

arm-linux-gnueabihf-objcopy  -j .text -j .secure_text -j .secure_data -j .rodata -j .hash -j .data -j .got -j .got.plt -j .u_boot_list -j .rel.dyn -j .binman_sym_table -j .dtb.init.rodata  -O binary  spl/u-boot-spl spl/u-boot-spl-nodtb.bin

⑤ u-boot-spl-dtb.bin

cat spl/u-boot-spl-nodtb.bin  spl/u-boot-spl.multidtb.fit  >  spl/u-boot-spl-dtb.bin

⑥  u-boot-spl.bin

cp spl/u-boot-spl-dtb.bin spl/u-boot-spl.bin

至此,MLO 的编译构成结束。

u-boot编译构成之 MLO(1)相关推荐

  1. NanoPi NEO Air使用七:获取并编译U-boot和Linux的源码

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  2. Spring Boot 项目瘦身指南,非常实用!

    一.前言 Spring Boot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网,部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件(Spring Clo ...

  3. Spring Boot 项目瘦身指南,瘦到不可思议!129M->1.3M

    之前在 从使用传统Web框架到切换到Spring Boot后的总结 中提到关于 Spring Boot 编译打包,Spring Boot 应用程序不用额外部署到外部容器中,可以直接通过 Maven 命 ...

  4. 从使用传统Web框架到切换到Spring Boot后的总结

    1.前言 其实我接触 Spring Boot 的时间并不长,所以还算一个初学者,这篇文章也算是我对 Spring Boot 学习以及使用过程中的复盘,如果文章出现描述错误或表达不清晰的地方,欢迎大家在 ...

  5. 【linux内核-源码编译之centos7】

    linux内核-源码编译之centos7 一. 为什么要编译内核 二.疑难杂症 三.演示环境 四.下载源码 4.1.两者源码区别 4.2.将获取到的源码放在/usr/src/kernels/ 下 五. ...

  6. 全志H3编译Linux-4.14 BSP

    学习笔记-全志H3编译Linux-4.14 BSP 1 安装交叉编译器 访问此处下载地址的toolchain目录,下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.t ...

  7. Spring Boot 实践折腾记(20):Thymleaf + webjar + ECharts 构建本地图表

    前言 作为geek后端程序员,画图的选择其实有很多,手画,excel,ppt,copy别人的图等.虽然用excel最方便,但是类似按中国省份来显示详细数据的图,excel是画不了的,而PPT画起来又很 ...

  8. Linux内核编译及系统裁剪

    核心:/boot/vmlinuz-version 内核模块(ko):/lib/modules/version/ 内核设计:       单内核             模块化设计       微内核 ...

  9. DM3730 X-load 分析

    DM3730的启动过程:ROM code -->MLO-->u-boot.bin-->解析boot.scr-->uImage->挂载文件系统 其中MLO就是x-load编 ...

  10. DAVINCI DM3730开发攻略——xload-1.51移植

    DM3730开发攻略已经停顿了一段时间,本人和公司其他软件工程师都在忙攻克客户定制的DM3730+OV的一款720P高清低照度产品和TVP5158  2路D1同时采集软件,现在基本收尾工作,挤点时间, ...

最新文章

  1. Eclipse中安装HibernateTools插件
  2. OpenCV 4.0 Dis光流算法 运动检测
  3. 数字图像处理之归一化方法
  4. windowsxp的自动更新关闭后怎么能不提示?
  5. 云原生:重新定义信息产业生态体系
  6. SAP CRM WebClient UI Technical profile里timeout 设置
  7. SAP的SqlAnyWhere中数据库日志文件删除后如何新建
  8. 工业领域产品经理的尴尬处境
  9. 对未来人机融合智能领域的思考
  10. c语言各个英文的作用,C语言最重要的知识点复习资料(国外英文资料).doc
  11. oracle 39083,oracle数据库导入导出时ORA-39083;ORA-00439错误解决思路
  12. 深入理解React、Redux
  13. 用PS自己制作一寸证件照照片
  14. Instant及LocalDateTime等使用方法
  15. Android 3D画廊采用Gallery实现无限循环、自动轮播
  16. Windows和Mac系统盘瘦身的一些经验
  17. css日落_如何拍摄好日落照片
  18. 使用ffmpeg做直播推流例子
  19. LeetCode 第 194 场周赛
  20. oracle10安装注意事项,科学网—Asianux server 3.0下安装oracle 10.2注意事项 - 谢安涛的博文...

热门文章

  1. 河南这么大的省,也所谓的准一线,为什么IT行业就是发展不起来呢?
  2. 关于【野火】OV7725例程移植【OV7670】总结
  3. 人民的名义关系可视化展示
  4. vrp java_HCIA-VRP基础及操作
  5. 大数据工程师面临哪些行业机遇与挑战?
  6. 用java语言编写选课系统_求用JAVA为我写一个简单的选课系统程序,实现增,删,改,查功能...
  7. 修改RAC中的私网地址导致CRS启动失败
  8. linux内核的挂载,通过Linux内核使用RDT
  9. Nuxt开发中The client-side rendered virtual DOM tree is not matching server-rendered content.的问题
  10. 指静脉识别标准实施1个月 有何影响?