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" ro
yaffs: 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 nand0
Creating 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设备树的传递 - 知乎 (zhihu.com)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值