This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x 内核启动识别不了nand



基于sdk7.0移植uboot和内核,uboot能识别nand,但引导内核的时候打印"No NAND Device found"导致不能挂载文件系统

  • 在内核里面是否有使能NAND的配置吗?最简单的办法看你的pinmux配了没有?

  • 在device tree里面配了,用的是am335x-evm.dts官方默认已经配了

    nandflash_pins_default: nandflash_pins_default {
    pinctrl-single,pins = <
    0x0 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad0.gpmc_ad0 */
    0x4 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad1.gpmc_ad1 */
    0x8 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad2.gpmc_ad2 */
    0xc (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad3.gpmc_ad3 */
    0x10 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad4.gpmc_ad4 */
    0x14 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad5.gpmc_ad5 */
    0x18 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad6.gpmc_ad6 */
    0x1c (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad7.gpmc_ad7 */
    0x70 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0.gpmc_wait0 */
    0x74 (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_wpn.gpio0_30 */
    0x7c (PIN_OUTPUT | MUX_MODE0) /* gpmc_csn0.gpmc_csn0 */
    0x90 (PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale.gpmc_advn_ale */
    0x94 (PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren.gpmc_oen_ren */
    0x98 (PIN_OUTPUT | MUX_MODE0) /* gpmc_wen.gpmc_wen */
    0x9c (PIN_OUTPUT | MUX_MODE0) /* gpmc_be0n_cle.gpmc_be0n_cle */
    >;
    };

    nandflash_pins_sleep: nandflash_pins_sleep {
    pinctrl-single,pins = <
    0x0 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x4 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x8 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0xc (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x10 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x14 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x18 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x1c (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x70 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x74 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x7c (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x90 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x94 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x98 (PIN_INPUT_PULLDOWN | MUX_MODE7)
    0x9c (PIN_INPUT_PULLDOWN | MUX_MODE7)
    >;
    };

  • 内核没有读到flash ID,nand分区表有没有打印出来呢

  • 有没有读到id没去print测试,但没有打印分区信息

  • nand的id读出来是错的mac_id = ff    dev_id = ff

  • 搞定了,不过还是谢谢你的回答。是时序不对,在device tree配一下时序就好了,

  • 搞定了,不过还是谢谢你的回答。是时序不对,在device tree配一下时序就好了

  • 您好,我也遇到这种情况,请问,你是怎么解决的?

  • 你好,我也遇到相同狀況,最後也是修改了device tree就解決了,以下關於dts內容,參考看看

    nand-bus-width = <8>;
    gpmc,device-width = <2>;

    這兩個設定可能滿關鍵的,我沒去深究原因,但試了各種組合(8,1) (16,1) (8,2) (16,2)

    另外時序部分,因為u-boot抓得到,所以我在u-boot中把GPMC_CONFIG1~7(register) 的值印出來,
    對照datasheet和ti-gpmc.txt,修改dts中gpmc時序的那些數字

    嘗試的過程中,訊息會從只有 "No NAND Device found" 慢慢增多,
    最後我使用了
    nand-bus-width = <8>;
    gpmc,device-width = <2>;
    並且時序全部乘以2,
    才在Linux中完整抓到NAND,希望不是歪打正著~~