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的boot模式的问题

请问一下,我使用dm8127芯片,使用spi flash,现在使用串口下载u-boot。但是设置为uart模式时,一直打印“CC”字符?设置为spi模式是,复位时打印8个‘c’字符。测试电平均正常,请问是可能是什么原因?

  • Hi ,

    没太看懂你的问题。

    你觉得哪个不正常。

    也请提供一下你说的每种模式下,BTMODE具体是设置为哪个值?

    BR,
    Eason 

  • 我的意思是:1,设置为uart时,复位dm8127时,串口打印输出“CCCCCCCC”,然后使用Xmodem实现下载u-boot.min.uart完成后,不会运行,这是什么原因,          2,设置为SPI模式时,串口打印仍然输出“CCCCCCCC”,我在http://processors.wiki.ti.com/index.php/TI81XX_PSP_UBOOT_User_Guide#U-Boot_UART_support这里看,好像只有UART模式出口才会输出“CCCCCCCC”。是什么原因导致呢?两种模式设置如下图。谢谢

  • 10110 这个bootmode, 启动顺序里面第一项是spi , 第三项是uart。所以如果spi没有启动起来的话,ROM里面等待超时就会尝试去从其他启动设备/接口去启动。你的可能是这种情况

  • 那么在uart模式下,下载了u-boot.min.uart后,为什么不会运行啊?还有为什么spi模式启动不了呢

  • 你用的是pre_build 目录下面的uboot.min吗。

    可以直接用u-boot.min.nand试试。。。   你用的是哪个RDK版本?

    SPI启动不来,你的SPIflash烧写过么。。。里面有东西么。。。烧的是什么binary?

  • 你好,我使用的是rdk3.5的版本,我在appro的8127开发板上是可以使用串口的xmodem下载u-boot.min.uart后运行。但是在我自己做的板上下载后就没有反应?目前spiflash还没有烧录过。

  • 你的串口有"CCCCC"的打印么?

  • 你好,串口有打印"CCCCC"的。我们使用appro的8127的开发板下载后悔自动运行,如下图:

    但是,我们自己的板子上下载后,不会运行,如下图:

    请问这可能是什么原因导致的啊?

  • DDR3 leveling做了没?是不是卡在1阶uboot的某个初始化步骤了?

  • DDR3 leveling没有做。第一阶段还没有初始化DDR3吧。在汇编到c的入口那里即start_armboot添加了打印。在开发板上可以打印出来。但是我们自己做的板子不会打印。

  • 1. DDR的初始化是在第一阶段uboot下作的,这样是为了将2阶段uboot导入DDR中运行。

    2. 建议用CCS的GEL初始化后,直接跑Uboot看看。

  • 你好,第一阶段是要初始化ddr,但是在汇编里面有初始化吗?我是在start_armboot ()函数的开始打印的,这个函数前面都是汇编,ddr应该是在if ((*init_fnc_ptr)() != 0) 这里面初始化的吧。

    void start_armboot (void)
    {
    init_fnc_t **init_fnc_ptr;
    char *s;
    unsigned long addr;
    #if defined(CONFIG_VFD) || defined(CONFIG_LCD)
    unsigned long addr;
    #endif

    //printf("ange start\n");
    /* Pointer is writable since we allocated a register for it */
    gd = (gd_t*)(_armboot_start - CONFIG_SYS_MALLOC_LEN - sizeof(gd_t));
    //printf("anger start_armboot::::1\n");
    /* compiler optimization barrier needed for GCC >= 3.4 */
    __asm__ __volatile__("": : :"memory");

    //printf("anger start_armboot::::2\n");

    memset ((void*)gd, 0, sizeof (gd_t));
    gd->bd = (bd_t*)((char*)gd - sizeof(bd_t));
    memset (gd->bd, 0, sizeof (bd_t));

    gd->flags |= GD_FLG_RELOC;

    printf("anger-start_armboot::::3\n");

    monitor_flash_len = _bss_start - _armboot_start;

    for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
    if ((*init_fnc_ptr)() != 0) {
    hang ();
    }