修改时间 01-24-2019 08:52 PM
我使用petalinux2018.2为一块自己的ZU9EG的板子生成了BOOT.BIN和rootfs.jffs2。把这个两个文件烧录到flash之后,以QSPI32的模式启动,BOOT.BIN正常加载并且运行,但是运行到加载根文件系统时,提示找不到jffs2分区,错误信息可以看日志文件。如果以别的方式进入系统,运行 cat /proc/mtd, 结果为空,没有分区。QSPI flash在支持列表内,在其他板子上加载根文件系统分区正常。我也尝试过把工作正常的工程配置,用到这块板子的工程,但是还是一样的现象。请各位帮忙看看日志,分析什么原因。谢谢!
我的QSPI Flash型号是: MT25QU512ABB8ESF-0SIT。
我的设备树中flash分区如下:
flash@0 {
compatible = "n25q512a", "micron,m25p80";
spi-tx-bus-width = <0x1>;
spi-rx-bus-width = <0x4>;
reg = <0x0>;
#address-cells = <0x1>;
#size-cells = <0x1>;
spi-max-frequency = <0x66ff300>;
partition@0x00000000 {
label = "boot";
reg = <0x0 0x1b00000>;
};
partition@0x01b00000 {
label = "bootenv";
reg = <0x1b00000 0x20000>;
};
partition@0x01b20000 {
label = "dtb";
reg = <0x1b20000 0x20000>;
};
partition@0x01b40000 {
label = "kernel";
reg = <0x1b40000 0x1000000>;
};
partition@0x02b40000 {
label = "jffs2";
reg = <0x2b40000 0x54c0000>;
};
};
生成烧写文件的.bif内容如下:
the_ROM_image:
{
[fsbl_config]a53_x64
[bootloader]../images/zynqmp_fsbl.elf
[destination_cpu = pmu]../images/pmufw.elf
[destination_device = pl]../images/system.bit
[destination_cpu = a53-0, exception_level = el-3, trustzone]../images/bl31.elf
[destination_cpu = a53-0, exception_level = el-2]../qspiboot-images/u-boot.elf
[offset = 0x1b20000, load = 0x11b20000, destination_cpu = a53-0]../qspiboot-images/system.dtb
[offset = 0x1b40000, load = 0x10000000, destination_cpu = a53-0]../images/image.ub
[offset = 0x2b40000, destination_cpu = a53-0]../rootfs/rootfs.jffs2
}
我的内核相关配置:
CONFIG_SPI=y
CONFIG_SPI_XILINX=y
CONFIG_SPI_ZYNQMP_GQSPI=y
CONFIG_MTD=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_M25P80=y
CONFIG_MTD_SPI_NOR=y
修改时间 01-25-2019 12:56 PM
可以参考一下这个链接。
https://forums.xilinx.com/t5/Embedded-Linux/Modifying-filesystem-Petalinux/td-p/869056
修改时间 01-25-2019 12:56 PM
建议你先用petalinux config默认设置的intramfs和相应的flash partition setting完成petalinux build,petalinux package生成一个包含fsbl、pmufw、u-boot、image.ub的BOOT.bin,其中image.u包含了dtb,uImage和rootfs。把这个BOOT.bin烧到qspi flash里boot linux看看/dev里面有没有mtd flash partition。
修改时间 02-21-2019 11:36 AM
uboot启动的时候,会检测一次QSPI器件,并且打印出来;kernel加载的时候,会检测一次QSPI器件,并且打印出来。可以从这两点判断QSPI是否被驱动。
我估计JFFS2文件系统不能挂载的原因很可能是erasesize的原因,器件的erasesize是驱动写死的,menuconfig只能指定文件系统的erasesize,底层的驱动不一定按这个来。