1.uboot 移植的一般流程:
①、在 uboot 中找到参考的开发平台,一般是原厂的开发板。
②、参考原厂开发板移植 uboot 到我们所使用的开发板上。
2.在移植之前,我们先编译一下 NXP 官方 I.MX6ULL EVK 开发板对应的 uboot,首先是配置
uboot,configs 目录下有很多跟 I.MX6UL/6ULL 有关的配置,使用mx6ull_14x14_evk_emmc_defconfig 作为默认配置文件。
执行命令:
make mx6ull_14x14_evk_emmc_defconfig //配置
make //编译
3.命令执行过程:
切换到 EMMC
读取 zImage 镜像文件到 0x80800000
读取设备树文件到 0x83000000
启动 Linux
4.每次修改 linux 系统文件或者 linux 下的某个驱动以后都要将其烧写到 EMMC 中去测试,太麻烦。
为了方便调试,可以设置 linux 从网络启动,也就是将 linux 镜像文件和根文件系统都放到 Ubuntu 下某个指定的文件夹中。
使用 tftp 从 Ubuntu 中下载 zImage 和设备树文件,前提是要将 zImage 和设备树文件放到 Ubuntu 下的 tftp 目录中。
5.uboot命令:
base -打印或设置地址偏移
bdinfo -打印板信息结构
bmode -sd1 | sd2 | qspi1 | normal | usb | sata | ecspi1:0 | ecspi1:1 | ecspi1:2 | ecspi1:3 | esdhc1 | esdhc2 | esdhc3 | esdhc4[noreset]
bmp -处理bmp图像数据
boot -boot默认值,即运行“bootcmd”
bootd -启动默认值,即运行“bootcmd”
bootefi -从内存启动EFI负载
bootelf -从内存中的ELF映像启动
bootm -从内存启动应用程序映像
bootp -使用bootp/TFTP协议通过网络引导映像
bootvx -从ELF映像启动vxWorks
bootz -从内存中引导Linux zImage映像
clocks -显示时钟
clrlogo -用黑色填充引导标志区域
cmp -内存比较
coninfo -打印控制台设备和信息
cp -内存拷贝
crc32 -校验和计算
dcache -启用或禁用数据缓存
dhcp -使用dhcp/TFTP协议通过网络引导映像
dm -驾驶模型低级访问
echo -控制台的echo参数
editenv -编辑环境变量
env -环境处理命令
erase -擦除闪存
exit -退出脚本
ext2load -从Ext2文件系统加载二进制文件
ext2ls -列出目录中的文件(默认/)
ext4load -从Ext4文件系统加载二进制文件
ext4ls -列出目录中的文件(默认/)
ext4size -确定文件的大小
ext4write -在根目录中创建文件
false -什么都不做,不成功
fatinfo -打印有关文件系统的信息
fatload -从dos文件系统加载二进制文件
fatls -列出目录中的文件(默认/)
fatsize -确定文件的大小
fdt -展平设备树实用程序命令
flinfo- 打印闪存信息
fstype -查找文件系统类型
fuse -保险丝子系统
go -在地址“addr”启动应用程序
gpio -查询和控制gpio引脚
help -print命令说明/用法
i2c -i2c子系统
icache -启用或禁用指令缓存
iminfo -打印应用程序图像的标题信息
imxtract -提取多图像的一部分
itest -整数比较时返回true/false
load -从文件系统加载二进制文件
loadb -通过串行线加载二进制文件(kermit模式)
loads -通过串行线加载S-Record文件
loadx -通过串行线加载二进制文件(xmodem模式)
loady -通过串行线加载二进制文件(ymodem模式)
loop -地址范围上的无限循环
ls -列出目录中的文件(默认/)
md -内存显示
mdio -mdio实用程序命令
mii -mii实用程序命令
mm —内存修改(地址自动递增)
mmc -mmc子系统
mmcinfo -显示MMC信息
mtest -简单RAM读/写测试
mw -内存写入(填充)
nfs -使用nfs协议通过网络引导映像
nm -内存修改(恒定地址)
ping -向网络主机发送ICMP ECHO_REQUEST
printenv -打印环境变量
protect -启用或禁用FLASH写入保护
reset -执行CPU的重置
run -run环境变量中的命令
save -将文件保存到文件系统
saveenv -将环境变量保存到持久存储
setenv -设置环境变量
setexpr -将环境变量设置为eval表达式的结果
sf -SPI闪存子系统
showvar -打印局部hushshell变量
size -确定文件的大小
sleep -延迟执行一段时间
source -从内存运行脚本
test -最小测试,如/bin/sh
tftpboot -使用TFTP协议通过网络引导映像
true -不做任何事,成功
usb -usb子系统
usbboot -从USB设备启动
version -打印监视器、编译器和链接器版本
6.如果你想获取某条命令的更详细的帮助,可以使用:
help <你想要查的指令> 或者 ? <你想要查的指令> , 甚至 h <你想要查的指令缩写>。 |
7.cmdline是uboot引导内核启动时传递给内核的,作用是指导内核启动。内核启动阶段会去解析cmdline,并根据cmdline去指导内核启动。
例如:mem=1408M console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait rootfstype=squashfs mtdparts=xxx
(1)mem= 用来告诉内核当前系统的内存有多少;
(2)console= 指定控制台使用的串口已经波特率;
(3)root= 根文件系统的位置,比如上面就是指定根文件系统在mmcblk0p2分区,内核挂载根文件系统时会用到;
根文件系统也可以通过nfs远程挂载:
root=/dev/nfs nfsroot=192.168.1.141:/root/imx6ull/nfs ip=192.168.1.10:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off
(4)rootfstype= 指明文件系统的格式和权限;
(5)mtdparts= 指明存储设备的分区情况;