u-boot编译构成之 MLO(1)
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芯片手册上有定义的
- 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)相关推荐
- NanoPi NEO Air使用七:获取并编译U-boot和Linux的源码
NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...
- Spring Boot 项目瘦身指南,非常实用!
一.前言 Spring Boot部署起来虽然简单,如果服务器部署在公司内网,速度还行,但是如果部署在公网,部署起来实在头疼:编译出来的 Jar 包很大,如果工程引入了许多开源组件(Spring Clo ...
- Spring Boot 项目瘦身指南,瘦到不可思议!129M->1.3M
之前在 从使用传统Web框架到切换到Spring Boot后的总结 中提到关于 Spring Boot 编译打包,Spring Boot 应用程序不用额外部署到外部容器中,可以直接通过 Maven 命 ...
- 从使用传统Web框架到切换到Spring Boot后的总结
1.前言 其实我接触 Spring Boot 的时间并不长,所以还算一个初学者,这篇文章也算是我对 Spring Boot 学习以及使用过程中的复盘,如果文章出现描述错误或表达不清晰的地方,欢迎大家在 ...
- 【linux内核-源码编译之centos7】
linux内核-源码编译之centos7 一. 为什么要编译内核 二.疑难杂症 三.演示环境 四.下载源码 4.1.两者源码区别 4.2.将获取到的源码放在/usr/src/kernels/ 下 五. ...
- 全志H3编译Linux-4.14 BSP
学习笔记-全志H3编译Linux-4.14 BSP 1 安装交叉编译器 访问此处下载地址的toolchain目录,下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.t ...
- Spring Boot 实践折腾记(20):Thymleaf + webjar + ECharts 构建本地图表
前言 作为geek后端程序员,画图的选择其实有很多,手画,excel,ppt,copy别人的图等.虽然用excel最方便,但是类似按中国省份来显示详细数据的图,excel是画不了的,而PPT画起来又很 ...
- Linux内核编译及系统裁剪
核心:/boot/vmlinuz-version 内核模块(ko):/lib/modules/version/ 内核设计: 单内核 模块化设计 微内核 ...
- DM3730 X-load 分析
DM3730的启动过程:ROM code -->MLO-->u-boot.bin-->解析boot.scr-->uImage->挂载文件系统 其中MLO就是x-load编 ...
- DAVINCI DM3730开发攻略——xload-1.51移植
DM3730开发攻略已经停顿了一段时间,本人和公司其他软件工程师都在忙攻克客户定制的DM3730+OV的一款720P高清低照度产品和TVP5158 2路D1同时采集软件,现在基本收尾工作,挤点时间, ...
最新文章
- Eclipse中安装HibernateTools插件
- OpenCV 4.0 Dis光流算法 运动检测
- 数字图像处理之归一化方法
- windowsxp的自动更新关闭后怎么能不提示?
- 云原生:重新定义信息产业生态体系
- SAP CRM WebClient UI Technical profile里timeout 设置
- SAP的SqlAnyWhere中数据库日志文件删除后如何新建
- 工业领域产品经理的尴尬处境
- 对未来人机融合智能领域的思考
- c语言各个英文的作用,C语言最重要的知识点复习资料(国外英文资料).doc
- oracle 39083,oracle数据库导入导出时ORA-39083;ORA-00439错误解决思路
- 深入理解React、Redux
- 用PS自己制作一寸证件照照片
- Instant及LocalDateTime等使用方法
- Android 3D画廊采用Gallery实现无限循环、自动轮播
- Windows和Mac系统盘瘦身的一些经验
- css日落_如何拍摄好日落照片
- 使用ffmpeg做直播推流例子
- LeetCode 第 194 场周赛
- oracle10安装注意事项,科学网—Asianux server 3.0下安装oracle 10.2注意事项 - 谢安涛的博文...
热门文章
- 河南这么大的省,也所谓的准一线,为什么IT行业就是发展不起来呢?
- 关于【野火】OV7725例程移植【OV7670】总结
- 人民的名义关系可视化展示
- vrp java_HCIA-VRP基础及操作
- 大数据工程师面临哪些行业机遇与挑战?
- 用java语言编写选课系统_求用JAVA为我写一个简单的选课系统程序,实现增,删,改,查功能...
- 修改RAC中的私网地址导致CRS启动失败
- linux内核的挂载,通过Linux内核使用RDT
- Nuxt开发中The client-side rendered virtual DOM tree is not matching server-rendered content.的问题
- 指静脉识别标准实施1个月 有何影响?