300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > NUC972 Linux学习 NAND FLASH 制作系统

NUC972 Linux学习 NAND FLASH 制作系统

时间:2024-06-08 19:55:15

相关推荐

NUC972 Linux学习 NAND FLASH 制作系统

设备:NUC972DF61YC

使用的虚拟机环境:官方提供的NUC972DF61YC - Nuvoton

板载NAND FLASH,前期主要学习怎么uboot、ubootspl、uimage、env烧录。官方配置没有使用rootfs在flash中,所以数据会掉电丢失。即文件系统在RAM中。

这里仅仅整理移植时遇到的问题:

问题一:

【VFS: Mounted root (yaffs2 filesystem) readonly on device 31:2.】报错

yaffs: dev is 32505858 name is "mtdblock2" royaffs: passed flags "inband-tags"VFS: Mounted root (yaffs2 filesystem) readonly on device 31:2.devtmpfs: error mounting -2

刚刚学习挂载.dtb设备树文件,一直没有更新rootfs所以导致报错,重新编译下载rootfs解决。

问题二:

【VFS: Cannot open root device "mtdblock2" or unknown-block(0,0): error -6】报错

VFS: Cannot open root device "mtdblock2" or unknown-block(0,0): error -6

查找问题的思路:

1、 首先这里是说没法挂载mtdblock2分区,可以先往上看log,有没有下面这种:

3 ofpart partitions found on MTD device nand0Creating 3 MTD partitions on "nand0":0x000000000000-0x000000200000 : "u-boot"0x000000200000-0x000001600000 : "Kernel"0x000001600000-0x000007a80000 : "user"fmi-sm: registered successfully! mtdid=nand0

其中三个分区,分别为mtdblock0,mtdblock1,mtdblock2。看一下是不是你要挂载的分区在这个范围内。

2、如果没有上述的log输出,就是说根本没有进行分区,分区失败了。

2.1、分区可以从以下几个地方开始:Kernel->arch->arm->boot->dts中找到板卡的设备树。看一下分区是否正确

partition@0x0 {label = "u-boot";reg = <0x00000000 0x0200000>;};partition@0x200000 {label = "Kernel";reg = <0x0200000 0x1400000>;};partition@0x1600000 {label = "user";reg = <0x1600000 0x6480000>;};

2.2、uboot->include->config中找到板卡的.h文件。检查分区。

#define MTDIDS_DEFAULT "nand0=nand0"#define MTDPARTS_DEFAULT "mtdparts=nand0:0x200000@0x0(u-boot),0x1400000@0x200000(kernel),-(user)"#define MTD_ACTIVE_PART "nand0,2"

2.3、如果在kernel中开启了mtdparts解析

则要在env.txt文件中配置正确的分区。我之前怎么都不加载,直到取消了这个配置,直接去文件中写死。如果一直挂载不上的同学可以试试把这个功能取消,然后到上面两个方式中去配置。

知识点:如何挂载设备树 可以参考下面这个文章 很好。

Linux设备树语法分析详解教程(三)u-boot设备树的传递 - 知乎 ()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。