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.

关于AM1808的UBL问题(之前那个帖子怎么没有内容?)

Other Parts Discussed in Thread: AM1808

专家们好,最近在搞AM1808的UBL,EVM用的是mDDR,我的板子改成了DDR,用SPImem启动,在编译BUL之前,我改了device.c,具体如下:Uint32 DEVICE_init()

{

Uint32 status = E_PASS;

// Ensure the kick registers are unlocked

// Note these lines have no effect on 2.0 and later silicon

DEVICE_kickLock();

DEVICE_kickUnlock();

SYSTEM->SUSPSRC &= ( (1 << 27) | (1 << 22) | (1 << 20) | (1 << 5) | (1 << 16));

#ifndef SKIP_LOW_LEVEL_INIT

// System PSC Setup

DEVICE_PSCInit();

// System PLL Setup

if (status == E_PASS)

{

#if defined(AM1808)

  // CPU(s) at 456 MHz

  status |= DEVICE_PLL0Init(0, 18, 0, 0, 0, 18, 8);

//--------------------------------------------------------------//

//  paul_20120219

/* #elif defined(INTDEV0)

  // CPU(s) at 300 MHz

  status |= DEVICE_PLL0Init(0, 24, 0, 1, 0, 11, 5);

#else

  // CPU(s) at 300 MHz

  status |= DEVICE_PLL0Init(0, 24, 0, 1, 0, 11, 5);*/

//--------------------------------------------------------------//

#endif  

}

if (status == E_PASS)

{

  // mDDR @ 150MHz

  //status |= DEVICE_PLL1Init(24, 1, 0, 1, 2);  

  //DDR @ 132MHZ

  status |= DEVICE_PLL1Init(21, 1, 0, 1, 2);

}

// External Memory Timing Setup

if (status == E_PASS)

{

//#if defined(INTDEV0)

    // Timings for DDR2 at 132 MHz

    status |= DEVICE_ExternalMemInit(0x00000047, 0x08934832, 0x204929C9, 0x0C12C722, 0x00000406, 0x00000000);

 // #else

    // Timings for mDDR at 150 MHz

   //status |= DEVICE_ExternalMemInit(0x000000C4, 0x0A034622, 0x1C912A08, 0x3811C700, 0x00000494, 0x00000000);

//#endif

}

#endif

编译完后,用AISgen工具生成ubl.bin,然后把Uboot烧入SPI Flash的0x00010000,reset后,串口输出:

AM1808 initialization passed!

Booting TI User Boot Loader

      UBL Version: 1.65

      UBL Flashtype: SPI

Starting SPI Memory Copy

DONE

Jmping to entry point at 0xC1080000.

然后就停止了,不知道是怎么回事?希望专家们指点,谢谢!

  • 应该是DDR的配置不合适。可以用附件的工具核对一下配置。

    另外DDR2可以工作在150MHz的。

    你是用什么工具烧的flash? CCS还是通过串口?

    mDDR_DDR2_Memory_Controller_Register_Calc_Rev2.xls
  • 应该是DDR的配置不合适。可以用附件的工具核对一下配置。

    另外DDR2可以工作在150MHz的。

    你是用什么工具烧的flash? CCS还是通过串口?

  • 1. 用DDR2可以支持150MHz。

    2. 问题应该是DDR2的配置不合适。用附件工具重新计算一下。

    3. 你用的是CCS还是UART烧写的flash?.

    mDDR_DDR2_Memory_Controller_Register_Calc_Rev2.zip
  • 我用CCS烧写的UBL和Uboot,DDR的配置方面我一直没有搞清楚,请专家进一步指点,不过同样的DDR配置,我用CCS4来测试DDR的时候,是pass的。

  • 上电后,我用CCS看Memory的0xC1080000处,可以看到BUL的magic number,0xC1090000处看到Uboot的megic number,也就是说,已经UBL和Uboot已经被copy到DDR中?只是为什么没有继续启动uboot?

  • 如果DDR确认没有问题,那么可能是UBL与UBoot的配套有问题。请问是同一个SDK里带的这个串口烧写工具与PSP吗?

  • 我已经无法确认是否是同一个SDK里带的串口烧写工具与PSP了,但是用您给的DDR计算器,重新又计算了各个值后,在CCS4中RAM也可以测试通过。。。但是烧入spi flash后,ubl不停的被执行即结果为:

    AM1808 initialization passed!

    Booting TI User Boot Loader

           UBL Version: 1.65

           UBL Flashtype: SPI

    Starting SPI Memory Copy...

    Valid magicnum, 0xA1ACED00, found at offset 0x00010000.

    DONE

    Jumping to entry point at 0xC1080000.

    AM1808 initialization passed!

    Booting TI User Boot Loader

           UBL Version: 1.65

           UBL Flashtype: SPI

    Starting SPI Memory Copy...

    Valid magicnum, 0xA1ACED00, found at offset 0x00010000.

    DONE

    Jumping to entry point at 0xC1080000.

    AM1808 initialization passed!

    Booting TI User Boot Loader

           UBL Version: 1.65

           UBL Flashtype: SPI

    Starting SPI Memory Copy...

    Valid magicnum, 0xA1ACED00, found at offset 0x00010000.

    DONE

    Jumping to entry point at 0xC1080000.

    1、可能真如您所说,是DDR的配置问题,我再研究一下,看看是否有值配置的不对?

    2、另外我再确认一下UBL和UBoot配合版本的问题,不知道Uboot中还需要修改什么地方么?

    3、我用CCS在Ram中看到,0xC1080000是UBL的magic number,0xC1090000是Uboot的magic number,是不是有问题呢?难道不是把Uboot 拷贝到0xC1080000来执行吗?