uboot 遵循gpl条款的开放源码项目,作用是系统引导,使用uboot作为bootloader。
uboot作用:
1)uboot主要作用是用来启动操作系统内核。体现在uboot最后一句代码就是启动内核。
2)uboot还要负责部署整个计算机系统。体现在uboot最后的传参。
3)uboot中还有操作Flash等板子上硬件的驱动。例如串口要打印,ping网络成功,擦除、烧写flash是否成功等。
4)uboot还得提供一个命令行界面供人来操作。
下载命令
esc
//擦除 #nand erase.chip
#run lboot
#run lrs
#run lw
#reset
进入uboot 命令行 #help
#help base查看base的用法,即打印或者设置地址偏移量
#bootm 用于将内核镜像加载到内存的指定地址处
#bootp 使用 #bootelf 从ELF镜像启动
#bootipq启动镜像
#bootvx 从ELF映像启动vxWorks
#bootz从内存启动zImage映像
#canary测试加密堆栈
#chpart更改活动分区
#cmp 内存对比
#coninfo 打印控制台设备和信息
#cp 复制内存
#crc32 校验和计算
#dhcp DHCP/TFTP网络协议启动镜像
#dm 驱动模块低电平接入
#echo 控制台
#editenv编辑环境变量
#env环境变量
#erase擦除flash内存
#exectzt 执行tzt
#exit 暂停脚本
#false
#fatinfo 打印文件系统的信息
#fatload 从dos文件系统加载二进制文件
#fatls 目录中的列表文件
#fatsize 文件大小
#fatwrite将文件写入dos文件系统
#fdt设备树实用程序命令
#flash
#flinfo flash内存信息
#fuseipq 从内存注册QFPROM
#go 启动地址为“addr”的应用程序
#i2c
#imxtract multi映像的一部分
#ipq5018_mdio- IPQ 5018 mdio Utility命令
#is_sec_boot_enabled- 检查安全启动是否使能
#itest整数比较返回true/false
#loop无限循环的地址范围
#md 内存显示
#mii MII实用程序命令
#mm修改内存
#mmc MMC子系统
#mmcinfo 显示MMC信息
#mtdparts 定义Flash/nand分区
#mtest 简单的RAM读/写测试
#mw 内存写入
#nand nand子系统
#nboot 从nand设备启动
#nfs 使用NFS网络协议启动映像
#nm 内存修改
#part部分磁盘分区相关命令
#pci 列表并访问PCI配置空间
#ping
#printenv 打印环境变量
#protect 启用或禁用FLASH写保护
#reset
#run 运行环境变量的命令
#runmulticore- 启用并调度辅核
#saveenv - 保存环境变量
#secure_authenticate- 认证签署的镜像
#setenv 设置环境变量
#setexpr 设置环境变量表达的结果
#sf spi flash子系统
#showvar 打印本地hushshell变量
#sleep延迟执行一段时间
#smeminfo smem info信息打印
#source 从内存运行脚本
#test 最小化测试,如/bin/sh
#tftpboot使用TFTP协议通过网络启动映像
#tftpput tftp put命令,用于上传文件到服务器
#true
#tzt 加载并运行tzt
#uart UART子系统
#ubi ubi命令
#ubifsload 从UBIFS文件系统加载文件
#ubifsls 列出目录中的文件
#ubifsmount- 加载UBIFS卷
#ubifsumount- 卸载UBIFS卷
#usb
#usbboot 从USB设备启动
#zip
#bdinfo 查看开发板信息
DRAM的起始地址和大小 eth0name 网卡信息 baudrate 波特率
irq_sp sp start sp堆栈指针
环境变量
#env 环境变量
#setenv xxx //自定义变量
#setenv xxx "setenv ipaddr 192.168.129.2; setenv serverip 192.168.0.22" //自定义变量编辑内容
#saveenv //保存变量
#editenv xxx //编辑变量
#run xxx //运行变量
#fdt
把device tree blob文件下载到内存
#tftpboot 地址 bshen/xxx.dtb
设置fdt的地址
#fdt addr 地址
#fdt header
#fdt print
#nand
#nand info 查看nand flash信息
#nand device 设置当前设备
#nand erase.spread 0x0 0x780000 擦除从 0x0 地址开始, 0x780000 长度的数据。
#nand erase.chip 擦除整个 Nand 的命令
#nand erase.part 擦除整个mtd部分
#nand bad 展示坏块
#nand dump[.oob] off 显示Nand Flash中的数据(16 进制)
#nand scrub 彻底擦除nand flash中的数据,包括oob
#nand marked off 标示nand的off偏移地址处的块为坏块
擦除下载的版本
#nand erase.chip 擦除版本 #reset 置位
#sf
#sf read用来读取flash数据到内存
#sf write写内存数据到flash
#sf erase 擦除指定位置,指定长度的flash内容, 擦除后内容全1
在使用sf read sf write之前,一定要调用sf probe
#sf write 0x82000000 0x0 0x20000 把内存0x8200 0000处的数据, 写入flash的偏移0x0, 写入数据长度为0x20000(128KB), 操作偏移和长度最小单位是Byte
#sf erase 0x0 0x10000 擦除偏移0x0处, 到0x10000之间的擦除块, 擦除操作是以erase block为单位的, 要求offset和len参数必须是erase block对齐的
#sf bulkerase 擦除整个flash芯片
#ubi
ubi part xxx offset 创建ubi分区
#ubifsmount ubi0:xxx 挂载ubifs文件系统
#ubifsload xxx /boot/uImage 加载文件到内存