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.

DM8127 nand falsh启动问题

大家好,

     我买的是APPro DM8127的开发板,软件版本为DM8127_IPNC_3.80.00。我把开发板的nand flash 芯片MT29F2G16AADWP:D换成我们使用的的S34ML01G200TFI000,8位宽度的flash后,出现问题:

1,进不了nand boot模式,直接跳到uart模式。

2,在uart模式下,把uboot写到ddr中,在ddr中操作nand flash。写和擦除都正常。通过比较数据是正常的。但是在读的时候有很多ECC: uncorrectable.打印。请问问题出现在哪里?

  谢谢!

  • 你好,

    anguo wang 说:

    1,进不了nand boot模式,直接跳到uart模式。

    【Chris】对新的nand烧写了代码么?

    anguo wang 说:

    2,在uart模式下,把uboot写到ddr中,在ddr中操作nand flash。写和擦除都正常。通过比较数据是正常的。但是在读的时候有很多ECC: uncorrectable.打印。请问问题出现在哪里?

    【Chris】能否参考下面帖子里面我提到的修改?
  • Chris Meng,你好

       1,我使用 的nand 都是通过ddr把u-boot.min.nand和u-boot.bin写到了nand中了的。而且通过nand dump命令读取数据域源文件比较,数据是相同的,读取的第一页的oob数据位:

    OOB:
    ff ff e4 b6 30 c5 27 50
    32 89 f8 f0 03 dd e5 00
    0f a3 d2 db 4d b0 1a 8a
    bf 4a 00 1b e1 00 6b e1
    89 f4 5a fc 62 6c e3 05
    e3 8c c9 00 a1 8b 59 44
    ed 54 07 36 40 de da 23
    a8 00 ff ff ff ff ff ff

    2,按照你说的修改了,在读取时使用nand read 0x81000000 0x20000 0x40000后,还是有很多ECC: uncorrectable。最后的打印是:

    ECC: uncorrectable.
    ECC: uncorrectable.
    NAND read from offset 20000 failed -74
    262144 bytes read: ERROR

    这个与校验有关吗,开发板使用的是16位宽度的nand,我换上去的是8位的nand,我是一直把nand->options |= NAND_BUSWIDTH_16;这句屏蔽的。

    int board_nand_init(struct nand_chip *nand)

    { …

    * If we are 16 bit dev, our gpmc config tells us that */

    //if ((readl(&gpmc_cfg->cs[cs].config1) & 0x3000) == 0x1000)

    //nand->options |= NAND_BUSWIDTH_16;

    … }

    是否还需要修改一些配置呢?

  • 你好,

    请问你是否有修改硬件引脚BTMODE[12]的上拉为下拉?

    GPMC CS0 default Data Bus Width input. This pin is
    multiplexed between ARM Cortex-A8 boot mode and
    General-Purpose Memory Controller (GPMC) peripheral
    functions. At reset, BTMODE[12] is sampled to determine the GPMC CS0 bus width:

    • 0 = 8-bit data bus
    • 1 = 16-bit data bus
    After reset, this pin functions as GPMC multiplexed
    data/address pin 12 (GPMC_D[12]).

  • 你好,

       硬件我没有修改,直接屏蔽这句不行的吗?

    /if ((readl(&gpmc_cfg->cs[cs].config1) & 0x3000) == 0x1000)

    //nand->options |= NAND_BUSWIDTH_16;

  • 你好,我把BTMODE12硬件上设置为下拉,结果还是一样的

  • 你好,

    仍然是串口打印CCC么?

    请问你是否有仿真器?如果有,能否参考http://processors.wiki.ti.com/index.php/Debug_Tips_for_DM81xx_Boot_Fail看看启动失败的时候CONTROL_STATUS.SYSBOOT 是否和你的外部上下拉一致。

  • 您好!您说的查看CONTROL_STATUS.SYSBOOT寄存器中的值是查看0x4031D040地址里的值吗?(dm8168)

  • 你好,

    你使用的是DM8127,请从DM8127的数据手册里面找到control module的寄存器起始地址。在DM814x TRM里面找到CONTROL_STATUS寄存器的偏移地址。然后再CCS下访问相关地址。

    你之前回复里面的地址不是DM8127的CONTROL_STATUS的地址。

  • 收到!了解了,谢谢您的详细解答!

x 出现错误。请重试或与管理员联系。