Zynq7010基于qspi flash linux移植笔记(2)
三、制作ramdisk文件系统
1、编译busybox
这里用的是busybox-1.28.3,网上很多资源。进入busybox的源码目录,输入
make menuconfig ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- CONFIG_PREFIX=/path/from/root install
交叉编译的,指定好准没错。
2、完善busybox生成的文件系统
进入上述生成的路径
mkdir apps data dev etc info init lib mnt proc root sys tmp var
新建上述文件夹
文件系统这里暂时不再加入其他东西了,比如/dev/null、/etc/init.d/rcS等等,这些可以留待后面陆陆续续添加,少了这些文件不会影响linux正常启动。
下面制作一个8M大小的文件系统:
dd if=/dev/zero of=ramdisk.image bs=1024 count=8192
mke2fs -F ramdisk.image -L “ramdisk” -b 1024 -m 0
tune2fs ramdisk.image -i 0
mkdir ramdisk
:mount -o loop ramdisk.image ramdisk
cp busyboxfs/* ramdisk -rf
umount ramdisk
chmod a+rwx ramdisk.image
mkimage -n ‘uboot ext2 ramdisk’ -A arm -O linux -T ramdisk -C gzip -d ramdisk.image uramdisk.image.gz
ramdisk制作完毕
3、修改linux kernel的Default RAM disk size
在linux kernel根目录下:
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
打开menuconfig,Device Drivers->Block devices->Default RAM disk size,调整为8192,即8M
保存退出,并编译内核:
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage LOADADDR=0x00008000
四、qspi flash擦写ramdisk、devicetree及kernel
1、网线连接电脑和开发板
设置同一网段,这里PC:192.168.2.233,Zynq:192.168.2.5
开机,在uboot下输入
setenv ipaddr 192.168.2.5
setenv serverip 192.168.2.233
设置本地ip,及远端PC tftp服务器IP
这里PC采用下图所示软件
2、uboot操作
分别把uImage、devicetree、ramdisk用tftp放入0x02000000内存地址中,然后依次烧写:
存放内容 | 偏移地址 | 占用空间 |
---|---|---|
FSBL+FPGA bit文件+uboot | 0x0 | 0x80000(8MByte) |
kernel | 0x800000 | 0x400000(4MByte) |
devicestree | 0xC00000 | 0x4000 |
ramdisk | 0xC04000 | 0x8000040(8MByte) |
sf probe
tftpboot 0x02000000 uImage
sf update 0x02000000 0x800000 0x400000
tftpboot 0x02000000 devicetree.dtb
sf update 0x02000000 0xC00000 0x4000
tftpboot 0x02000000 uramdisk.image.gz
sf update 0x02000000 0xC04000 0x800040
ramdisk根据实际制作大小,做适当调整:
3、重启板子
linux能够正常启动,完毕。
后续就是补全文件系统的内容,网上很多样例,这里不再赘述了。