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.

[参考译文] TM4C123GH6PM:Cortex_M4_0:连接到目标时出错

Guru**** 2473260 points
Other Parts Discussed in Thread: EK-TM4C123GXL, TM4C123GH6PM

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/680596/tm4c123gh6pm-cortex_m4_0-error-connecting-to-the-target

器件型号:TM4C123GH6PM
Thread 中讨论的其他器件:EK-TM4C123GXL

大家好、

我尝试在 EK-TM4C123GXL 板上构建并运行一个简单的程序(我已附加项目文件)、并得到以下错误:

Cortex_M4_0:目标 CPU 停止时出现故障
Cortex_M4_0:20次尝试后无法确定目标状态
Cortex_M4_0:在断开连接之前无法从目标中删除调试状态。
程序存储器中仍可能嵌入了断点运算代码。
建议您在连接之前重置仿真器、并在继续调试之前重新加载程序。

我关闭了调试窗口、并尝试再次运行、但我现在收到连接到目标消息的错误消息。 我尝试了2个评估板(EK-TM4C123GXL)、它们都发生了同样的情况。

现在我无法在电路板上运行任何项目、我会收到每个项目的连接错误。 能不能有人对此进行研究并提出确切的问题。

CCS 版本:7.4.0.00015
评估套件- EK-TM4C123GXL

链接器命令文件的内容:

/*********
*
*德州仪器 TM4C123GH6PM 的默认链接器命令文件
*
*这是从 TivaWare 库的修订版15071衍生而来的。
*
(小部分 /

--retain=g_pfnVectors

存储器

闪存(RX):origin = 0x00000000,length = 0x00040000
SRAM (rwx):origin = 0x20000000,length = 0x00008000

/*以下命令行选项作为 CCS 项目的一部分进行设置。 *
/*如果您使用命令行构建,或者出于某种原因想要*/
/*在此处定义它们,您可以根据需要取消注释并修改这些行。 *
/*如果您使用 CCS 进行构建、最好进行任何这样的构建*/
/*对 CCS 项目进行修改并将此文件保留为单独文件。 *
/**//
/*--heap_size=0 */
/*--stack_size=256 */
/*--library=rtsv7M4_T_le_eabi.lib */

/*内存中的段分配*/

部分

.intvecs:> 0x00000000
.text:> FLASH
.const:> FLASH
.cinit:>闪存
.pinit:> FLASH
init_array:> FLASH

.vtable:>0x20000000
.data :> SRAM
.bss:> SRAM
.sysmem:> SRAM
.stack:> SRAM

__STACK_TOP =__STACK + 512;

/

e2e.ti.com/.../5008.main.ce2e.ti.com/.../3441.tm4c123gh6pm_5F00_startup_5F00_ccs.c

此致、
Naveen Kori

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

    我的朋友-虽然员工/我 "感受你的痛苦"-其中一些 "感觉" 已经被淡化了-因为你 "创造了-然后摄入了-你自己的野牛!"

    请允许我注意到,你决定采用(总是)令人不安的 "DRM"(直接登记册操纵),要么是选任的,要么是强迫你作出的。 (即过时、低效、容易出错)编程方法。  您的大多数研究员-使用 DRM -"分享您不幸的命运"。   (但"反复声称"- DRM (不知怎么)"帮助他们学习!")   如果 "到达海岸"-(勉强)和"沉船"之后-符合"学习"-那么 DRM (可能)已经成功了。   "API"提供了更加热情的服务-(即更安全和干燥机) - "到达港"。

    因此、使用"DRM"作为您的"Poison"-但不知怎么说、您 "不得不接受它"。   和-您的代码(5008.main.c)显示:

    GPIO_PORTC_DEN_R |= 0x0C0;
    GPIO_PORTC_AFSEL_R |= 0x0C0;
    GPIO_PORTC_PCTL_R = GPIO_PCTL_PC7_U3TX | GPIO_PCTL_PC6_U3RX;

    注意您是如何"保守和安全"的-在前个程序行中。   (尽管-我的胃转向-查看 DRM)   、 "安全"是您(小心) "或"正在"新值导致的-至端口 C

    然而,"安全"不是那么早。 “突然放弃——在第3行中被踢得很粗暴地踢到路边”?   您不再(小心/安全地) "或"接受"您的新价值-您残酷地 "强行"您的新价值。    并且-在这个(令人愉快的)过程中、 "(很可能) -会使您的 JTAG 功能丧失!"

    这就证明了这一点-如 JTAG 引脚(PC0-PC3)-要求"GPIOPCTL"保持"0x1"-您可能会通过"分配"而不是(更安全) "或"...

    为什么您选择了(始终)风险的"DRM"——尤其是在“久经考验、广泛的、"API"…… 站在准备好的位置-邀请您使用?   而不是"增强学习"-可能是大量(和不必要的)过度强调的"通过一个不断增加的寄存器及其32位进行组合"会使你的感官受到冲击?"   这样、您就错过了端口 C (JTAG 端口)所需的重要处理。

    据信、您使用"闪存编程器"(可能)可以恢复 您的 MCU 板的"两个"。   论坛的"搜索框"(在本页顶部)应该会显示"数百名"成功恢复了开发板-其中许多(同样失败的 DRM 用户)"、因此存在(一些)希望。

    您的问题的"根本原因"不是"大量过度参与"(事实证明这会耗尽)、并使用户偏离"正确观察关键 MCU 指南"?   API 解决了这一问题、而您 的"回归群"最能确保您的未来成功...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢 CB1_MOBILE 指出了我的错误、我非常感谢您(宝贵的)抽出时间做出这样(有说服力)的回应。
    我通过 LM 闪存编程器解锁了我的两个器件、它们现在工作正常。 从现在开始、我将改用(更安全) API。

    我还想知道、通过使用 DRM 而不是 API、存储器利用率是否会有任何提高?

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

    我的朋友也非常感谢您、并祝贺您准备好接受" 更好的方法"的价值。   

    事实上、有时(或)"DRM 或 ASM"实现了某些优势、但这些优势却可以实现、 成本高昂!   

    其中一些"成本"包括:

    • 代码开发时间大幅增加
    • "已知良好"的数量大大减少(即几乎减少100%)-预先编写-供应商提供、代码示例
    • 代码的可读性损失-即使在(仅限)几天的代码开发和编写 已经过去 (由于 DRM/ASM 的高加密性)
    • 大大减少了那些"愿意/有能力"提供援助的人的数量 (因为有必要  为"有文化的人"进行"更多的时间和精力投资")

    因此、那些考虑"使用 DRM/asm "(可能)的人最好在以下情况下这样做(仅限):

    • 实现了明确(即经证实)的"更快的代码执行"-并增加了关键/关键值
    • 实现了同样清晰/经实践检验的"内存占用空间减少"、并且 (也是)增加了关键/关键价值。   请记住、在这方面、现代编译器显著降低了"DRM/ASM"的优势

    在过去的几年中-这种"对抗"代码速度、减少内存使用(可能) "有意义"。   这种情况-现在最常见-"已经离开了大楼!"