大家好,我现在在用dm368 ipnc5.0方案,我们自己做的板子经常会出现系统不能正常启动的情况,串口输出只输出了这些:
DM36x initialization passed!
TI UBL Base Version: 1.50
Boot Loader BootMode = NAND
Starting NAND Copy...
不知道这是什么原因?请问该怎么解决?我们怀疑过是ddr的问题,也试图去修改ubl对ddr的初始化,但是不知道该改哪个寄存器。
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.
大家好,我现在在用dm368 ipnc5.0方案,我们自己做的板子经常会出现系统不能正常启动的情况,串口输出只输出了这些:
DM36x initialization passed!
TI UBL Base Version: 1.50
Boot Loader BootMode = NAND
Starting NAND Copy...
不知道这是什么原因?请问该怎么解决?我们怀疑过是ddr的问题,也试图去修改ubl对ddr的初始化,但是不知道该改哪个寄存器。
你好,
你可以修改ubl,在ubl初始化DDR后对DDR进行读写,看是否正常来判断是否是DDR的问题。
如果是DDR的问题,原因可能有两个:
1. DDR布线
请问你们是否严格按照数据手册的DDR章节来布线的?
2. DDR时序参数配置
如果你使用的DDR和IPNC上的型号不同,请根据DM36x DDR user guide的介绍来调整DDR相关参数。
我跟踪了一下ubl,发现是停在NAND_open这个函数,一直在while里死循环,跳不出来,感觉像是跑飞了,
while (hNandInfo->CSOffset < DEVICE_EMIF_NUMBER_CE_REGION)
{
DEBUG_printString("666666666666666666666\r\n");
DEBUG_printHexInt(hNandInfo->CSOffset);
if ( (hNandInfo->flashBase >= (DEVICE_EMIF_FIRST_CE_START_ADDR + (DEVICE_EMIF_INTER_CE_REGION_SIZE * (hNandInfo->CSOffset+0)))) &&
(hNandInfo->flashBase < (DEVICE_EMIF_FIRST_CE_START_ADDR + (DEVICE_EMIF_INTER_CE_REGION_SIZE * (hNandInfo->CSOffset+1))))
)
{
DEBUG_printString("777777777777777777777777777\r\n");
break;
}
hNandInfo->CSOffset++;
DEBUG_printHexInt(hNandInfo->CSOffset);
}
然后我把这段代码注释掉后,又在后面这段停止了,
hNandInfo->busWidth = busWidth;
// Setup AEMIF registers for NAND
AEMIF->NANDFCR |= (0x1 << (hNandInfo->CSOffset)); // NAND enable for CSx
(*hNandInfo->hEccInfo->fxnEnable)(hNandInfo);
DEBUG_printString("888888888888888888888\r\n");
8888888888888888没有输出,不知道这是什么原因?