U-Boot介绍
U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。
选择U-Boot的理由:
① 开放源码;
② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;
③ 支持多个处理器系列,如PowerPC、ARM、x86、MIPS;
④ 较高的可靠性和稳定性;
⑤ 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;
⑥ 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
⑦ 较为丰富的开发调试文档与强大的网络技术支持;
U-Boot常用命令
所有命名在不冲突的情况下都可以简写
print 同printenv,打印波特率、IP地址、文件系统挂载点等信息
? 同help,显示所有命令
help 'name' 显示’name'命令的作用和使用方法
JZ2440 U-Boot菜单
空格键打断引导后直接就是菜单,q键退出后
menu
命令可再次进入。菜单中按对应字母进入等待下载状态,同时会提示usb的连接状态。
- 在windows中打开dnw软件,USB Port -> Transmit 选择文件即会自动完成下载和烧写。这块板子的usb驱动很奇怪,禁用签名装上驱动后重启又会报签名问题,坑。
- 在linux中:把dnw放到/bin目录下,修改执行权限
,用lsusb命令查看是否有ID如下的设备确保连上sudo chmod +x /bin/dnw
。下载命令格式为Bus 002 Device 004: ID 5345:1234 Owon PDS6062T Oscilloscope
。sudo dnw 文件
网络下载烧写
先设置开发板IP
set ipaddr 192.168.1.12 //此处保证和路由器ip在一个网段就行,和linux系统的ip无关
set serverip 192.168.1.242 //windows的IP,用于tftp传输
saveenv //永久保存
设置完后ping检测
ping 192.168.1.242 //开发板不回应ping包,只能从开发板ping电脑,提示host 192.168.1.242 is alive就完成了
tftp方式
首先在windows上打开tftp软件,选择bin文件目录,多网卡需要选择server interface为192.168.1.242;
裸板或更新u-boot:
tftp 30000000 led_on.bin
nand erase bootloader
nand write 30000000 bootloader
kernel:
tftp 30000000 uImage
nand erase kernel
nand write.jffs2 30000000 kernel
fs:
tftp 30000000 fs.yaffs2
nand erase root
nand write.yaffs 30000000 260000 $(filesize)
如果文件系统为jfss2格式,应该修改bootargs 添加 rootfstype=jffs2
因为uboot会首先检测是不是yaffs2的格式,不是再以jffs2格式引导,而很多时候会出现误判为yaffs2格式导致异常
setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 rootfstype=jffs2
nfs方式
使用虚拟机ubuntu18系统(ip:192.168.1.11),需要装好nfs服务,最好先在板子中测试确保能挂载上。
板子中nfs 挂载:mount -t nfs -o nolock,vers=2 192.168.1.11:/home/xz/Work/nfs_root /mnt
mtdpart查看分区
nfs下载烧写到nand flash:
nfs 30000000 192.168.1.11:/home/xz/Work/system/linux-2.6.22.6/arch/arm/boot/uImage
nand erase kernel
nand write.jffs2 30000000 kernel