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.

[参考译文] RTOS/TM4C1294NCPDT:对 TM4C 进行编程

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/637066/rtos-tm4c1294ncpdt-programming-the-tm4c

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

您好!

我想了解微控制器在编程后如何保留应用程序代码
(通过 FTDI 或 JTAG 接口?)

谢谢、

Priya

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

    代码编程完成后、它存储在闪存中。 闪存是非易失性存储器、这意味着即使在断电后也能保留存储器的内容。 这是您的问题吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查尔斯
    定制板可通过 JTAG 接口和 UART 串行端口(FTDI 接口)
    进行编程。 如果使用 UART 接口、是否可以对芯片进行重新编程? MCU 已锁定、然后
    我们无法通过 FTDI 接口擦除闪存、这可以通过 JTAG 来完成
    LM 闪存编程器。

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

    Priya、

     您说什么它被锁定了? 您使用的是基于 ROM 的 UART 引导加载程序还是基于闪存的 UART 引导加载程序?

     您可以配置 BOOTCFG 寄存器、以便引导加载程序在指定的 GIO 引脚状态发生变化时下载应用固件。 有关详细信息、请参阅数据表。

    寄存器68:引导配置寄存器(BOOTCFG)、偏移量0x1D0

    注意:偏移量是相对于0x400F.E000的系统控制基址而言的。

    注意:引导配置(BOOTCFG)寄存器要求在提交前进行一个 POR

    更改生效。

    该寄存器不是直接写入的、而是使用 FMD 寄存器、如"非易失性"中所述

    寄存器编程—Flash 存储器驻留寄存器”。 该寄存器的值

    确认后、在下电上电之前无法读回新值。 该寄存器提供的值

    配置 GPIO 引脚以启用 ROM 引导加载程序、以及一次性写入机制

    禁用外部调试器对器件的访问。 复位时、用户有机会引导

    内核来执行 ROM 引导加载程序或使用任何 GPIO 信号执行闪存存储器中的应用程序

    从端口 A 到端口 H、由该寄存器中的位进行配置。 复位时、以下序列

    已执行:

    读取 BOOTCFG 寄存器。 如果 EN 位被清零、那么执行 ROM 引导装载程序。

    2.在 ROM 引导装载程序中、将指定 GPIO 管脚的状态与指定的进行比较

    极性。 如果状态与指定的极性匹配、那么 ROM 被映射到地址0x0000.0000

    并且继续执行 ROM 引导加载程序。

    如果 EN 位被置位或者状态与指定的极性不匹配、则地址上的数据

    读取0x0000.0004、如果这个地址上的数据是0xFFFF.FFFF、那么 ROM 被映射到

    地址0x0000.0000并继续执行 ROM 引导加载程序。

    4、如果地址0x0000.0004处的数据不是0xFFFF.FFFF、堆栈指针(SP)将被装载

    从地址0x0000.0000处的 Flash 存储器加载程序计数器(PC)

    地址0x0000.0004。 用户应用程序开始执行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查尔斯
    我不知道引导加载程序代码的具体细节、我没有该固件。 使用 FTDI 接口、可以在 TM4C 板上下载 Stellaris 固件。 这是否会对电路板造成永久损坏? 电路板不会在 FTDI 接口上重新编程。 使用 JTAG 对其进行了重新编程。 该板不响应自定义应用。 这是过去的事情。 加载了新版本的 TM4C 固件;对应用程序无响应、加载了 Stellaris 固件、旧版本的 TM4C 固件、再次对应用程序无响应。
    谢谢、
    Priya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Priya、
    我想我对您的器件上的调试探针有点困惑。 一方面、您讨论 JTAG、另一方面、您讨论 FTDI。 通常、FTDI 用作 USB 转 JTAG 和/或 USB 转 UART 转换器。 我认为您有定制板、对吧? 您的电路板使用了什么基于 JTAG 的调试探针? 您说过您正在通过 UART 串行端口使用 FTDI 接口来下载代码。 当我问您是否正在使用 UART 引导加载程序时、您说"否" 这是我感到困惑的地方。 如果您没有运行基于闪存的引导加载程序、则如何通过 UART 端口下载代码? 或者、您是否正在使用 TM4C 芯片附带的基于 ROM 的引导加载程序? 在任何情况下、您的问题都是如何通过 UART 再次对闪存进行编程/擦除。 我先前的回答是、如果您可以通过配置 BOOTCFG 指示引导加载程序更新固件、以便即使闪存已包含您的旧固件、也可以使用 GPIO 引脚启动固件更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    两个探针均尝试对电路板进行编程。 FTDI 探针与内部固件编程工具配合使用、其中必须包含引导加载程序代码、我可以在星期一找到。 这个组合已经被用于对已经在生产中的 Stellaris 定制板进行编程。 它还可以在过去成功地对一个版本的 TM4C 固件进行编程。

    新定制板具有 TM4C。 错误的情况下、使用 FTDI 接口将 Stellaris 代码编程到 TM4C 定制板中。 这是否可能会损坏电路板? 如果您回答此问题、将会大有帮助。 FTDI 引脚在 Stellaris 和 TM4C 之间进行混合。

    JTAG 接口连接器由跳线与一个过时的调试板连接在一起、这是为了解决编程问题。 当 FTDI 接口不再进行编程时、这有助于成功地对电路板进行编程。 但是、定制板不会使用任一编程方法对应用做出响应。

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

    [引述 USER="Priya Nadathur]*错误地说、FTDI 接口被用来将 Stellaris 代码编程到 TM4C 定制板中。 这是否可能会损坏电路板?[/引述]

    您说您已将 Stellaris 代码编程到 TM4C 器件中、对吧? Stellaris 和 TM4C 不兼容。 我不知道您的 Stellaris 代码是什么? 就电路板的物理损坏而言、我希望情况并非如此。 但它是否会使器件砖型、这是可能的、也不能排除。 例如、您的 Stellaris 代码以某种方式混淆了 TM4C 时钟配置、导致频率超出规格。  

    [引用 USER="Priya Nadathur"] FTDI 引脚在 Stellaris 和 TM4C 之间混合使用。

    您能详细说明吗? 您的意思是将 FTDI 引脚混合在一起?  

    总之、您是否只有一个电路板有问题、而所有其他电路板都正常?

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

    查尔斯

    感谢你的答复。 我现在没有前面的原理图、但我认为是 FTDI Rx

    和 TX 引脚在 Stellaris 和 TM4C 之间的顺序不同。 Stellaris 的系统时钟为

    80MHz 和 TM4C 120MHz。 目前只有一个 TM4C 板可用、但还有更多

    已订购。如果此板上的 MCU 出现故障、则可以更换。 如果您还有其他信息、请告诉我

    注释。

    谢谢、

    Priya