目录
一、问题
二、解决办法
1.创建工程
2.配置参数
3.编译
3.打包
4.下载
三、附录(开机启动信息)
一、问题
看下面这个链接,出现的问题和我一样。
当把根文件系统设置为 INITRAMFS 是好的,改为JFFS2就有问题。
https://forums.xilinx.com/t5/Embedded-Linux/Modifying-filesystem-Petalinux/td-p/869056
MTD: MTD device with name "jffs2" not found.
VFS: Cannot open root device "mtd:jffs2" or unknown-block(0,0): error -2
Please append a correct "root=" boot option; here are the available partitions:
0100 16384 ram0 (driver?)
0101 16384 ram1 (driver?)
0102 16384 ram2 (driver?)
0103 16384 ram3 (driver?)
0104 16384 ram4 (driver?)
0105 16384 ram5 (driver?)
0106 16384 ram6 (driver?)
0107 16384 ram7 (driver?)
0108 16384 ram8 (driver?)
0109 16384 ram9 (driver?)
010a 16384 ram10 (driver?)
010b 16384 ram11 (driver?)
010c 16384 ram12 (driver?)
010d 16384 ram13 (driver?)
010e 16384 ram14 (driver?)
010f 16384 ram15 (driver?)
1f00 5120 mtdblock0 (driver?)
1f01 128 mtdblock1 (driver?)
1f02 10752 mtdblock2 (driver?)
1f03 16768 mtdblock3 (driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU0: stopping
二、解决办法
在zedboard上,重新开始搭建一个从QSPI_FLASH启动,根文件系统为JFFS2的LINUX系统。
1.创建工程
petalinux-create --type project --template zynq --name zedboard_jffs2
2.配置参数
petalinux-config --get-hw-description ../linux_base.sdk
按下面的配置,未提到的都保持默认。
Image Packaging Configuration中:
Root filesystem type —>选择JFFS2类型
擦除块大小选择64KB
在Yocto Settings中:
勾选Enable Debug Tweaks,可以取消每次开机串口终端输入用户名密码。
FLASH分区设置:
partition@0x00000000 {
label = "boot";
reg = <0x00000000 0x00500000>;
};
partition@0x00500000 {
label = "bootenv";
reg = <0x00500000 0x00020000>;
};
partition@0x00520000 {
label = "kernel";
reg = <0x00520000 0x00a80000>;
};
partition@0x00fa0000 {
label = "jffs2";
reg = <0x00fa0000 0x00800000>;
};
Advanced bootable images storage Settings中:
boot image settings —>选择primary flash
uboot-env—>选择flash
kernel image settings —>选择primary flash
rootfs—>选择flash
dtb image—>选择from boot image
3.编译
petalinux-build
3.打包
示例:
petalinux-package --boot --u-boot --kernel --add images/linux/rootfs.jffs2 --offset
实际使用:
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --kernel --add images/linux/rootfs.jffs2 --offset 0x00fa0000 --force
4.下载
使用xilinx sdk下载。
果然遇到问题。
jffs2: Node at 0x0000ff40 with length 0x00000994 would run over the end of the erase block
jffs2: Perhaps the file system was created with the wrong erase size?
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000ff44: 0x0994 instead
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000ff48: 0x790b instead
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000ff4c: 0x0013 instead
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000ff50: 0x001d instead
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000ff54: 0x81ed instead
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000ff5c: 0x7dac instead
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000ff6c: 0xc000 in