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.

[参考译文] CCS/CCSTUDIO-C2000:使用 loadti 运行.outs

Guru**** 2081500 points
Other Parts Discussed in Thread: TMS320F2812
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/758081/ccs-ccstudio-c2000-running-outs-using-loadti

器件型号:CCSTUDIO-C2000

工具/软件:Code Composer Studio

您好!

我使用 loadti 脚本从命令行加载和运行.outs。 但是、我看到脚本永远不会退出(除非我使用 Ctrl+C 强制退出)。

我的主代码不在无限循环中、并且在主函数完成时、代码会卡在作为 EXIT 函数一部分的 ABORT 函数中用于循环。

如何使用脚本以便在脚本到达 EXIT/ABORT 时退出?

谢谢、

Veena

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Veena Kamath">我使用 loadti 脚本从命令行加载和运行.outs。 但是、我看到脚本永远不会退出(除非我使用 Ctrl+C 强制退出)。程序是否从 C2000器件上的闪存运行并使用 CIO?

    查看一些执行 printf()然后从 main 返回的示例程序:

    Cortex-A8程序生成 CIO 输出、然后正常退出:

    ~/ti/ccs830/ccsv8/ccs_base/scripting/examples/loadti/loadti.sh -c targetConfigs/BeagleBone_Black.ccxml Debug/AM3359_struct_padding.out
    
    ***** DSS 通用加载程序*****
    
    开始:11:04:08 GMT-0000 (GMT)
    
    为指定目标配置调试服务器...
    目标完成
    :Blackhawk USB560-M 仿真器、20引脚 JTAG 电缆
    连接至目标...
    
    
    testEnv.outFiles:Debug/AM3359_struct_padding.out
    加载调试/AM3359_struct_padding.out
    已完成
    目标正在运行...
    中断以中止。 。 。
    sizeof (nopack)=6
    &nopack.stX=0x40305948
    &nopack.pktlen=0x4030594a
    &nopack.pid=0x4030594c
    sizeof (packed)=4
    &pid packed.stX=0x40305950
    &packed.pktlen=0x40305951 &gMT
    
    正常完成周期数:0x40305904
    
    :0x1504:0x5414:gmced.04:0x40553&gm=0x40553&gm=0x40553&gm=0x40553&g
    

    与最小 loadti 参数一起使用时、闪存中的 C2000程序不会生成 CIO 输出、并且在与 Ctrl-C 终止之前不会退出:

    ~/ti/ccs830/ccsv8/ccs_base/scripting/examples/loadti/loadti.sh -c targetConfigs/TMS320F28027.ccxml Debug/TMS320F28027_printf.out
    
    ***** DSS 通用加载程序*****
    
    开始:11:25:41 GMT-0000 (GMT)
    
    为指定目标配置调试服务器...
    目标完成
    :德州仪器 XDS100v1 USB 调试探针
    连接到目标...
    testEnv.outFiles:Debug/TMS320F28027_printf.out
    加载调试/TMS320F28027_printf.out
    已完成
    目标正在运行...
    中断以中止。 。 。
    ^C 

    如果使用--no-profile loadti 选项,则程序会报告 CIO 输出,但仍必须使用 Ctrl-C 终止:

    ~/ti/ccs830/ccsv8/ccs_base/scripting/examples/loadti/loadti.sh --no-profile -c targetConfigs/TMS320F28027.ccxml Debug/TMS320F28027_printf.out
    
    ***** DSS 通用加载程序*****
    
    开始:11:27:56 GMT-0000 (GMT)
    
    为指定目标配置调试服务器...
    目标完成
    :德州仪器 XDS100v1 USB 调试探针
    连接到目标...
    testEnv.outFiles:Debug/TMS320F28027_printf.out
    加载调试/TMS320F28027_printf.out
    已完成
    目标正在运行...
    中断以中止。 。 。
    foo 为:1
    foo 为:2
    ^C 

    我认为问题是 C2000器件只有两个用于支持硬件断点/配置文件时钟的 AET 资源。

    如果使用 loadti --no-profile 选项(阻止 loadti 为配置文件时钟使用一个 AET 资源),是否允许脚本正常退出?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    程序从 RAM 运行、而不是从闪存运行。 它使用 printf 函数来打印一些结果。

    除了.out 和目标 CCXML 之外、我没有使用任何其他参数来访问 loadti。

    谢谢、

    Veena

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Veena Kamath">该程序从 RAM 而不是闪存运行。 它使用 printf 函数来打印一些结果。

    除了.out 和目标 CCXML 之外、我没有使用任何其他参数来加载程序。[/quot]我可以使用 CCS 8.3加载程序和 TMS320F2812的程序来重复此操作、该程序在 RAM 中运行并使用 printf、因为该程序不会在 main 末尾终止。

    发现 loadti 使用默认调试属性。 对于 C28xx 目标、  ccsv8\ccs_base\DebugServer\propertyDB\PropertiesDB.xml 中的默认 AddCEXITbreakpointAfterLoad "Halt at program exit for TI 编译器(需要断点)"属性为 false。

    loadti 没有支持更改调试属性的命令行选项。 因此,创建了一个修改的版本, 其中 loadti\main.js 中的 run()函数被修改为在 debugSession.options.setString("FileIODefaultDirectory"、testEnv.fileIOFolder 之后插入以下内容;调用:

    //对于 C2800目标覆盖默认值、该默认值不会将断点设置为在退出
    debugSession.options.setBoolean("AddCEXITbreakpointAfterLoad"时停止、true); 

    使用此修改后的 loadti 脚本、在报告 printf 输出后、在 RAM 中运行的 TMS320F2818程序在完成时退出:

    C:\users\MR_半 字\workspace_v8\SPILED>loadti\loadti.bat -c targetConfigs\TMS320F2812.ccxml Debug\SpiLED.out*****
    
    DSS 通用加载程序*****
    
    开始:15:07:19 GMT-0000 (GMT)
    
    为指定目标配置调试服务器...
    目标完成
    :德州仪器 XDS100v2 USB 调试探针
    连接到目标...
    testEnv.outFiles:Debug\SpiLED.out
    Loading Debug\SpiLED.Out
    Done
    Target Running...
    中断以中止。 。 。
    LED = 1
    LED = 2
    LED = 3
    LED = 4
    LED = 5
    LED = 6
    LED = 7
    LED = 8
    LED = 9
    正常完成:545635636周期
    
    结束:15:07:42 GMT-0000 (GMT)