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.

[参考译文] TM4C123GE6PM:首次刷写微控制器后无法刷写

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1311551/tm4c123ge6pm-unable-to-flash-micro-after-the-first-time

器件型号:TM4C123GE6PM
主题中讨论的其他器件:TM4C123GH6PM、EK-TM4C123GXL

您好!

我遇到的一个问题是、在定制电路板上首次刷写微控制器后、我既无法进行调试、也无法再次对其进行编程。  

我正在使用 TI-RTOS (2_16_00_08)、我已经 通过两种方式创建了工程、以确定是否有任何不同、但遗憾的是、结果是一样的。

一种方法是 从 Resource Explorer 导入示例并将其修改到我选择的微控制器中。 这些示例是针对 TM4C123GH6PM 的、因此我更改了项目属性的常规选项卡中的器件和链接器命令(更改为我正在使用 TM4C123GE6PM 的微控制器命令)以及 XDCtools 选项卡中的标志。  

另一种方法是为所选器件从头开始创建工程、选择空 RTSC 工程选项、在 XDCtools 平台选项(ti.platforms.tiva:TM4C123GE6PM)中选择合适的链接器命令文件和正确的平台。 在创建一个新的.cfg 文件、导入我的代码并正确编译后、我得到了相同的结果。 我可以使微控制器闪烁一次、但再尝试一次后、我收到错误。 我再次访问微控制器的唯一方法是使用 LM 闪存编程器并完成调试端口解锁。 显然、这是临时解决方案。

显然有些事情是不对的、我一直无法弄清楚它是什么。 非常感谢您对此提供的帮助。

此致!

阿尔贝托。  

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

    您好!

     您的屏幕截图显示您甚至无法连接到目标设备。 我认为不是软件的问题。 您可以在 LaunchPad 上轻松尝试相同的示例。 该屏幕截图还显示您使用的是 Stellaris ICDI 调试探针。 您如何使用 ICDI 调试探针以及从何处获得它? 是否使用 LaunchPad 作为 ICDI 调试探针来调试定制板? 您是否有可测试定制电路板的独立调试探针? 我通常会向客户建议使用 XDS110和 XDS200等低成本探针。  

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

    尊敬的 Charles:

    我能够首次连接到目标器件。 然后我可以对它进行编程、但在第一次刷写它之后、如果我尝试再次对它进行编程、我会收到该错误消息。 我将使用 EK-TM4C123GXL 作为调试探针来刷写目标器件、我也使用了 XDS110、结果是相同的。 问题不是调试器/编程器。  

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

    您能否加载一个简单的示例、例如闪烁或 Hello? 第一次成功闪烁后、您是否看到同样的问题? 我想知道它是否依赖于软件。 请尝试使用 XDS110代替 EK-TM4C123GXL 来调试您的自定义板、直到我们缩小问题原因的范围。  

    请尝试这些示例、看看您是否可以对其重复编程。  

    您可以在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\blinky 中找到示例

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\hello

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

    您推荐的示例适用于随 TM4C123GH6PM 配套提供的 LaunchPad。 我正在定制电路板中使用的器件是 TM4C123GE6PM。 我尝试了闪烁示例(使用 tivac 库的示例)、针对我的器件进行了修改、能够对电路板进行多次编程、而不会出现任何问题。  

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

    但是、当我从头开始使用 RTSC 工程(TI-RTOS)、或从 Resource Explorer 中取示例并修改器件以匹配我的器件时、我会遇到问题  

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

    TM4C123GE6PM 和 TM4C123GH6PM 在外设和引脚排列方面相同。 唯一的区别是  TM4C123GE6PM 只有128KB 的闪存、而 TM4C123GH6PM 上只有256KB 的闪存 。 您应该能够使用任何 TI-RTOS 示例并将其加载到您的器件中。 如果您原样使用 TI-RTOS 库存示例而未进行修改、您看到问题了吗? 任何示例都不会占用大于128KB 的存储空间。  

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

    处理器之间的差异是正确的。 正如我之前提到的、我尝试使用这两个器件编译项目、以排除这种可能性。 正如我所解释的、您建议的示例使用 Tiva C 库、它们可以在我的定制板上正常工作。 使用 TI-RTOS 示例时 、它们会附带特定于所使用板的文件。 默认情况下、这些服务随附 EK-TM4C123GXL.h 和  EK-TM4C123GXL.c (因为它的目标是 LaunchPad)。 这个文件包含外设、初始化等的配置。 由于我有一个定制板、因此我有这些文件的修改版本、用于声明与我的设计相对应的外设将用于哪些引脚等。 所有这一切即表明、具有 TIVAC 库的常见示例可以正常工作、但使用 TI-RTOS 时则不行。  

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

    换句话说、每次使用 TI-RTOS 并对电路板进行编程时、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此文件包含外设配置、初始化等。 由于我有一个定制板、因此我有这些文件的修改版本、用于声明与我的设计相对应的外设将用于哪些引脚等。 所有这一切即表明、具有 TIVAC 库的常见示例可以正常工作、但使用 TI-RTOS 时则不行。  [/报价]

    您好!

     我还不知道哪里出了问题。 您能准确显示所做的更改吗?

     如果您参考一个库存的 TI-RTOS 示例(针对 EK-TM4C123GXL 板的示例)并将.out 加载到您的定制板中、您还没有回答我的问题?它是否起作用?

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

    如果我加载一个目标为  EK-TM4C123GXL 的 Stock .out、它仍然会锁定。

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

    这当然非常奇怪。 如前所述、TM4C123GE6PM 和 TM4C123GH6PM 之间的唯一区别在于闪存大小。 其他一切都是相同的。 我无法镜像库存 TI-RTOS 示例在  TM4C123GE6PM 上不起作用。  

     您能告诉我:

     -有多少定制板,你看到了这个问题? 所有这些都只包含一个?

     -你用的例子是什么?  

     -您使用的示例是使用 LaunchPad 上可用的某些引脚,但在您的定制板上这些引脚可能会连接到低电平或高电平,或者连接到您板上的某些其他组件? 换句话说、我想知道是否存在某种类型的驱动器冲突。  

     -您可以尝试附加的 hello.out 文件吗? 此示例不使用任何引脚、仅在控制台窗口中打印"Hello "。  

    e2e.ti.com/.../hello_5F00_EK_5F00_TM4C123GXL_5F00_TI.out

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

    到目前为止、我已在3个电路板中尝试过。 结果相同。 我使用了几个示例(GPIO、hello world、blinky 等)、所有示例都具有相同的结果。 此外、可以更改 GPIO、以匹配我在文件 EK-TM4C123GXL.h 和.c 中的设计、正如我在上一篇文章中所述。 这似乎不是问题。

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

    好的。 我的想法有点过时了。 我想所有这些示例都可以在 LaunchPad 上运行、对吗?

    以下是我目前为止收集的数据点。 如果有任何一个问题不正确、请更正我。  

    -定制电路板可与非 TI-RTOS 示例(例如 TivaWare SDK 示例)配合使用。  

    -在未加载修改的情况下、自定义电路板无法对库存 TI-RTOS 示例进行编程和第二次连接。

    -相同的 TI-RTOS 示例适用于您的 LaunchPad。

    我能想到的唯一一件事是进行 ABA 交换测试。 您可以将  LP  上的 TM4C123GH6PM 更换为您的定制板、将定制板上的 TM4C123GE6PM 更换为 LP。 结果是什么? 我想不出任何其他建议,因为我过去没有遇到过这样的问题。  

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

    还有一个问题。 您是否在使用晶体和 MOSC?  

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

    您收集的数据点都是正确的。

    我把注意力转向了另一个正面。 在定制板中、我没有使用外部晶体/振荡器。 基本原理是器件具有内部振荡器 PIOSC (16 MHz)、因此不必提供主振荡器的外部源。 对于 RTC、仅当使用休眠模块时才需要32.768 kHz 的外部振荡器、我假设不需要该模块。 您是否认为这可能会出于某种奇怪的原因让 TI-RTOS 坚果?

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

    我认为这可能是原因。 TI-RTOS 使用 MOSC 作为源时钟来生成系统时钟。 由于您使用了 PIOSC、因此它无法在第二次加载第二个程序、因为您正在运行的程序需要一个功能正常的 MOSC。 我 想如果您运行使用 MOSC 生成 SYSCLK 的 TivaWare SDK 示例、您将会遇到相同的问题。 为什么不尝试 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\hello。 它包含基于 MOSC 配置 SYSCLK 的以下代码片段。  

    int
    main(void)
    {
        //volatile uint32_t ui32Loop;
    
        //
        // Enable lazy stacking for interrupt handlers.  This allows floating-point
        // instructions to be used within interrupt handlers, but at the expense of
        // extra stack usage.
        //
        MAP_FPULazyStackingEnable();
    
        //
        // Set the clocking to run directly from the crystal.
        //
        MAP_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
                           SYSCTL_OSC_MAIN);
    
        //
        // Enable the GPIO port that is used for the on-board LED.
        //
        MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    

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

    这正是正在发生的情况。 如果我按原样加载.out、我会遇到同样的问题。 如果我将时钟源更改为 SYSCTL_OSC_INT、则问题可以解决。  我在.cfg 中查看了是否可以使 TI-RTOS 使用 PIOSC、但似乎是无法做到的。 您是否知道实现此目标的方法、或者是否必须搭配 TI-RTOS 使用外部振荡器?  

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

    我还在寻找一种手动更改为 PIOSC 的方法。 请参见下方的。 使用 XCONF 调出.cfg。 在 Available Products (可用产品)中、搜索 Boot (引导)。 然后、您可以选择 PIOSC 并禁用 MOSC。  

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

    可以使用! 谢谢查尔斯!!