uboot介绍及源代码详细分析
前言
我们在前面的arm系列课程,已经讲解了arm的架构、汇编指令、异常、常用外设的控制器驱动,那么我们已经具备开发arm系列产品的基本技能。
本篇给大家介绍一款比较常用的bootloader:uboot,通过uboot的介绍以及源代码的详细分析,让大家把之前所有ARM相关的知识点融会贯通起来。
一、uboot
1. 概念
U-Boot 是一个主要用于嵌入式系统的引导加载程序,可以支持多种不同的计算机系统结构,包括PPC、ARM、AVR32、MIPS、x86、68k、Nios与MicroBlaze。这也是一套在GNU通用公共许可证之下发布的自由软件。
U-Boot不仅仅支持嵌入式Linux系统的引导,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系统。其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS, android。
2. uboot基本功能
U-Boot可支持的主要功能列表:
系统引导支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统;支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;基本辅助功能强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤以Linux支持最为强劲;支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;CRC32校验可校验FLASH中内核、RAMDISK镜像文件是否完好;设备驱动串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;上电自检功能SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号。3. 常用命令
uboot命令比较多,下面只列举网络启动要用到的命令:
命令含义printenv打印Uboot环境变量setenv设置Uboot环境变量ipaddr本地的IP地址serveripTFTP服务器端的IP地址ethaddr以太网的MAC地址netmask以太网的网络掩码gateway以太网的网关bootcmd自动启动时执行命令bootargs传递给Linux内核的启动参数bootm引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。bootdelay执行自动启动(bootcmd中的命令)的等候秒数baudrate串口控制台的波特率4. 配置参数举例
以下以网络下载内核、网络挂载nfs为例。
1)ubuntu环境
ubuntu ip:192.168.6.186
nfs配置:
配置文件如下:
/etc/exports
配置信息如下:
nfs2)开发板设置
开发板ip:192.168.6.187
配置命令:
setenv ipaddr 192.168.6.187 ;板子的ip
setenv serverip 192.168.6.186 ;虚拟机的ip
setenv gatewayip 192.168.1.1 ;网关
saveenv ;保存配置
加载内核和设备树setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000
bootcmd:uboot2启动之后,首先先执行找到这个参数,执行后面的命令。
从tftp服务器下载内核镜像uImage到地址41000000,设备树文件exynos4412-fs4412.dtb到42000000,并通过命令bootm加载启动内核。
挂载nfssetenv bootargs root=/dev/nfs nfsroot=192.168.6.186:/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.6.187
挂载nfs文件系统
root=/dev/nfsnfsroot=192.168.6.186:/rootfs nfs服务器地址192.168.6.186,目录为/rootfs,rw 文件系统操作权限为可续写console=ttySAC2,115200 串口名称和波特率init=/linuxrc 内核启动后运行的进程为linuxrcip=192.168.6.187 开发板地址
二、exynos-4412 Soc 启动顺序
要想了解exynos-4412的启动顺序,我们首先需要了解该soc的内存布局。
1. exynos-4412内存布局
通常一款soc的内存在厂家设计的时候就已经规定死了,对于使用者来说,我们无法改变。
我们只关心和启动相关的一个地址,
iROM 在soc内部,出厂时厂家固化了特定的程序,iROM中程序对应用户来说不可改变
iRAM 在soc内部,速度较快,但空间不大
DMC RAM控制器,位于SOC内部,用于驱动RAM,大容量的RAM都需要连接到该控制器2. Booting Sequence
不同的厂家的启动顺序是不太一样的,本篇主要以三星的exynos-4412 soc为基础,讲解该基于该板子的uboot启动顺序。
根据上图,系统启动的大概顺序:
iROM在SOC内部,是一个64KB的ROM,他树池化一些系统启动必须的功能。比如:时钟、栈。iROM负责从特殊的启动外设加载BL1的image到soc内部的256KB的SRAM中。启动的外设由操作按钮来决定的。根据不同按键的值,iROM将会对bl1 的image做不同的校验。BL1初始化系统时钟和DRAM控制器,然后从启动外设加载OS image到DRAM中。根据启动按钮的值的不同,BL1会对OS做不同的校验。启动完成之后,BL1跳转到操作系统(kernel)。
iROM会根据OM 引脚的不同选择不同的启动设备,对应的OM寄存器需要提供对应的启动信息。

图片新闻
最新活动更多
-
6月13日立即参评>> 【评选】维科杯·OFweek2025中国工业自动化及数字化行业年度评选
-
即日-6.16立即报名>> 【在线会议】olution Talks |Computex 2025关键趋势深读
-
7月22-29日立即报名>> 【线下论坛】第三届安富利汽车生态圈峰会
-
7.30-8.1火热报名中>> 全数会2025(第六届)机器人及智能工厂展
-
7月30-31日报名参会>>> 全数会2025中国激光产业高质量发展峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
推荐专题
- 1 智造赋能,生态共融:大联大携手产业伙伴,共绘新质工业宏伟蓝图
- 2 谁将成为行业榜样?维科杯·OFweek2025中国工业自动化及数字化行业年度评选等您来参与!
- 3 【重磅来袭】6月17日上海见!全球智造巨头聚首,60余场前沿论坛,制造业数字化盛会邀您共启数智破局之旅!
- 4 安森美正式参评“维科杯·OFweek 2025中国工业自动化与数字化行业优秀产品奖”
- 5 当数智工业邂逅大湾区,看PHIIDF2025如何破界,链动全球!
- 6 数智破局·生态共生:重构全球制造新引擎 2025 WOD制造业数字化博览会即将在沪盛大启幕
- 7 开目新一代MOM:AI赋能高端制造的破局之道
- 8 抢先解锁!全数会2025机器人及智能工厂展览会核心亮点速递
- 9 iEi威强电邀您共襄AIAE Expo 2025北京国际工业自动化盛会,探索智能工业新边界!
- 10 欧姆龙正式参评“维科杯·OFweek 2025中国工业自动化与数字化行业优秀产品奖”
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论