通过官网下载的OMAP-L138_FlashAndBootUtils_2_40里面的NORWriter_DSP程序烧写到外部norflash,在输入bin文件敲回车后经常卡主很久不动,点击暂停后显示未知地址。。。
还有个问题,自己的程序,很随机会出现连接仿真器后跑飞现象,就是连接后程序自己run了,点暂停后也是未知地址。。请问是gel文件问题吗?
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.
通过官网下载的OMAP-L138_FlashAndBootUtils_2_40里面的NORWriter_DSP程序烧写到外部norflash,在输入bin文件敲回车后经常卡主很久不动,点击暂停后显示未知地址。。。
还有个问题,自己的程序,很随机会出现连接仿真器后跑飞现象,就是连接后程序自己run了,点暂停后也是未知地址。。请问是gel文件问题吗?
您好,是用的TI例程,什么都没改,只是给添加了自己板子用的gel文件,但是经常会碰到bin文件地址输入后就没动静了,最终手动停止地址大概在0x7xxxxx内部rom。。前面几步读flash配置,大小都很稳健可以看到反馈信息。
所有程序一直都在外部DDR跑的,还没遇到过不稳定现象。
Camel Santo 说:在输入bin文件敲回车后经常卡主很久不动,
意思是说有时是成功的?多数情况下有问题?
Camel Santo 说:点击暂停后显示未知地址。。。
你提到过的地址0x7xx是芯片ROM的地址,也就是跑飞以及复位了
Camel Santo 说:还有个问题,自己的程序,很随机会出现连接仿真器后跑飞现象,就是连接后程序自己run了,点暂停后也是未知地址。。请问是gel文件问题吗?
你也可不加gel文件连接仿真器看是否有同样的问题。
另外,你有确认你的板子的NAND的位宽跟gel文件里的配置一样吗?也就是说8bit还是16bit?
Camel Santo 说:好的,我去测测DDR。
这里有DDR压力测试例程:
https://e2echina.ti.com/question_answer/dsp_arm/omap_l1x/f/54/t/121580
这行代码是一个纯粹的读文件到DDR上的操作。你的板子跑别的代码有什么问题吗?
static Uint32 norwriter()
{
NOR_InfoHandle hNorInfo;
FILE *fPtr;
Uint8 *appPtr;
Int32 appFileSize = 0;
Int8 fileName[256];
Uint32 baseAddress = 0;
DEBUG_printString("Starting ");
DEBUG_printString((String)devString);
DEBUG_printString(" NORWriter.\r\n");
// Initialize NOR Flash
hNorInfo = NOR_open((Uint32)LOCAL_norBase, DEVICE_BUSWIDTH_16BIT );
if (hNorInfo == NULL)
{
DEBUG_printString( "\tERROR: NOR Initialization failed.\r\n" );
return E_FAIL;
}
// Set base address to start putting data at
baseAddress = hNorInfo->flashBase;
// Read the UBL file from host
DEBUG_printString("Enter the binary AIS application file name (enter 'none' to skip): \r\n");
DEBUG_readString(fileName);
fflush(stdin);
if (strcmp(fileName,"none") != 0)
{
// Open an File from the hard drive
fPtr = fopen(fileName, "rb");
if(fPtr == NULL)
{
DEBUG_printString("\tERROR: File ");
DEBUG_printString(fileName);
DEBUG_printString(" open failed.\r\n");
return E_FAIL;
}
// Initialize the pointer
appFileSize = 0;
// Read file size
fseek(fPtr,0,SEEK_END);
appFileSize = ftell(fPtr);
// Check to make sure image was read correctly
if(appFileSize == 0)
{
DEBUG_printString("\tERROR: File read failed.\r\n");
fclose (fPtr);
return E_FAIL;
}
// Check to make sure the app image will fit
else if ( appFileSize > hNorInfo->flashSize )
{
DEBUG_printString("\tERROR: File too big.. Closing program.\r\n");
fclose (fPtr);
}
// Setup pointer in RAM
appPtr = (Uint8 *) UTIL_allocMem(appFileSize);
fseek(fPtr,0,SEEK_SET);
if (appFileSize != fread(appPtr, 1, appFileSize, fPtr))
{
DEBUG_printString("\tWARNING: File Size mismatch.\r\n");
}
fclose (fPtr);
DEBUG_printString("\tINFO: File read complete.\r\n");
// Erase the NOR flash to accomodate the file size
if (NOR_erase( hNorInfo, baseAddress, appFileSize ) != E_PASS)
{
DEBUG_printString("\tERROR: Erasing NOR failed.\r\n");
return E_FAIL;
}
// Write the application data to the flash
if (NOR_writeBytes( hNorInfo, baseAddress, appFileSize, (Uint32)(appPtr)) != E_PASS)
{
DEBUG_printString("\tERROR: Writing NOR failed.\r\n");
return E_FAIL;
}
// Verify memory contents
{
// temp: check flash mem
int i;
DEBUG_printString("Checking flash contents... ");
for (i = 0; i < appFileSize; i++)
{
if (*(Uint8 *)(LOCAL_norBase + i) != *(appPtr + i))
{
DEBUG_printString("Failed! (");
DEBUG_printHexInt(i);
DEBUG_printString(" bytes successful)\r\n");
//return E_FAIL;
}
}
DEBUG_printString("Passed! (");
DEBUG_printHexInt(appFileSize);
DEBUG_printString(" bytes)\r\n");
}
}
return E_PASS;
}
您好,
我所有程序都是在外部DDR跑的,其他程序跑起来很稳定,不过偶尔会出现仿真器连接后未停到main入口,概率很小。