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.

SYS/BIOS的Release和Debug的区别?

Other Parts Discussed in Thread: TMS320C6747, SYSBIOS

目标硬件: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的工程师帮忙分析一下出现这个问题的原因是什么,通过什么样的手段去验证和解决。

多谢了。

  • 请问release模式能在仿真器模式下调通吗?

    release和debug的区别在于release去掉了调式信息,并对代码进行优化(-O3)。

  • 今天在ccs6.20下调试,设置为Release模式编译和下载.out后运行,异常退出(运行至exit.c的abort函数),控制台出现以下信息:

    [C674X_0] 8 B17=0x180010c
    B18=0x8000bfb3 B19=0x7fffffff
    B20=0xdcbd6498 B21=0xccfc11cd
    B22=0x7f1b64b8 B23=0xffff2f4b
    B24=0x349cd876 B25=0x110b19cd
    B26=0x0 B27=0xbe00be00
    B28=0xfbf2dff7 B29=0x1181da94
    B30=0x2 B31=0x1e26014
    NTSR=0x1000f
    ITSR=0xe
    IRP=0x11812020
    SSR=0x0
    AMR=0x0
    RILC=0x0
    ILC=0x0
    Exception at 0x0
    EFR=0x2 NRP=0x0
    Internal exception: IERR=0x1
    Instruction fetch exception
    ti.sysbios.family.c64p.Exception: line 256: E_exceptionMax: pc = 0x00000000, sp = 0x11819cc8.
    xdc.runtime.Error.raise: terminating execution

    操作系统:Windows 7 x64;

    IDE: CCS6.20 + XDS100v3

    SYS/BIOS: 6.46.5.55

    XDCtools : 3.32.1.22_core

  • 正在排除原因,不过现在看来应该和Debug或Release模式没关系;因为不启动16c654的单元测试task后,可以正常调试,UBL也可以正常加载和跳转运行;

    目前的信息看是16c654驱动代码某个地方的Event出现了NULL指针,但为什么在Debug下没有触发断言目前正在调试。

    无论如何,确实不是由于Debug和Release模式不同导致的,本帖结束,谢谢协助。