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 使用sdk6.0 uboot版本为2013.01.01,从nand启动uboot到一半,卡住,急!!!!

我在用sdk6.0 2013.01.01版本的u-boot,烧写到nand flash 中以后,启动到一半,就卡在那里不动了

这是我的启动信息:

CCCCCCCCCCCCCCCCCCCCCCCCCC
U-Boot SPL 2013.01.01 (Apr 04 2014 - 12:51:28)
enable_board_pin_mux
board_init_f start
>>spl:board_init_r()
spl_board_init
boot device - 65
CCxyzModem - CRC mode, 0(SOH)/357(STX)/0(CAN) packets, 3 retries
Loaded 363720 bytes
Jumping to U-Boot
image entry point: 0x80800000

就卡在这里

  • 自制的板子吗? 可能是 内存 没初始化好

    导致跳转的时候,程序无法执行

  • 请问你的u-boot image是怎么烧写进NAND FLASH呢?是用tftp还是SD卡?

  • andy

       你好,请问问题解决了吗?我也遇到这样的情况,也找不到问题,谢谢!

  • 你好,如果是从串口启动,然后烧写了u-boot-spl.bin和u-boot.img到nand flash。 然后从nand flash启动,也遇到这种情况,有可能是什么原因造成的。

    谢谢

  • 你好,我也遇到了一样的情况。不过我是先通过串口启动烧写uboot到nand flash。

    然后从nand flash启动时候遇到这样的情况。串口启动的时候已经可以正常烧写u-boot.img,这样已经说明ddr配置正确了吗

  • 不完全能说明问题,比较uboot.img比较小,不能说明ddr的配置是完全稳定的,最好按照我们的文档进行配置。

  • 也怀疑是过ddr不稳定。不过由于我们用的BH-USB-560v2现在调试不了,JTAG的RTCK接地,出现-181的错误。

    麻烦抽空看下ddr的配置。附件是使用的ddr的datasheet和根据TI官方给的计算公式计算出来的配置。

     config_ddr(266, MT47H128M16RT25E_IOCTRL_VALUE, &ddr2_data, &ddr2_cmd_ctrl_data, &ddr2_emif_reg_data);

    #define MT47H128M16RT25E_EMIF_READ_LATENCY      0x100005
    #define MT47H128M16RT25E_EMIF_TIM1              0x0666B3D1
    #define MT47H128M16RT25E_EMIF_TIM2              0x141E31CA
    #define MT47H128M16RT25E_EMIF_TIM3              0x000001BF

    #define MT47H128M16RT25E_EMIF_SDCFG             0x41804c22
    #define MT47H128M16RT25E_EMIF_SDREF             0x0000081a
    #define MT47H128M16RT25E_DLL_LOCK_DIFF      0x0
    #define MT47H128M16RT25E_RATIO                          0x80
    #define MT47H128M16RT25E_INVERT_CLKOUT      0x00
    #define MT47H128M16RT25E_RD_DQS                     0x40
    #define MT47H128M16RT25E_WR_DQS                    0x00
    #define MT47H128M16RT25E_PHY_WRLVL              0x40
    #define MT47H128M16RT25E_PHY_GATELVL            0x00
    #define MT47H128M16RT25E_PHY_WR_DATA            0x40
    #define MT47H128M16RT25E_PHY_FIFO_WE            0x4C
    #define MT47H128M16RT25E_PHY_RANK0_DELAY                0x1
    #define MT47H128M16RT25E_IOCTRL_VALUE           0x18B

     

    Parameters Comments
    DDR clock frequency 266 MHz input maximum frequency you will use
    PHY_INVERT_CLKOUT 0 If (DDR_CK length) < (DDR_DQS length), then use 1.  If (DDR_CK length) > (DDR_DQS length), then use 0.
    Trace Length (inches)
    Byte 0 Byte 1
    DDR_CK trace 0.7   input the average of DDR_CK and DDR_CKn traces.  If you have two x8 memories, use the trace lengths for each corresponding byte. 
    DDR_DQSx trace 0.7   x can be 0 or 1, corresponding to each byte.
    Intermediate Values (per byte lane)
    WR DQS 0 0 these are just used for the calculations below
    RD DQS 40 40 these are just used for the calculations below
    RD DQS GATE 59 40 these are just used for the calculations below
    Register Values (in hex)
    DATAx_PHY_RD DQS_SLAVE_RATIO 40
    DATAx_PHY_FIFO_WE_SLAVE_RATIO 4C
    DATAx_PHY_WR DQS_SLAVE_RATIO 0
    DATAx_PHY_WR_DATA_SLAVE_RATIO 40
    CMDx_PHY_CTRL_SLAVE_RATIO 80
    DDR_CK DDR_DQSx trace等长处理,PHY_INVERT_CLKOUT选择1时在串口启动时不能正常运行,选择0时可以

     

    AM335x_DDR_register_calc_tool_3_2.xlsx
  • 附件是使用的ddr的datasheet

    W9751G6KB.pdf
  • 请问您用的ddr是ddr2 还是 ddr3?

    如果是ddr2,不需要做s/w leveling 参考这个 http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips

  • feng lin1 说:

    附件是使用的ddr的datasheet

    1. DDR2不能工作在300MHz,最懂只能到266MHz, 这点您是对的,如果这个还是不稳定,可以考虑降频到133MHz,排除硬件layout的原因。DDR2也不需要s/w leveling。

    2. 对于excel中的时序值,请不要用最小值,最好能留点余量。

    3. 请参考 http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips#DDR_PHY_Control_Register 中,除了excel计算的寄存器的值,也请参考其他寄存器的配置。

    谢谢!

  • 已经按照您列出来的三点进行修改,不过还是一样的现象。

    想问下有没其他方面可能导致问题发生的。谢谢

    U-Boot SPL2013.01.01 (Mar 02 2015 - 16:19:02)
    enable_board_pin_mux
    after config_ddr
    >>spl:board_init_r()
    gpmc_init
    timed out in wait_for_pin: I2C_STAT=0
    musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    musb-hdrc: MHDRC RTL version 2.0
    musb-hdrc: setup fifo_mode 4
    musb-hdrc: 28/31 max ep, 16384/16384 memory
    USB Peripheral mode controller at 47401000 using PIO, IRQ 0
    musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
    musb-hdrc: MHDRC RTL version 2.0
    musb-hdrc: setup fifo_mode 4
    musb-hdrc: 28/31 max ep, 16384/16384 memory
    USB Host mode controller at 47401800 using PIO, IRQ 0
    boot device - 5
    nand flash
    Debug: spl:nand -using hw ecc
    file=am335x_spl_bch.c,func=nand_init,line=224
    file=omap_gpmc.c,func=board_nand_init,line=694***************
    Debug Found it file=omap_gpmc.c,func=board_nand_init,line=709***************
    Load u-boot
    file=am335x_spl_bch.c,func=nand_spl_load_image,line=185
    Debug :spl_parse_image_header
    Debug :spl: payload image: U-Boot 2013.01.01 for am335x boa load addr: 0x807fffc0 size: 351796
    file=am335x_spl_bch.c,func=nand_spl_load_image,line=185
    file=am335x_spl_bch.c,func=nand_deselect,line=241
    Debug :Load u-boot 2
    Debug: Jumping to U-boot
    image entry point: 0x80800000

  • 看你上面的配置中,#define MT47H128M16RT25E_EMIF_SDCFG             0x41804c22

    这个值没有对照AM335x的TRM手册7.3节配置修改吧?这个值很重要,是要你根据手册对着EMIF4D寄存器的SDRAM_CONFIG核对的。

    根据你目前配置的这个值,最后三位是0xc22,二进制也就是1100 0010 0010,标红的部分为9-7的bit,这里的配置为000,根据手册,代表9row bits。

    但是根据你提供的datasheet手册如下,貌似是有出入的哦。


  • 已经改回来了。

    #define MT47H128M16RT25E_EMIF_SDCFG             0x41804e22

    不过还是一样的结果。

    有点疑惑,在串口启动的时候,spl进行的ddr2初始化已经成功,并且能通过串口下载u-boot.ing到内存,并启动,都正常。也能通过串口下载MLO和u-boot.img到内存,写入nand flash。这样不能说明ddr运行正常吗?如果说u-boot.img小,但是从nand flash启动,也是初始化ddr后拷贝u-boot.img到ddr并执行而已啊。

    U-Boot# md 0x82000000
    82000000: 56190527 1b78ca9f 7624f554 f45d0500    '..V..x.T.$v..].
    82000010: 00008080 00000000 a797c1a5 00050211    ................
    82000020: 6f422d55 3220746f 2e333130 302e3130    U-Boot 2013.01.0
    82000030: 6f662031 6d612072 78353333 616f6220    1 for am335x boa
    82000040: ea000014 e59ff014 e59ff014 e59ff014    ................
    82000050: e59ff014 e59ff014 e59ff014 e59ff014    ................
    82000060: 808001a0 80800200 80800260 808002c0    ........`.......
    82000070: 80800320 80800380 808003e0 12345678     ...........xV4.
    82000080: 80800000 0004e4cc 0004e4cc 004a0570    ............p.J.
    82000090: 00055df4 0badc0de eb000556 e10f0000    .]......V.......
    820000a0: e3c0001f e38000d3 e129f000 ee110f10    ..........).....
    820000b0: e3c00a02 ee010f10 e59f03a8 ee0c0f10    ................
    820000c0: eb0005ee e1a04000 e1a05001 e1a06002    .....@...P...`..
    820000d0: e24f0098 e1500006 03a09000 0a000022    ..O...P....."...
    820000e0: e1a01006 e51f3064 e0802003 e8b00600    ....d0... ......
    820000f0: e8a10600 e1500002 3afffffb e51f0084    ......P....:....
    U-Boot#

    感谢Steven Liu的耐心回答

  • 除了串口和NAND FLASH,还有其他可以启动的介质么,比如SD卡或者以太网。

    如果DDR的配置有问题,那么串口启动理论上是不能执行到U-boot命令行的, 可以用SD卡或者以太网再验证下。

    也有可能是NAND FLASH的问题。

  • 有以太网口,不过还没调通

    也怀疑过是NAND FLASH问题,也检查配置好几次。

    不过NAND FLASH 在串口启动模式也能正确读写。

    在nanf flash启动模式下,也能读MLO到片上内存,并识别u-boot.img的大小。

  • Jian Zhou

     你好,我用仿真器进行调试,发现SPL运行后,进入UBOOT后,卡在        ldr     pc, _data_abort      这里。

    请问是什么原因可能造成data_abort的?

  • 这个是数据访问异常,应该是由于DDR不稳定造成的。

  • 对于DDR的稳定性,您可以在CCS里面,打开memory browser,然后修改下0x80000000后的内存,看是否能修改成功。

    这个可以初步判断DDR是否配置正确。

    请问您的DDR做过了配置吗

  • 有的,已经对DDR做过配置。也可以修改0x80000000后的内存。在串口启动的时候,spl也是对ddr做同样的配置,是可以启动uboot的。但是在nand启动的时候,spl也是做同样的配置,但就是出现data abort。

  • 我完整核对了一下你的SDCONFIG,发现时序还是配的有问题。

    我们目前的DDR2应该跑在的是266MHz,前面的配置是没问题的,但是对于DDR2 CL配置这里有问题。

    266MHz的话,1/266MHz =3.76ns

    根据你的配置#define MT47H128M16RT25E_EMIF_SDCFG             0x41804e22

    二进制:0100 1110 0010 0010,这个REG_CL的值为3,代表了CL=3.

    但根据你的DDR2 datasheet,CL=3时,无法支持到3.76nS,这个设置不支持266MHz。你需要根据你的DDR2具体型号,来确定一个可以支持这个频率的CL值:


  • 已经修改成CL=5.

    #define MT47H128M16RT25E_EMIF_SDCFG             0x41805622

    但还是一样的情况。数据访问异常有没可能是其他情况造成的,还是一般都是ddr不稳定?

    ddr在串口模式下能正常运行,并在nand flash启动模式下能够修改内存地址了。

  • 我下午尝试了,在nand flash模式的启动情况下,MLO启动后,配置完ddr后,通过ccs下载uboot到内存,是可以正常运行的。

    那应该是可以排除ddr的问题。应该是nand flash的问题。会不会是串口启动模式下,烧写uboot到nand flash时不正常?或者nand flash启动后,读nand flash到ddr出现问题了?

  • 也就是说从NAND引导到MLO正常,MLO从NAND引导U-boot就不正常了,U-boot完全不能启动还是启动到某个位置停掉了?

    在擦写NAND的时候有没有报什么错误?同时也请你检查下NAND的硬件部分。

  • 进入U-boot 后,直接就进入data_abort那里。

    擦写nand没有报错。

    Device 0: nand0, sector size 128 KiB
    Page size 2048 b
    OOB size 64 b
    Erase size 131072 b
    U-Boot# nand device

    Device 0: nand0, sector size 128 KiB
    Page size 2048 b
    OOB size 64 b
    Erase size 131072 b
    U-Boot# nand dump 0x0
    Page 00000000 dump:
    40 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 43 48 53 45 54 54 49 4e 47 53 00 00
    ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
    c1 c0 c0 c0 00 01 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    fd 7f 01 00 00 04 2f 40 14 00 00 ea 14 f0 9f e5
    14 f0 9f e5 14 f0 9f e5 14 f0 9f e5 14 f0 9f e5
    14 f0 9f e5 14 f0 9f e5 20 04 2f 40 24 04 2f 40
    28 04 2f 40 2c 04 2f 40 30 04 2f 40 34 04 2f 40
    38 04 2f 40 78 56 34 12 00 00 80 80 00 fc d0 3f
    f4 73 01 00 88 2c d4 3f f4 73 01 00 de c0 ad 0b
    7b 03 00 eb 00 00 0f e1 1f 00 c0 e3 d3 00 80 e3
    00 f0 29 e1 10 0f 11 ee 02 0a c0 e3 10 0f 01 ee
    68 00 9f e5 10 0f 0c ee 09 00 00 eb 16 00 00 eb
    f1 03 00 eb 15 0f 07 ee 9a 0f 07 ee 95 0f 07 ee
    48 00 9f e5 09 00 80 e0 10 0f 0c ee 1e ff 2f e1
    1e ff 2f e1 00 00 a0 e3 17 0f 08 ee 15 0f 07 ee
    d5 0f 07 ee 9a 0f 07 ee 95 0f 07 ee 10 0f 11 ee
    02 0a c0 e3 07 00 c0 e3 02 00 80 e3 02 0b 80 e3
    01 0a 80 e3 10 0f 01 ee 0e f0 a0 e1 0f 03 00 ea
    00 04 2f 40 00 f0 20 e3 80 30 9f e5 30 40 2d e9
    00 20 93 e5 88 10 92 e5 00 20 93 e5 2c 40 92 e5
    00 20 93 e5 a8 c0 92 e5 00 20 93 e5 04 50 a0 e3
    88 50 82 e5 00 50 93 e5 50 20 9f e5 20 50 95 e5
    01 0c 55 e3 fa ff ff 1a a4 39 a0 e1 83 39 a0 e1
    17 30 83 e3 00 34 83 e1 00 40 92 e5 1f 00 cc e3
    01 00 80 e3 2c 30 84 e5 00 30 92 e5 07 10 81 e3
    a8 00 83 e5 00 30 92 e5 88 10 83 e5 00 30 92 e5
    20 30 93 e5 01 00 53 e3 fb ff ff 1a 30 80 bd e8
    80 78 30 40 1c 31 9f e5 f0 40 2d e9 00 20 93 e5
    90 20 92 e5 00 10 93 e5 68 50 91 e5 00 10 93 e5
    80 40 91 e5 00 10 93 e5 84 c0 91 e5 00 10 93 e5
    d8 10 91 e5 00 60 93 e5 04 70 a0 e3 90 70 86 e5
    03 70 a0 e1 00 60 97 e5 d8 30 9f e5 5c 60 96 e5
    01 0c 56 e3 fa ff ff 1a 32 00 50 e3 a5 09 a0 e1
    80 09 a0 e1 17 00 00 1a 32 0c 80 e3 17 00 80 e3
    00 50 93 e5 1f 40 c4 e3 01 40 84 e3 68 00 85 e5
    00 00 93 e5 1f c0 cc e3 01 c0 8c e3 80 40 80 e5
    00 00 93 e5 1f 10 c1 e3 01 10 81 e3 84 c0 80 e5
    00 00 93 e5 07 20 82 e3 d8 10 80 e5 00 10 93 e5
    90 20 81 e5 00 20 93 e5 5c 20 92 e5 01 00 52 e3
    fb ff ff 1a f0 80 bd e8 fa 0b 80 e3 17 00 80 e3
    00 50 93 e5 1f 40 c4 e3 0a 40 84 e3 68 00 85 e5
    00 00 93 e5 1f c0 cc e3 08 c0 8c e3 80 40 80 e5
    00 00 93 e5 1f 10 c1 e3 04 10 81 e3 84 c0 80 e5
    00 00 93 e5 07 20 82 e3 d8 10 80 e5 00 10 93 e5
    90 20 81 e5 00 20 93 e5 5c 20 92 e5 01 00 52 e3
    fb ff ff 1a f0 80 bd e8 80 78 30 40 84 30 9f e5
    30 40 2d e9 00 20 93 e5 94 10 92 e5 00 20 93 e5
    40 40 92 e5 00 20 93 e5 a0 c0 92 e5 07 10 c1 e3
    04 50 81 e3 00 20 93 e5 94 50 82 e5 00 50 93 e5
    50 20 9f e5 34 50 95 e5 01 0c 15 e3 fa ff ff 0a
    a4 39 a0 e1 83 39 a0 e1 17 30 83 e3 00 34 83 e1
    00 40 92 e5 1f 00 cc e3 01 00 80 e3 40 30 84 e5
    00 30 92 e5 07 10 81 e3 a0 00 83 e5 00 30 92 e5
    94 10 83 e5 00 30 92 e5 34 30 93 e5 01 00 13 e3
    fb ff ff 0a 30 80 bd e8 80 78 30 40 24 30 9f e5
    02 20 a0 e3 00 10 93 e5 d0 20 81 e5 00 10 93 e5
    28 20 81 e5 00 20 93 e5 28 20 92 e5 02 00 52 e3
    fb ff ff 1a 1e ff 2f e1 84 78 30 40 10 40 2d e9
    4b 0f a0 e3 5f ff ff eb 32 00 a0 e3 80 ff ff eb
    5c 33 9f e5 00 20 93 e5 8c 10 92 e5 00 20 93 e5
    9c c0 92 e5 00 20 93 e5 ac 00 92 e5 00 20 93 e5
    04 40 a0 e3 8c 40 82 e5 00 40 93 e5 30 23 9f e5
    70 40 94 e5 01 0c 54 e3 fa ff ff 1a ac 39 a0 e1
    83 39 a0 e1 0f 39 83 e3 17 30 83 e3 00 c0 92 e5
    7f 00 c0 e3 05 00 80 e3 9c 30 8c e5 00 30 92 e5
    07 10 81 e3 ac 00 83 e5 00 30 92 e5 8c 10 83 e5
    00 30 92 e5 70 30 93 e5 01 00 53 e3 fb ff ff 1a
    dc 32 9f e5 03 2c a0 e3 00 30 93 e5 7c 20 83 e5
    d0 32 9f e5 02 10 a0 e3 00 20 93 e5 e0 10 82 e5
    03 10 a0 e1 00 20 91 e5 b8 32 9f e5 e0 20 92 e5
    02 00 52 e3 fa ff ff 1a 00 10 93 e5 60 20 81 e5
    03 10 a0 e1 00 20 91 e5 60 20 92 e5 02 00 52 e3
    90 32 9f e5 fa ff ff 1a 00 10 93 e5 64 20 81 e5
    00 20 93 e5 64 20 92 e5 02 00 52 e3 fb ff ff 1a
    6c 32 9f e5 00 10 93 e5 0c 20 81 e5 00 20 93 e5
    0c 20 92 e5 02 00 52 e3 fb ff ff 1a 54 32 9f e5
    00 10 93 e5 dc 20 81 e5 03 10 a0 e1 00 20 91 e5
    40 32 9f e5 dc 20 92 e5 02 00 52 e3 fa ff ff 1a
    00 10 93 e5 20 21 81 e5 00 20 93 e5 20 21 92 e5
    02 00 52 e3 fb ff ff 1a 14 32 9f e5 00 10 93 e5
    03 00 a0 e1 08 20 81 e5 00 20 90 e5 00 12 9f e5
    08 30 92 e5 02 00 53 e3 fa ff ff 1a f4 21 9f e5
    00 00 92 e5 0c 30 80 e5 00 00 92 e5 00 30 80 e5
    00 00 91 e5 00 30 80 e5 00 00 92 e5 08 30 80 e5
    00 00 92 e5 04 30 80 e5 00 00 91 e5 04 30 80 e5
    00 30 91 e5 04 30 93 e5 02 00 53 e3 fb ff ff 1a
    b0 11 9f e5 00 20 92 e5 80 30 82 e5 00 30 91 e5
    80 20 93 e5 02 00 52 e3 fb ff ff 1a 98 31 9f e5
    01 10 a0 e3 00 30 93 e5 08 10 83 e5 80 31 9f e5
    00 10 93 e5 b4 20 81 e5 00 20 93 e5 b4 20 92 e5
    02 00 52 e3 fb ff ff 1a 68 31 9f e5 00 10 93 e5
    30 20 81 e5 03 10 a0 e1 00 20 91 e5 54 31 9f e5
    30 20 92 e5 02 00 52 e3 fa ff ff 1a 00 10 93 e5
    40 20 81 e5 03 10 a0 e1 00 20 91 e5 40 20 92 e5
    02 00 52 e3 2c 31 9f e5 fa ff ff 1a 00 10 93 e5
    3c 20 81 e5 00 20 93 e5 3c 20 92 e5 02 00 52 e3
    fb ff ff 1a 08 31 9f e5 00 10 93 e5 b8 20 81 e5
    00 20 93 e5 b8 20 92 e5 02 00 52 e3 fb ff ff 1a
    f0 30 9f e5 00 10 93 e5 ac 20 81 e5 03 10 a0 e1
    OOB:
    ff ff c8 b0 e8 12 b2 4a
    63 70 83 0f c6 76 57 00
    f8 9a 15 48 48 b3 16 1c
    09 63 37 21 7a 00 1a a2
    31 b2 77 78 03 62 81 94
    40 6d 30 00 5a 46 ba 0c
    68 5e c1 f2 1c 98 cb 5a
    9a 00 ff ff ff ff ff ff
    U-Boot#

  • 你用的是我们TI的官方SDK 6.0吧,对于NAND这块的driver有没有自己改动过?

    看你上面的描述,现在的情况是说,如果采用ccs load uboot的方法,是可以正常进入到uboot的命令行进行操作的。

    但是如果是烧到的nand flash中,只能启动到MLO,无法进入到uboot,一旦进入uboot就出错是吧?

    你的uboot.img是怎么烧写的?可以在uboot命令行中,先nand erase.chip,再nand write烧吗?

  • 对,驱动没有改过。就只是修改了 gpmc_init()函数里面的

    writel(0x00000200, &gpmc_cfg->irqstatus);

    writel(0x00000100, &gpmc_cfg->irqenable);

     

    是的,如果是串口启动模式,是能通过串口下载MLO启动,并下载uboot,并正常启动uboot。

    在nand flash启动的情况下,在MLO启动完,然后我通过ccs下载uboot,也是正常的。

    uboot.img烧写的话,是根据http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#Boot_Over_UART 进行的。

    也是正常没有错误提醒的。

    下面是烧写操作命令和从nand flash启动uboot的信息。

    U-Boot#  nand erase.chip

    NAND erase.chip: device 0 whole chip
    Skipping bad block at  0x07e40000
    Skipping bad block at  0x07fe0000

    OK
    U-Boot#
    U-Boot# loadb 0x82000000
    ## Ready for binary (kermit) download to 0x82000000 at 115200 bps...
    ## Total Size      = 0x00018205 = 98821 Bytes
    ## Start Addr      = 0x82000000
    U-Boot# nand erase 0x0 0x20000

    NAND erase: device 0 offset 0x0, size 0x20000
    Erasing at 0x0 -- 100% complete.
    OK
    U-Boot# nand write 0x82000000 0x0 0x20000

    NAND write: device 0 offset 0x0, size 0x20000
     131072 bytes written: OK
    U-Boot# loadb 0x82000000
    ## Ready for binary (kermit) download to 0x82000000 at 115200 bps...
    ## Total Size      = 0x00058fbc = 364476 Bytes
    ## Start Addr      = 0x82000000
    U-Boot# nand erase 0x80000 0x40000

    NAND erase: device 0 offset 0x80000, size 0x40000
    Erasing at 0xa0000 -- 100% complete.
    OK
    U-Boot# nand write 0x82000000 0x80000 0x40000

    NAND write: device 0 offset 0x80000, size 0x40000
     262144 bytes written: OK
    U-Boot# CCCCCCCC
    U-Boot SPL2013.01.01 (Mar 05 2015 - 16:15:44)
    enable_board_pin_mux
    after config_ddr
    >>spl:board_init_r()
    gpmc_init
    timed out in wait_for_pin: I2C_STAT=0
    musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO
    Rx, HB-ISO Tx, SoftConn)
    musb-hdrc: MHDRC RTL version 2.0
    musb-hdrc: setup fifo_mode 4
    musb-hdrc: 28/31 max ep, 16384/16384 memory
    USB Peripheral mode controller at 47401000 using PIO, IRQ 0
    musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO
    Rx, HB-ISO Tx, SoftConn)
    musb-hdrc: MHDRC RTL version 2.0
    musb-hdrc: setup fifo_mode 4
    musb-hdrc: 28/31 max ep, 16384/16384 memory
    USB Host mode controller at 47401800 using PIO, IRQ 0
    boot device - 5
    nand flash
    Debug: spl:nand -using hw ecc
    file=am335x_spl_bch.c,func=nand_init,line=224
    file=omap_gpmc.c,func=board_nand_init,line=694***************
    Debug Found it  file=omap_gpmc.c,func=board_nand_init,line=709***************
    Load u-boot
    file=am335x_spl_bch.c,func=nand_spl_load_image,line=185
    Debug :spl_parse_image_header
    Debug :spl: payload image: U-Boot 2013.01.01 for am335x boa load addr: 0x807fffc
    0 size: 364476
    file=am335x_spl_bch.c,func=nand_spl_load_image,line=185
    file=am335x_spl_bch.c,func=nand_deselect,line=241
    Debug :Load u-boot 2
    Debug: Jumping to U-boot

     

  • 根据你的log,标红的部分。估计是你没有正常完成的烧录uboot.img。 364476 byte的文件只烧录了262144byte。

    U-Boot# loadb 0x82000000                                    --> Steven:这里是在load uboot.img
    ## Ready for binary (kermit) download to 0x82000000 at 115200 bps...
    ## Total Size      = 0x00058fbc = 364476 Bytes  --> Steven: uboot.img文件大小
    ## Start Addr      = 0x82000000
    U-Boot# nand erase 0x80000 0x40000

    NAND erase: device 0 offset 0x80000, size 0x40000
    Erasing at 0xa0000 -- 100% complete.
    OK
    U-Boot# nand write 0x82000000 0x80000 0x40000   --> Steven:这里开始往nand中烧录文件

    NAND write: device 0 offset 0x80000, size 0x40000

     262144 bytes written: OK                                     --> Steven: 文件烧录部分的大小
    U-Boot# 

    尝试解决方案:这里是NAND的layout:http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#NAND_Layout

    0x00080000开始到0x002BFFFF都可以为uboot.img使用,建议你增加烧录的空间,比如

    nand write 0x82000000 0x80000 0x1E0000

    然后试试看,是不是就可以了?

  • Steven:

      确实是这个问题,都没去注意镜像大小超出范围,真的很感谢

  • 感谢!!!

    我也碰到同样的问题。

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