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**** 1079480 points
Other Parts Discussed in Thread: TM4C1294NCPDT
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/654914/tm4c1294ncpdt-error-during-interrupt-based-flash-programming

器件型号:

团队、

我的客户在 新项目中使用 TM4C1294NCPDT。 为了重新配置配置配置值、需要在运行时对少量闪存进行重新编程。 读取配置数据并将其放入 RAM 中进行修改。 之后、数据被写回闪存。

他们希望使用基于中断的闪存编程例程、因为轮询需要太长的时间、但他们有时会遇到故障、就好像他们会访问当前正在编程的闪存(故障 ISR)一样。 轮询模式工作正常。

您是否有任何建议或示例可以演示基于中断的闪存编程?
如果您需要更多信息、请告诉我。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 Flash 存储器操作(写入、页擦除或整体擦除)期间、禁止对 Flash 存储器的访问。 因此、指令和字面量取指令被保持在闪存存储器操作完成前。 因此、除非器件在 RAM 中执行、否则器件不会执行、直到程序操作完成。 它们在对闪存进行编程时是否从 RAM 执行? 如果是、您能否提供故障的详细信息?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的快速回复 Bob!
    我会回来提供客户反馈。

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

    感谢 Bob、以下是更多详细信息:

    不可以、我们在对闪存进行编程时不从 RAM 执行。  根据我们的理解、我们可以在对其他扇区进行编程的同时从闪存的某些扇区执行。 我们的应用占用的 RAM 小于或小于128kByte (0x0000...0x1FFFF),然后是一些当前未使用的闪存,然后是具有固定校准数据(0x80000...bbffff)的巨大区域,在常规模式下没有改变,最后我们在闪存0xc0000...的上部16KB 中有一些配置数据。 0xfffffff)、需要不时对其进行重新编程。 我们相信(!)  我们在固件中进行了一些保护、在重新编程该扇区时、我们不会尝试访问配置数据。 实际上,我们在开始擦除该上部扇区之前设置了一个“忙”标志,并在编程该上部闪存扇区的最后一页之后清除该标志。 我们认为、在访问配置数据之前、我们会查询此忙标志。 我们偶尔会由于闪存编程尝试而崩溃。 我99%确信,中断会在不查询此忙标志的情况下尝试访问配置数据,或者外部控制软件会在上一个编程周期真正完成之前尝试重新编程此配置数据。 它在很大程度上看起来像是我们的固件问题。 但是、我们没有看到任何示例程序、也没有 像我们那样使用中断功能对 TIVAWARE( 在擦除和重新编程配置数据时必须有某些功能,因此我们不想像 TIVARE 那样在轮询环路中等待)。 这就是我们询问中断模式下闪存擦除和编程是否存在已知问题的原因。

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

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

    [引用 user="FRAMziskus"] 根据我们的理解,我们可以在对其他扇区进行编程的同时从闪存的某些扇区执行操作

    这是不正确的。 以上引用的信息、如果来自 数据表的第545页

    如果您在闪存编程期间需要功能、则必须从 RAM 执行该代码。

    配置数据是否适合仿真的 EEPROM?

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

    团队、

    抱歉、我输入了错误的此主题的器件型号!
    我的客户使用的器件型号为:TM4C1294NCPDT
    第612页指出:

    很抱歉让人困惑!

    (能否调整主题标题?)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再说一次、为什么选择闪存? 为什么要施加这种负担?

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉不能再回来 Robert。
    替代方法是仿真 EEPROM?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    或外部非易失性存储器。 选择取决于您销售的商品数量、更新的频率、所需存储空间大小、更新发生的条件以及损坏的后果。

    板载 EE 确实需要小心。 阅读勘误表(您也应该为闪存执行此操作)。 不过、所需的护理比闪存的护理要简单得多。

    写入闪存会带来很大的负担

    • 写入时间。 您必须在计算中考虑擦除和编程的最长时间
    • 可用内存减少。 考虑到这些器件上的存储器可能不是负担。
    • 写入时无法访问存储器。 您表示写入一个组不会影响另一个组、但您确定正确识别了该组吗? 在许多微控制器上、组是交错的、我不知道这个。
    • 管理它的额外编程工作。 这已导致问题。 需要考虑的一个问题:为了弥补节省外部非易失性存储器或更差的板载 EE 所涉及的额外编程时间、您必须销售多少个额外的器件?

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已调整了该主题的标题。 这会显著改变情况、因为 TM4C1294器件的主存储器在两个组对之间分配。 在上半部分进行编程时、您确实可以从下半部分执行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所有、

    我想回到最初的问题:
    您是否看到基于中断的闪存擦除和写入与基于轮询的问题?

    外部存储器不是一个选项、因为设计过于高级。
    内部 EEPROM 被视为速度太慢、无法对相关数据进行计算。

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

    我们是否可以仅仅想"如何"、"设计有问题-至少在高通量/不确定性中"可以归类为"太先进?"

    一条"更安全的道路"将会产生一个"第二平行设计"(外部存储器)----与"估计不足"----迄今为止--"有缺陷"----初步设计方法一起开发。

    拥有"多个安全回港"、而"海上"、云暗上升、这证明非常聪明、有时可以挽救生命(或职业生涯)!   

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

    [引用 USER="FRAMziskus"]您是否发现基于中断的闪存擦除和写入与基于轮询的问题?
    [/报价]

    首先、   如果只有 几百个字节被改变、那么应用程序不需要首先擦除写入的地址。  其他文章 转移 了 如何将上述数据存储在何处这一主题 、因为闪存写入 只能在  内存单元 开始降级之前保证数百万个或多个 R/W 周期。 这不会阻止经常 将小参数块存储 到闪存的应用工程师。  然而、为了    安全起见、RAM 成为非常大且频繁的参数块更改的首选。 在  内存单元降级(熵)之前、EEROM 也具有有限的 R/W 周期、这是闪存和 EEROM 的敌人。      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还建议客户查看 Tivaware 库驱动程序和示例的实用程序文件夹中的 FLASH_PB.c。 为128字节参数块初始化、随机存储算法编写的非常好的 API 可以使用中断条目来更改块。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所有、

    客户根据其初始方法自行找到了解决方案。
    此问题是由另一条命令的闪存读取访问引起的。

    尽管如此、感谢您的意见!

    此致