Uboot

Uboot极度依赖于硬件。系统上电后执行,初始化硬件设备,准备好软件环境(如c环境),最后调用操作系统内核。
关闭看门狗,关闭外部中断,设置系统的时钟,初始化存储器的内存,将更多的代码的复制到内存,尤其是将内核的代码复制到内存。
同时其还具备串口,网口,网络功能,解压缩功能。最终的产品中并不需要这些功能(这些功能将会由内核提供),只是为了开发方便。


Bootloader的启动方式:
芯片上电后,ARM结构cpu默认从0x0地址开始执行(其他芯片可能不是),在开发板中,需要将Flash(ROM)的地址映射到这个地址。BootLoader正好放在这个地方,
这样一上电,bootloader就会被执行。然后将内核复制到内存(有些是直接在norflash上运行),然后在固定的地方(环境变量区)将参数传递给内核,运行内核,内核启动以后,就会挂接(mount)根文件系统(root filesystem),再启动应用程序。


关于uboot与内核的交互参数(环境参数):    比如ip地址,串口的波特率,要传递给内核的启动命令。




Bootloader 两段:
第一段: 汇编语言,cpu体系架构的初始化
1,硬件设备的初始化: 刚开始可能是使用慢时钟,关闭看门狗中断,关闭所有外部中断,设置好cpu时钟,进入管理模式,初始化好RAM(sdram);
2,为第二阶段准备ram空间,尤其是定好堆栈空间(C运行环境)
3,复制第二阶段的代码到ram空间
4,跳到第二阶段代码的c入口。 
第二阶段: 
5, 继续初始化好一切其他的需要的硬件设备(C语言下使用函数指针初始化)
6,检测处理好内存映射(确定板上有几块flash,容量多大,全局地址设定在那里,多大ram ,地址在那里,全局地址可以根据板子的情况直接设置)
7,将内核和根文件系统映像从flash读到ram (内核映像如果经过压缩,需要进一步解压缩,Uboot添加了gzip解压函数,有些内核具备自解压功能),文件系统是否需要复制到ram需要看文件系统的类型(ramdisk /jffs2)
8,为内核设置好启动参数
9,调用内核 ( 程序直接跳到内核入口)






Uboot 常用命令: 


flinfo 
loadb 
cp 
md 
mw
erase // flash 擦除
boot // 启动内核命令
tftp命令
### U-Boot简介 U-Boot (Universal Boot Loader) 是一种广泛应用于嵌入式系统的引导加载程序。其主要功能是在操作系统启动之前初始化硬件并提供必要的环境支持,以便能够顺利加载和执行操作系统内核。 在特定版本中,`libs-y` 原先是u-boot的所有子目录的集合,但是通过使用 `patsubst` 函数处理后,它转变为了所有子目录下 `built-in.o` 文件的集合[^1]。这表明了构建过程中如何收集不同模块的目标文件来准备最终链接阶段的工作。 对于指定版本如2022.10版[U-Boot](https://ftp.denx.de/pub/u-boot/),该版本提供了最新的特性和改进以适应现代处理器架构的需求[^2]。 ### 使用方法及教程 #### 下载源码 可以从官方FTP服务器下载所需版本的U-Boot压缩包: ```bash wget https://ftp.denx.de/pub/u-boot/u-boot-2022.10.tar.bz2 tar jxf u-boot-2022.10.tar.bz2 cd u-boot-2022.10/ ``` #### 编译配置 进入解压后的目录后,可以为具体平台设置相应的配置选项。通常情况下会有一个预定义好的`.config`文件用于简化此过程: ```bash make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- <board>_defconfig ``` 这里假设目标体系结构是ARM,并指定了交叉编译工具链前缀(`CROSS_COMPILE`)。 #### 构建项目 完成上述准备工作之后就可以开始实际编译工作了: ```bash make all ``` 这条命令将会依据Makefile中的规则依次调用gcc等工具来进行汇编、编译以及链接操作,从而得到可执行映像文件u-boot.bin。 #### 安装部署 最后一步则是将生成出来的二进制镜像烧录到开发板对应的存储介质上(比如NAND Flash),这样当设备重启时就会自动运行新编译成功的固件。 ### 示例:查看帮助信息 如果想要了解更详细的指令列表及其参数说明,则可以在成功安装好U-Boot以后,在串口终端输入help命令获得更多信息: ```bash => help ? ... ``` 以上展示了基本的操作流程;然而具体的细节可能会因所选平台的不同而有所变化,请参照官方文档获取最权威指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值