当前位置: 首页 > article >正文

Linux系统移植①:uboot概念

Linux系统移植①:uboot概念

uboot概念

1、uboot是一个比较复杂的裸机程序。
2、uboot就是一个bootloader,作用就是用原于启动Linux或其他系统。uboot最主要的工作就是初始化DDR。因为Linux是运行再DDR里面的。一般Linux镜像zImage(uImage)+设备树(.dtb)存放在SD、EMMC、NAND、SPI Flash等等外置存储区域。
这就牵扯到一个问题,需要将Linux镜像从外置flash拷贝到DDR中,再去启动。
3、bootloader是引导加载程序,其中最常用的一种就是uboot。
4、uboot的主要目的就是为系统的启动做准备。
5、uboot不仅能启动Linux,也可以启动其他系统,比如vxworks等其他系统。
6、 Linux不仅仅能通过uboot启动。
7、uboot是个通用的bootloader,它支持多种架构。

uboot获取:

1、官网可获取uboot源码:https://ftp.denx.de/pub/u-boot/
(缺点就是支持少,比如某一款具体的芯片驱动等不够完善。)

2、SOC厂商会从uboot官网下载某个版本的uboot,然后在这个版本的uboot上加入相应的SOC以及驱动。这种成为SOC厂商定制的uboot-比如NXP官方的I.MAX6ULL EVK板子。

3、做开发板的厂商,开发板会参考SOC厂商的板子。开发板必然会和官方的板子不一样,因此开发板厂商又会去修改SOC厂商做好的uboot,以适应自己的板子。

uboot交叉编译

1、编译uboot之前需要先进行配置
如图配置交叉编译指定平台为arm 和交叉编译工具链arm-linux-gnueabihf-, 最后指定配置文件为mx6ull_14x14_ddr512_emmc_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig

在这里插入图片描述
配置完环境以后,再进行内核编译
其中V=1代表开启编译打印等级,可通过串口日志查看详细编译过程
ARCH为指定编译平台为arm平台
CROSS_COMPILE为指定交叉编译工具链
-j4为采用多线程编译方式,提高编译效率

make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

在这里插入图片描述
若编译报错如下,则可能是Ubuntu版本过高导致,最好用Ubuntu16.04版本
在这里插入图片描述
正常编译结果如下:
在这里插入图片描述
编译完成后会生成u-boot.bin文件
在这里插入图片描述
必须向u-boot.bin添加头部信息。
uboot编译最后会通过/tools/mkinage软件添加头部信息,生成u-boot.imx文件
在这里插入图片描述
在这里插入图片描述
使用厂商提供的OTG工具进行烧写
在这里插入图片描述
烧写完成以后,重新启动,串口结果如下:
在这里插入图片描述

查看uboot信息发现已经被更新:
在这里插入图片描述

http://www.lryc.cn/news/2385851.html

相关文章:

  • linux 学习之位图(bitmap)数据结构
  • DAY 35
  • 理论篇一:了解webpack是什么,能解决什么问题,如何使用
  • AWS EC2实例安全远程访问最佳实践
  • 集群、容器云与裸金属服务器的全面对比分析
  • 【强化学习】#7 基于表格型方法的规划和学习
  • EasyRTC嵌入式音视频通信SDK一对一音视频通信,打造远程办公/医疗/教育等场景解决方案
  • Linux/aarch64架构下安装Python的Orekit开发环境
  • 网络安全-等级保护(等保) 3-2-1 GB/T 28449-2019 第6章 方案编制活动
  • Oracle Enqueue Names
  • 【免费使用】剪Y专业版 8.1/CapCut 视频编辑处理,素材和滤镜
  • 【DCGMI专题1】---DCGMI 在 Ubuntu 22.04 上的深度安装指南与原理分析(含架构图解)
  • 道德经总结
  • 实现rpc通信机制(待定)
  • MATLAB 2023b 配电柜温度报警系统仿真
  • 代码随想录打卡|Day45 图论(孤岛的总面积 、沉没孤岛、水流问题、建造最大岛屿)
  • SpringCloud实战:使用Sentinel构建可靠的微服务熔断机制
  • 张 Prompt Tuning--中文数据准确率提升:理性与冲动识别新突破
  • MySQL 中 information_schema.processlist 使用原理
  • 微信小程序学习基础:从入门到精通
  • 如何使用redis做限流(golang实现小样)
  • lanqiaoOJ 4185:费马小定理求逆元
  • 深度剖析ZooKeeper
  • 深入解析 MySQL 中的 SHOW_ROUTINE 权限
  • 电脑网络如何改ip地址?ip地址改不了怎么回事
  • 打开小程序提示请求失败(小程序页面空白)
  • C语言速成12之指针:程序如何在内存迷宫里找宝藏?
  • 一张纸决定的高度
  • IP查询基础介绍
  • 常见的gittee开源项目推荐