Linux在没有SD卡情况下烧写文件系统
一、脚本烧录QSPI flash
1:将拨码拨到JTAG位置
2:在image/bin下新建.sh文件夹,内容如下:
export XIL_CSE_ZYNQ_UBOOT_QSPI_FREQ_HZ=10000000
export XIL_CSE_ZYNQ_DISPLAY_UBOOT_MESSAGES=1
program_flash -f BOOT.BIN -fsbl zynq_fsbl.elf -offset 0 -flash_type qspi_single -blank_check -verify
3:给脚本执行权限 chmod 777 flash.sh
4:执行脚本。
二、U-boot模式下PING通网络
查看 ipaddr和server ip printenv
如果没有设定,需要手动设定
set serverip 192.168.133.111 --tftp主机ip
set ipaddr 192.168.133.11 --板子ip
saveenv
三、 通过网络启动内核文件并设置分区
1:通过tftp加载内核文件 tftpboot image.ub
红色框住的地址为内核文件在内存中的地址,启动内核,需要将它作为参数,也可以指定一个地址,建议稍微大一点,命令格式为: tftpboot 0x8000000 image.ub
如果出现TFTP server died; starting again 报错
可以重启TFTP服务器 sudo service tftpd-hpa restart
2:从内存启动内核
执行命令: bootm 0x10000000
3:给emmc分区
执行命令:ls /dev/mmcblk*
可以查看emmc设备文件名(如果启用SD0,则SD0的设备名为mmcblk0,emmc的设备名为mmcblk1)
我们需要对mmcblk0进行分区,步骤如下
fdisk /dev/mmcblk0
四、移植文件系统
1:移植mkfs,通过NFS共享目录获取文件
a:将debian_rootfs文件copy到NFS共享目录
b:挂在nfs目录 mount -t nfs -o nolock 192.168.133.111:/home/ubt64-ma/NFS-work /mnt
c: 进入挂载目录 cd /mnt
d:拷贝所要文件 cp debian_rootfs/sbin/mk* -d /sbin
cp -d debian_rootfs/lib/arm-linux-gnueabihf/libcom_err.so.2* /lib
cp -d /mnt/debian_rootfs/lib/arm-linux-gnueabihf/libe* /lib
2:格式化分区
mkfs.vfat /dev/mmcblk0p1 &> /dev/null
mkfs.ext4 /dev/mmcblk0p2 &> /dev/null
3:创建挂载文件夹
mkdir /media/mmc1
mkdir /media/mmc2
4: 挂载分区
mount /dev/mmcblk0p1 /media/mmc1
mount /dev/mmcblk0p2 /media/mmc2
5:将ubtun下的image.ub拷贝到NFS共享目录下
6:挂在NFS(已挂载不需要重复)mount -t nfs -o nolock 192.168.133.111:/home/ubt64-ma/NFS-work /mnt
7:将文件系统和内核文件拷贝到板子上
cp /mnt/image.ub /media/mmc1
cp -rf debian_rootfs/* /media/mmc2/
重新上电开发板,可进入debian