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/TM4C129ENCPDT:执行被自身终止

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/865519/ccs-tm4c129encpdt-execution-getting-terminated-by-itself

器件型号:TM4C129ENCPDT
主题中讨论的其他器件: SYSBIOSUNIFLASH

工具/软件:Code Composer Studio

大家好、

我正在使用 ti RTOS 2.16.1.14和 xDC 工具 v 3.32和 tm4c129encpdt 微控制器。

之前我使用的是 CCS6、现在我使用的是 CCS9.1

在此 CCS9.1中,当我开始调试时,程序会进入 abort()函数,从而给出一些例外,即:


错误:E_noIsr:ID = 88、PC = 00044ec4
FSR = 0x0000
HFSR = 0x40000000
DFSR = 0x00000000
MMAR = 0xe000ed34
BFAR = 0xe000ed38
AFSR = 0x00000000
正在终止执行...

当我检查 ROV>Hwi>Exception 并复制 SP、PC、ir 的值并将这些值放入 Registers > Core Registers > SP、PC、ir

我在这里的调试窗口中看到这是当前状态-


;===== TI_SYSBIOS_family_ARM_m3/Hwi_initStacks__E ===
;设置双堆栈
;仅在启用了任务处理时才调用
;否则,MSP =唯一的堆栈。
;MSP =处理程序(ISR 堆栈)
; PSP =线程(任务堆栈)

TI_SYSBIOS_family_ARM_m3/Hwi_initStacks__E:
asmfunc
按{LR}
R2夫人,xpsr
TST R2,#0xff;检查我们是否处于处理程序模式
Baq 1美元

;如果 CPU 在启动程序之前没有被复位,则在这里
;和最后一个
;程序在处理程序模式下停止。
;必须先解除处理程序模式
;配置控制寄存器

MOV R2、sp
Sub R2,#(8*4);为虚拟堆栈框腾出空间
MSR PSP、R2;更新 PSP
mvn lr、#2
STR r0、[R2、#0];在 ISR 堆栈上保存通过的 R0
MOV R1、#0x01000000;虚拟 xPSR、T 位被置位
STR R1、[R2、#28]
LDR R1、1美元地址
STR R1、[R2、#24];将 PC 退回到下面的$1
BX LR;从 ISR“返回”

1美元
弹出{LR}        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 调试显示了这一点。  
MOV R1、sp
MSR PSP、R1;PSP =任务堆栈
MSR MSP、r0;MSP = isrStack
MOV r0、#2
R1女士、CONTROL
MSR control,r0;立即拆分堆栈。

.if __TI_VFP_support__
LDR r0、fpccr;清除 APSEN 和 LSPEN
LDR R1,[r0];获取当前 fpccr
BIC R1、R1、#0xC0000000;清除高2位
STR R1,[R0];手动保存/恢复
.endif
BX LR;在 PSP 上返回

1美元地址
word 1美元

因此、基本而言 、ti_sysbios_family_arm_m3/hwi_initStacks__E 正在抛出错误。 我是对的吗?  

这是什么意思? 每次我的代码到达那里。  在 CCS6中没有发生任何类似的情况。 但为什么在 CCS9.1中呢? CCS6和 CCS9.1有哪些变化?

 帮我解决这个问题。

谢谢

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

    Akhilesh、

    您使用的是什么编译器? 您能否尝试使用您在旧版 CCS 中使用的相同版本或 TI-RTOS 发行说明中建议使用的版本。

    Todd

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

    Todd、

    使用 ccs9.1、编译器版本18.xx 可用。 我将使用此编译器版本。 在 ccs6中、我不记得太多、但编译器版本是5.6 (如果我不是错、也会检查)。

    这与编译器版本有关吗? 我还将检查"推荐"。

    还有一件事、我的复位矢量从0x10000开始。 我已经在配置文件中设置了它。 因为我还有引导加载程序。 当我使用 Uniflash、地址0处的引导加载程序和地址0x10000处的 program.bin 烧录这两种代码时、我会同时使用这两种方法。 但在调试模式下、代码从哪个地址刷写?

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

    Akhilesh、

    应用程序在较旧的 CCS 设置下是否正常工作? 如果是、我希望与较新的编译器不兼容。 我知道这方面有一些问题。  

    Todd

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

    [引用用户="Akhilesh Gangwar "]

    还有一件事、我的复位矢量从0x10000开始。 我已经在配置文件中设置了它。 因为我还有引导加载程序。 当我使用 Uniflash、地址0处的引导加载程序和地址0x10000处的 program.bin 烧录这两种代码时、我会同时使用这两种方法。 但在调试模式下、代码从哪个地址刷写?

    [/报价]

    Todd、您想对此发表评论吗? 这是否与误差有关?

    并且、  

    是、Todd、

    应用程序运行完全正常。 我们以前没有遇到过这样的问题。 这仅在 CCS9.1和 CCS9.2中发生。  

    CCS6和9这两个版本都有哪些更改?  

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

    在 CCS 中、您将以相同的方式刷写代码。

    您是否使用了旧版编译器?

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

    Todd、

    较旧的编译器意味着较旧的 CCS? 是的、工作正常。

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

    Todd、  

    我要附加2个图像。 在开始调试后、程序进入其他位置的两次时间(应转到主程序)。

    有时,它会在 BISOStart()调用时转到 abort()。 有时、它的运行也完全正常、完全没有任何例外。  

    此外、请参阅调试窗口。 如果您有任何发现、请告诉我。 我被卡住了。

    谢谢

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

    Akhilesh、

    请将旧版编译器安装到新 CCS 的 CCS\tools\compiler 目录中。 独立编译器可在上面我提供的链接中找到。 启动 CCS、然后在 Project Settings 中设置旧版编译器。  

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

    您好!

    我试过这个。 我遇到了同样的问题、但我的同事不再遇到这种例外情况。 我构建了 ti RTOS。 它会产生什么影响吗?

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

    [引用 user="Akhilesh Gangwar "]我构建了 ti rtos

    您能解释一下这是什么意思吗? 您是否在单独的项目中拥有内核? 如果是、您需要使用旧版编译器重新编译它。

    Todd

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

    我有单独的 TI RTOS、而不是单独的项目。 我在使用 CCS9.1时使用用户指南中提供的方法重新编译该代码。 我将尝试在使用旧编译器时进行重建、并将告知您。

    谢谢

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

    您好 Todd、

    我尝试使用旧编译器5.2.5重新编译 RTOS、使用这个-

    ..\xdctools_3_32_00_06_core\gmake.exe -f tirtos.mak all

    我收到该错误-

    C:\ti_tirtos_tivac_2_16_01_14>..\xdctools_3_32_00_06_core\gmake.exe -f .\tirtos.mak all
    正在生成 BIOS...
    gmake[1]:输入目录`c:/ti/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31
    正在构建 BIOS 软件包...
    C:\ti\xdctools_3_32_00_06_core\bin\stderr.exe:无法执行'echo "making"".interfaces:"因为:""无效""argain""c:\ti\xdctools_3_32_00_06_core\bin\stderr.exe:"不能执行"1-out"('status"")"1" '(退出状态=-1)、因为参数无效
    xdctools_3_32_00_06_core\gmake.exe:***[_startime]错误255
    gmaking[1]:***[全部]错误2.
    gmake[1]:离开目录`c:/ti/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31
    gmake:***[BIOS]错误2.

    已在 make 文件中指定了路径。 这到底是什么误差?

    谢谢

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

    Akhilesh、

    您不必重建 TI-RTOS 产品。 它是使用经过验证的版本创建的原始版本。 在重建应用程序时只需要较旧的编译器。 如果.cfg 是工程的一部分、则会重新编译必要的内核源文件。

    您说它是为同事工作的。 您能否比较两种设置之间的构建输出? 清洁并在上面进行构建。 将构建输出复制到文件并执行 BeyondCompare (或您最喜欢的 DIFF 工具)、然后查看差异。

    Todd

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

    您好 Todd、

    我将在他回来后进行比较。 我在使用 ccs9.2和编译器版本18.xxx 时重建了 ti RTOS。 现在、我将编译器版本更改为5.2.5。 我将向您提供有关此内容的最新信息。  

    谢谢

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

    您好 Todd、  

    我对文件系统 API 进行了一些更改、这就是我不得不重建 TI RTOS 组件的原因。 我必须再次对其进行重块化、并且我收到此错误。  

    C:\ti_tirtos_tivac_2_16_01_14>..\xdctools_3_32_00_06_core\gmake.exe -f .\tirtos.mak 所有
    构建 BIOS 的内容...
    gmake[1]:进入目录`c:/ti/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31
    构建 BIOS 程序包...
    C:\ti\xdctools_3_32_00_06_core\bin\stderr.exe:无法执行'echo "making"".interfaces:"因为:""无效""argain""c:\ti\xdctools_3_32_00_06_core\bin\stderr.exe:"不能执行"1-out"('status"")"1" '(退出状态=-1)是因为:无效参数
    xdctools_3_32_00_06_core\gmake.exe:***[_startime]错误255
    gmake[1]:***[All]错误2
    gmake[1]:正在离开目录`c:/ti/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31
    gmake:***[BIOS]错误2 

    所有路径都正确。 以前、我在构建时未遇到此错误。 可以帮助我解决这个问题吗?  

    谢谢

    Akhilesh

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

    Ahkilesh、

    您的路径中是否有另一个外壳? 众所周知、这会使使用 TI-RTOS 的命令行构建混乱。 您能否从命令提示符中执行"回显%path%"并查看您是否有其他路径。  

    Todd

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

    您好 Todd、

    这就是结果  

    C:\ti_tirtos_tivac_2_16_01_14>回波%path%
    C:\Program Files (x86)\CodeBlocks\MinGw\bin;C:\Program Files\Git\cmd;C:\ti\xdctools_3_32_00_06_core;"C:\Program Files (x86)\CodeBlocks\MinGwm\bin;C:\windows\System32\WBEM

    我 自己添加了这个 C:\ti\xdctools_3_32_00_06_core、只是为了检查某项功能是否正常。 它也在没有这个的情况下抛出了相同的错误。

    你指的是任何其他外壳? 我只是在 Windows 10上使用命令提示符。

    谢谢

    Akhilesh

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

    您是否可以作为实验移除 MinGW?

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

    Todd、

    我删除了它、它工作正常。 非常感谢。  可能发生了一些编译器问题。 您能解释一下这里发生了什么吗?

    Todd、我还需要1个帮助。 您能否回答此帖子?  https://e2e.ti.com/support/tools/ccs/f/81/t/868177  

    谢谢

    Akhilesh

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

    用于 TI-RTOS 配置的 MinGW 和 XDCtools 都自带版本的 Cygwin。 当这些版本不同时、可能会出现各种问题。 我之前没有看到过您看到的错误、因此我不确定该用例的确切机制、 但在其他一些用例中、将加载 Cygwin DLL 的两个不同版本、并且它们会破坏 Cygwin 为在不同进程之间共享而保留的资源、 或者、使用一个版本的 Cygwin 构建的可执行文件会调用 一个 API、该 API 在路径上的 DLL 版本中不可用。