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.

[参考译文] TMS320F28379D:为什么闪存在擦除和写入过程中无法访问

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1368007/tms320f28379d-why-flash-becomes-inaccessible-during-erase-and-write

器件型号:TMS320F28379D

工具与软件:

我使用的是 TMS320F28379D。 我对在闪存中保存运行时数据有疑问
1.为什么我不能同时擦除闪存的一个扇区并从闪存的另一个扇区读取? 为什么在擦除/编程操作期间闪存无法访问?
我需要在闪存中保存一些运行时数据。 在对闪存进行编程时、无法读取闪存。 闪存 API 文档建议将代码复制到 RAM、但由于空间有限、我的代码无法存入 RAM、因此我要将它们保存在闪存中。 在只从闪存运行代码的同时、是否还有其他任何方法可以将数据保存在某个位置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    1. 为什么我不能同时擦除闪存的一个扇区并从闪存的另一个扇区读取? 为什么闪存在擦除/编程操作过程中无法访问?

    在编程或擦除操作期间、将整个闪存存储体置于特殊模式、以施加改变闪存位状态所需的电压。  同一存储体中的每个扇区都有一些共享控制端口等、这就是为什么在这些运行期间无法使用同一存储体中的扇区的原因

    Unknown 说:
    2.I need some run time data in Flash. 在对闪存进行编程时、无法读取闪存。 闪存 API 文档建议将代码复制到 RAM、但由于空间有限、我的代码无法存入 RAM、因此我要将它们保存在闪存中。 在只从闪存运行代码的同时,是否还有其他方法可以将数据保存到其他位置?

    由于这一限制、闪存 API 本身必须从 RAM 中运行。 关于运行时数据、您是否尝试将其实时保存到闪存中?  否则、我认为会占用 RAM 的某些区域、这个区域可被重复使用并馈入闪存 API、作为要编程到闪存中的数据数组。   

    此致!

    马修

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

    1.感谢您的答复,现在很清楚。

    2.是的,我要将实时数据保存在闪存中。 因此、即使我临时将数据保存在 RAM 中以稍后将其馈送到闪存 API 中、在使用实时数据对闪存进行编程时、仍然无法容纳 RAM 中的其余代码(ISR 和其他代码)。 是否有任何其他选项可用于实现此任务?

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

    Karthick、
    没有其他选项、闪存和 RAM 是此器件上唯一的可写存储器类型。  是否可以将您的某些功能代码保存在闪存中、并从那里执行以节省 RAM?  虽然从闪存运行时有一些额外的等待状态、但由于我们使用了预取缓冲器、因此总体影响不是对 WS 的1:1。  

    这意味着、将大部分功能代码保存在闪存中、并且仅将 RAM 用于闪存 API 和数据变量;当数据准备好存储在闪存中时、请调用 API 等。  一旦完成代码的这种组织结构、您就可以了解剩余的 RAM、如果有更多的时间关键函数(如 ISR)、这些函数就可以复制到 RAM 中。

    此致!
    马修