S3C6410嵌入式應用平臺構建(五)——linux-3.14.4移植到OK6410-(Nand分區問題)

前一篇文章,咱們的Linux能後啓動了,只是在識別nand時候,沒有獲取到時鐘源,致使後面的分區沒喲進行。node

     咱們從啓動的log發現:linux

[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 –2git

  因而追蹤到代碼:app

nandflash驅動中——s3c2410.c中ide


發如今去find 「nand」clock source時,獲取不到,所以,咱們打開S3c2410.c (drivers\mtd\nand)  svn

因而打開Clk-s3c64xx.c (drivers\clk\samsung)  oop

發如今Aliases時,並無Aliases nand,所以我試着加了如下代碼:ALIAS(MEM0_NFCON, "s3c6400-nand", "nand"),測試

這樣的話,當去clk_get時,應該不會有問題了。ui

這個機制是linux-3.10後才加的,這個問題卡了我很久。this

咱們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文件系統。
相關文章
相關標籤/搜索