uboot操作
探寻嵌入式系统移植的世界
一、驱动:
什么叫驱动?驱动就是计算机程序访问硬件的一个接口,这个接口是由操作系统提供。因为在操作系统涉及到安全管理机制,应用层程序不能够直接访问硬件,需要通过驱动函数接口来访问硬件。
二、启动过程
mermaid
graph TD
上电 –> uboot –> 加载linux内核 –> 挂载根文件系统 –> 执行应用程序
三、uboot
1.什么是uboot
uboot其实就是一个通用的引导程序——bootloader。
boot,完成硬件的初始化,启动硬件平台
loader,初始化硬件后,加载操作系统。
支持各种硬件,例如支持ARM、MIPS、X86、AVR32架构....
支持各种操作系统,例如支持WinCE、Linux内核、安卓操作系统....
2.uboot的作用
1)第一阶段初始化,CPU的初始化,用汇编语言来编写,初始化cache、MMU、时钟、看门狗、DDR3、eMMC…
2)第二阶段初始化,板级的初始化,一般来说用C语言来编写,初始化串口、网卡、usb、lcd
3)提供了很多工具,进入uboot命令行,使用uboot的命令
4)加载操作系统
3.uboot的输出信息
1 | u-Boot 2014.07 (Nov 19 2017 - 09:52:45) |
1)开发板信息
1 | bdinfo |
2)查看uboot的环境变量,只要是环境变量,都可以进行自定义
1 | printenv |
关键的内容:
1)bootargs,启动参数
1 | bootargs=lcd=at070tn92 tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4 |
lcd=at070tn92, //液晶屏的型号,7英寸的800*480的屏幕
tp=gslx680-linux, //触摸屏的型号
root=/dev/mmcblk0p2, //根文件系统在哪里,告诉内核去哪里挂载根文件系统。
mmcblk0p2
.mmcblk0,emmc //电子硬盘0
.p2,partion2,emmc //电子硬盘0的分区2
rw,该文件系统可以读,又可以写。
rootfstype=ext4,该文件系统类型为ext4。(ext2/ext3,fat32,ntfs)。
2)启动命令
1 | bootcmd=ext4load mmc 2:1 0x48000000 uImage;bootm 0x48000000 |
以ext4文件系统去emmc第一个分区加载uImage linux内核镜像,加载到内存地址0x48000000;然后在该地址0x48000000启动linux内核。
这条命令告诉uboot启动完之后,要干什么动作,通过bootcmd命令进行了解。
3)修改启动延时时间
setenv bootdelay 3
saveenv
1 | Saving Environment to MMC... |
4)打印已经存在的环境变量
#printenv(pri)
5)复位开发板
reset
6)修改本地IP地址
setenv ipaddr 192.168.11.6
//修改IP地址setenv gatewayip 192.168.11.1
//修改网关setenv netmask 255.255.255.0
//修改子网掩码saveenv
注意:在后面的课程设计网络下载裸机程序,网络必须要配置好,因为当前的uboot不支持串口下载文件。
7)验证网络的通畅
ping 电脑IP地址
注意:开发板必须通过网线连接到电脑;电脑必须关闭防火墙;电脑不能主动ping开发板,因为uboot默认状态下是关闭了网卡。
ping成功:
1 | ping 192.168.11.3 |
ping失败:
1 | ping 192.168.11.3 |
8)修改服务器IP地址
#setenv serverip 192.168.11.3
#saveenv
9)删除对应的环境变量,例如删除sap变量
#setenv sap
#saveenv
10)通过tftp下载文件到内存
#tftp 文件名 内存地址
#tftp led.bin 0x40000000
1 | tftp 0x40000000 led.bin |
11)执行某地址存在的二进制文件
#go 内存地址
1 | go 0x40000000 |