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.

[参考译文] TM4C1294NCPDT:使用闪存更新固件

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1042770/tm4c1294ncpdt-using-the-flash-for-updating-the-firmware

器件型号:TM4C1294NCPDT

嗨、我目前正在研究一个项目、我们正在其中查看 MCU 的选项。
我 目前正在研究如何使用标题中的 MCU。 但是、我有一些问题想问、如果有人可以帮助我解决将闪存用作固件更新的引导加载程序的问题。

板载闪存具有4个存储器组、具有2个预缓冲器、并且是双向交错、因此目的是保留两个存储器组以保存新固件、直到完全下载、然后执行 CRS 等以检查内容。 之后、它要么被传输到另一半、要么系统将从新位置启动、旧固件将被删除、并更改这些组以保存下一个固件更新。 类似的东西。

我的问题如下:
如果我想更改闪存中的内容、需要将整个存储器组复制到 SRAM 中、更改需要更改的数据、然后再次覆盖该存储器组。 还是可以在闪存中更改任何地址的特定数据?

用于在正常运行时存储传入固件更新的闪存的一半可能会将该空间用于易失性数据、例如。 操作的数据记录。 或者是否需要将这些组保持在特定级别的代码保护中、以便从该组引导固件?

如果这是处理固件更新的方式、TI DFU 模式是否有用?

最后、我想问、是否有人在该芯片上的闪存重写编号上有任何数据。 因为我无法找到有关特定闪存的信息。

感谢您的帮助。

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

    尊敬的 David:

    [引用 userid="5007761" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1042770/tm4c1294ncpdt-using-the-flash-for-updating-the-firmware ]\n 我的问题如下:
    如果我想更改闪存中的内容、需要将整个存储器组复制到 SRAM 中、更改需要更改的数据、然后再次覆盖该存储器组。 或者是否可以在闪存中更改任何地址的特定数据?

    闪存不同于 EEPROM。 您必须先执行闪存擦除、然后才能将新数据写入闪存。 换言之、闪存引导加载程序将为您提供。 在使用新固件更新闪存之前、它将首先擦除闪存中的应用固件。 有关更多详细信息、请参阅引导加载程序用户指南。 https://www.ti.com/lit/pdf/spmu301 TivaWare 库中提供了大量引导加载程序示例。 我建议您从 boot_serial (这是一个基于闪存的引导加载程序)开始、从0x0和 boot_dem1开始(这是一个由引导加载程序通过 UART 接口在0x4000处加载的应用示例)。  

    [引用 userid="500761" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1042770/tm4c1294ncpdt-using-the-flash-for-updating-the-firmware ]\n 正常运行时用于存储传入固件更新的闪存的一半可能会将该空间用于易失性数据、例如。 操作的数据记录。 或者是否需要将这些组保持在特定的代码保护级别、以便从该组引导固件?

    虽然您可以使用内部闪存存储易失性数据、但对于数据记录、我建议您使用片上 EEPROM。 EEPROM 大小为6KB。 EEPROM 用于数据记录。 它具有内置状态机、可处理磨损矫正、从而实现较高的写入寿命。 有关详细信息、请参阅以下摘录或数据表。  

     

    [引用 userid="500761" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1042770/tm4c1294ncpdt-using-the-flash-for-updating-the-firmware "]

    如果这是处理固件更新的方式、TI DFU 模式是否有用?

    [/报价]

     有多个通信接口可用于固件更新。 USB DFU 就是其中之一。 您还可以使用 UART、SPI、I2C、CAN 和以太网来引导加载/更新固件。 请参阅 boot_demo_USB 示例。 BOOT_DEMO_USB 是一个简单的 USB 应用示例、它将变为 DFU 类、允许 USB 主机下载新的软件映像。   

    [引用 userid="500761" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1042770/tm4c1294ncpdt-using-the-flash-for-updating-the-firmware。]最后、我想问是否有人有关于此芯片上闪存重写编号的任何数据。 因为我无法找到有关特定闪存的信息。[/quot]

    数据表中显示了这种情况。  

      

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

    谢谢、这澄清了一些问题。