天天看点

嵌入式基础学习-U-Boot使用

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目录下,修改执行权限

    sudo chmod +x /bin/dnw

    ,用lsusb命令查看是否有ID如下的设备确保连上

    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