取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
Highlighted
856 次查看
注册日期: ‎04-28-2018

从QSPI Flash分区加载根文件系统失败

我使用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

0 项奖励
4 回复数
Highlighted
Moderator
Moderator
811 次查看
注册日期: ‎05-23-2018

Hi, @yannantian198656

可以参考一下这个链接。

https://forums.xilinx.com/t5/Embedded-Linux/Modifying-filesystem-Petalinux/td-p/869056

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee
811 次查看
注册日期: ‎05-11-2010

建议你先用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。

 

 

0 项奖励
Highlighted
Observer
Observer
677 次查看
注册日期: ‎05-31-2012

uboot启动的时候,会检测一次QSPI器件,并且打印出来;kernel加载的时候,会检测一次QSPI器件,并且打印出来。可以从这两点判断QSPI是否被驱动。

我估计JFFS2文件系统不能挂载的原因很可能是erasesize的原因,器件的erasesize是驱动写死的,menuconfig只能指定文件系统的erasesize,底层的驱动不一定按这个来。

0 项奖励
Highlighted
Participant
Participant
51 次查看
注册日期: ‎09-07-2020

问题有解决吗?需要在驱动上做调整吗

0 项奖励