• S3C6410嵌入式应用平台构建(五)——linux-3.14.4移植到OK6410-(Nand分区问题)


    前一篇文章,我们的Linux能后启动了,只是在识别nand时候,没有获取到时钟源,导致后面的分区没哟进行。

         我们从启动的log发现:

    [06/08-11:25:41:371]s3c24xx-nand s3c6400-nand: failed to get clock
    [06/08-11:25:41:371]s3c24xx-nand: probe of s3c6400-nand failed with error –2

      于是追踪到代码:

    nandflash驱动中——s3c2410.c中


    发现在去find “nand”clock source时,获取不到,因此,我们打开S3c2410.c (driversmtd and) 

    于是打开Clk-s3c64xx.c (driversclksamsung) 

    发现在Aliases时,并没有Aliases nand,因此我试着加了以下代码:ALIAS(MEM0_NFCON, "s3c6400-nand", "nand"),

    这样的话,当去clk_get时,应该不会有问题了。

    这个机制是linux-3.10后才加的,这个问题卡了我好久。

    我们make uImage后测试如下:

    从上面我们又发现出错以下信息:

    [06/08-14:18:34:573]nand: No oob scheme defined for oobsize 218

    [06/08-14:18:34:573]------------[ cut here ]------------

    [06/08-14:18:34:574]kernel BUG at drivers/mtd/nand/nand_base.c:3732!

    原来是我们的nandflash的oobsize是218,而nand_base.c中并没有加入218的处理,因此参照6410驱动,修改nand_base.c。做如下添加:

    1. 添加nand_oob_218定义

    2. 添加case 218处理

        好了,我们再次 make uImage后,下载到板子上,启动如下:

         上面红色部分,代表nandflash已经可以识别并可以读写,已经看到分区信息。只是会有cut here,不过这个bug不影响我们的启动,如果不想看到该打印信息,我们只需要这make menucong中配置kernel hacking中设置printk level为7,默认为4即可。
         后面我们就开始做yaffs2文件系统了,并配置内核支持yaffs2文件系统。
  • 相关阅读:
    hdu4280 Island Transport(最大流Dinic数组模拟邻接连边)
    hihoCoder1378 (最大流最小割)
    单聊语音
    Mybatis批量更新数据
    mysql 之 MRR
    Intellij IDEA 快捷键整理
    SpringBoot 整合 Swagger2 使用教程
    jdk/dubbo spi
    redis问题(待解决)
    JVM调优心得
  • 原文地址:https://www.cnblogs.com/lixiaoming90/p/3776227.html
Copyright © 2020-2023  润新知