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.

PROCESSOR-SDK-OMAPL138: OMAPL138 bootloader启动基于sysbios的应用程序出现跑飞

Part Number: PROCESSOR-SDK-OMAPL138
Other Parts Discussed in Thread: OMAP-L138, SYSBIOS

由于备份程序的需要,避免在线更新程序过程中断电导致程序不可运行的情况,我需要开发基于OMAPL138的bootloader,用的是创龙的开发板,自己根据OMAP-L138_FlashAndBootUtils_2_40中的UBL例程改写了boot程序,我的具体方案如下:

(1)boot程序支持串口烧录,支持从nand中启动;

(2)boot程序放在0x8000000开头的shared ram中运行,应用程序在boot的过程中从nand flash拷贝到DDR上运行;

(3)boot程序通过TI提供的AISGen工具生成固件,应用程序生成AIS格式的bin文件或者是hex文件;

目前的情况是,boot程序已经能够解析存储在nand flash中的AIS格式的bin文件或者是hex文件,用一个GPIO控制灯闪烁的程序烧录到nand flash中,可以正常boot并跳转到app程序中运行。但是当运用程序使用到sysbios系统时,程序跳转之后会出现跑飞的情况(刚跳转过去后PC指针指向的地址是正确的,后面会出现跑飞的情况),请问有没有人出现过类似的情况?是什么情况会导致跑飞,或者说boot基于sysbios的应用程序是否需要进行特殊的设置?还有就是如何定位程序是在哪跑飞的?

目前我个人比较怀疑的点有两个:(1)boot程序和应用程序地址上有冲突,但目前两个程序完全是在两块不同的地址上运行的;(2)boot完成后,在跳转到sysbios的应用程序前是否需要进行特殊的初始化

这个问题已经困扰我好久了,希望做过相关内容的朋友帮忙定位一下问题,不胜感谢!

  • 刚跳转过去后PC指针指向的地址是正确的

    请问是已经能够指向应用程序的入口地址部分吗?

    boot完成后,在跳转到sysbios的应用程序前是否需要进行特殊的初始化

    不需要特殊初始化。

  • Nancy,是的,能够指向应用程序的入口地址,跳转的时候单步执行后能够看到PC指针指向了正确的入口地址上,但是似乎在sysbios的一些初始化的地方跑飞了,所以目前一直在找有没有可能是image的生成或者解析部分有问题,请问您这边有什么debug的建议吗?

  • 按照以下方式调试一下boot代码看看,同时配合ROV工具分析看看。

    Load Symbols" instead of "Load Program"

    When debugging an application from flash, you want to let the application boot in its normal manner. If you select "load program" in CCS then you are overwriting the application that loaded from flash and not debugging the code as it runs normally. You should instead do "load symbols" in CCS and then select your .out file. This will allow you to debug your code using variable/function names without overwriting the code that boots from the flash.
    CCS 3.3: Go to File -> Load Symbols -> Load Symbols Only
    CCS 4.x: Right-click on the project and select Debug Options. On the "Debugger" tab choose "Load Symbols" instead of "Load Program"
    CCS 5.x: In the "Debug View" tab choose "Run"--> "Load" --> "Load Symbols"

    software-dl.ti.com/.../rov.html