专家们好,最近在搞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.
然后就停止了,不知道是怎么回事?希望专家们指点,谢谢!
Tony Tang:
应该是DDR的配置不合适。可以用附件的工具核对一下配置。
另外DDR2可以工作在150MHz的。
你是用什么工具烧的flash? CCS还是通过串口?
Tony Tang:
应该是DDR的配置不合适。可以用附件的工具核对一下配置。
另外DDR2可以工作在150MHz的。
你是用什么工具烧的flash? CCS还是通过串口?
Tony Tang:
1. 用DDR2可以支持150MHz。
2. 问题应该是DDR2的配置不合适。用附件工具重新计算一下。
3. 你用的是CCS还是UART烧写的flash?.
paul wang2:
回复 Tony Tang:
我用CCS烧写的UBL和Uboot,DDR的配置方面我一直没有搞清楚,请专家进一步指点,不过同样的DDR配置,我用CCS4来测试DDR的时候,是pass的。
paul wang2:
回复 paul wang2:
上电后,我用CCS看Memory的0xC1080000处,可以看到BUL的magic number,0xC1090000处看到Uboot的megic number,也就是说,已经UBL和Uboot已经被copy到DDR中?只是为什么没有继续启动uboot?
Tony Tang:
回复 paul wang2:
如果DDR确认没有问题,那么可能是UBL与UBoot的配套有问题。请问是同一个SDK里带的这个串口烧写工具与PSP吗?
paul wang2:
回复 Tony Tang:
我已经无法确认是否是同一个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来执行吗?
TI中文支持网