目标硬件:TMS320C6747+16C654+M25P16(SPI1)
IDE:CCS6.2和CCS5.5,pspdrivers_01_30_01(仅使用了里面的CSLR)
用户程序:
1)自定义UBL,运行于0x80000000(SHRAM),由仿真器烧写在SPI_Flash的SECTOR0,上电后由ROM内置的bootldr启动运行;
2)基于SYS/BIOS的程序APP,运行于0x11800000(L2RAM),由IDE自带的C6000 Hex Utility转换为Intel格式的Hex文件,通过自定义UBL烧写在SPI_Flash的SECTOR1~SECTORn,上电后自定义UBL读取SPI_Flash中的Hex文件后跳转运行,APP入口地址_c_int00固定为0x11800000;
现象描述:
编写APP程序用于串口单元测试,运行后在6个串口上(DSP自身3个+16C654扩展3个)若2秒未输入则输出"Timeout @"+次数,否则输出"ACK="+所输入字符串,DEbug模式下通过JTAG调试正常,转换为hex后通过UBL烧写后断电再上电,UBL能够加载并运行该APP(可以接收到预期的字符串);设置为Release模式后,设置好所include的文件路径(CSLR),取消Debug所预定义的宏_DEBUG,编译并转换为hex通过UBL烧写后断电再上电,该APP未运行(串口输出停留在UBL的Loading..而并未输出"timeout"等预期字符串)。
另外,Debug和Release所使用C6000 Hex Utility参数均为 --memwidth=32 --order=L --romwidth=32 --intel,(通过IDE设置,在Summary of flags set中显示)。
问题:
因为UBL可以加载并运行多个程序,包括基于SYS/BIOS和裸机的,而现在碰到的问题是相同的程序Debug模式编译出来的可以加载运行而Release的不行(包括CCS5.5和CCS6.2),所以想请TI的工程师帮忙分析一下出现这个问题的原因是什么,通过什么样的手段去验证和解决。
多谢了。