【AT91SAM9261EK】u-boot 2022 tftpboot 烧写根文件系统
原创
©著作权归作者所有:来自51CTO博客作者51CTO_zhangsz的原创作品,请联系作者获取转载授权,否则将追究法律责任
前言
- 【AT91SAM9261EK】开发板,有网络接口,u-boot 支持通过网络来烧写,这里来烧写根文件系统rootfs
- 烧写Linux的根文件系统,可以使用J-Link,也可以使用【tftp】,u-boot 2022 里面,tftp命令改为了:【tftpboot】,今天验证了一下,发现可以正常的下载 文件到SDRAM中,并可以使用nand write 命令,烧写到NandFlash中
配置方法
- 开发板进入u-boot 命令行模式
-
printenv
可以查看网络的配置,如果没有,可以使用 setenv
配置上
U-Boot> printenv
baudrate=115200
bootargs=console=ttyS0,115200 earlyprintk mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,256k(env),256k(env_redundant),256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) root=/dev/mtdblock7 rw rootfstype=cramfs init=/linuxrc
bootcmd=nand read 0x22000000 0x200000 0x300000; bootm
bootdelay=3
ethact=dm9000
ethaddr=a8:53:3e:26:6a:5b
fdtcontroladdr=23f01c20
gatewayip=192.168.1.1
ipaddr=192.168.1.200
netmask=255.255.255.0
serverip=192.168.1.100
- 如电脑的IP 为:
192.168.1.100
,这里为:serverip
- 开发板的IP 为:
192.168.1.200
,这里为:ipaddr
tftpboot
- 其实就是tftp 命令,用于从TFTP服务器拉文件到内存(SDRAM)中
- 从PC端拉一个
rootfs_02.bin
的文件到 开发板的方法:
U-Boot> tftpboot 0x22000000 rootfs_02.bin
dm9000 i/o: 0x30000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: a8:53:3e:26:6a:5b
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.200
Filename 'rootfs_02.bin'.
Load address: 0x22000000
Loading: #################################################################
############################
2.1 MiB/s
done
Bytes transferred = 1363968 (14d000 hex)
- 如果无法传输,需要确认网络的IP地址的配置是否正确
- 这里的
tftpboot 0x22000000 rootfs_02.bin
中的: 0x2200 0000
是 SDRAM的地址, rootfs_02.bin
是电脑端TFTP服务器共享的文件名
nand write 烧写
- u-boot 命令使用 nand write命令烧写从TFTP服务器拉取到内存的rootfs_02.bin,这里需要指定【内存的起始地址】与【文件的大小】,文件的大小在文件传输完,会显示
-
Bytes transferred = 1363968 (14d000 hex)
这是 文件传输的大小, 0x14d000
-
0x22000000
是文件存放的起始地址 -
0x800000
是根文件系统烧写到nandflash中的位置,这个是确定好的位置 - 可以在烧写前擦除文件系统分区,使用:
nand erase
命令
U-Boot> nand erase 0x800000 0x800000
NAND erase: device 0 offset 0x800000, size 0x800000
Erasing at 0xfe0000 -- 100% complete.
OK
Load address: 0x22000000
Loading: #################################################################
############################
2.1 MiB/s
done
Bytes transferred = 1363968 (14d000 hex)
U-Boot> nand write 0x22000000 0x800000 0x14d000
NAND write: device 0 offset 0x800000, size 0x14d000
1363968 bytes written: OK
U-Boot> reset
resetting ...
RomBOOT
验证效果
- 烧写完,可以
reset
重启开发板,看看Linux 文件系统是否正常,shell终端是否正常进入 - 实际验证正常
小结
- 熟悉u-boot TFTP 的操作,拉取文件用于烧写
- 使用网络来传输文件,速度很快,如果文件很大,可以使用u-boot 的 TFTP来烧写
-
u-boot 2022
的tftp
命令,使用:tftpboot