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.

[参考译文] 使用内部闪存的 EEPROM 仿真

Guru**** 2465890 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1493472/eeprom-emulation-using-internal-flash

器件型号:TMS320F28P650DK

工具与软件:

我们将使用内部闪存探索 EEPROM 仿真选项[ www.ti.com/.../sprab69a.pdf

我有几个问题:

在闪存擦除/存储期间执行代码。


3实施方案
在使用闪存模拟 EEPROM 时、最重要的挑战是尽可能实现可靠性目标
闪存编程/擦除耐久性和数据保留需要考虑。 其次是实时应用要求
在应用程序的控制下、满足数据更新和读取要求。 请注意、在期间
闪存擦除/编程期间无法执行应用程序、因为在此期间无法读取闪存
计算得出。

1.如果我们将闪存组0用于 EEPROM 并使用闪存组1和2来存储应用程序映像、我们是否能够在执行闪存擦除/写入的同时继续执行代码?
能否解释一下、这意味着我们无法执行应用程序? 这是否意味着、在闪存 API 完成操作之前、CPU 必须绑在自旋锁中?

EEPROM 与闪存操作的主要区别在于写入和擦除时间。 典型值
闪存写入时间为 EEPROM/16位字;而50 μs 通常需要5至10ms。 EEPROM 没有
需要页(扇区)擦除操作。 用户可以擦除需要指定时间的特定字节。 闪存擦除
时间以秒为单位显示一页。 对于第2代 C2000 MCU、擦除时间的典型值为10
秒/8K 扇区。 在写入/擦除操作期间、闪存电源必须保持稳定。

2.我要说的是我们需要一个掉电检测和足够的保持来确保断电后10秒的操作。 我在 P65中没有看到任何专用的 BOR 检测。 因此、我们将需要使用单独的引脚或使用 CMPSS 系统生成该引脚。

 

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

    您好!

    首先、我看到您正在使用 TMS320F28P65x 器件、这是第3代 C2000 MCU。  第3代 C2000实时控制器的 EEPROM 仿真(修订版 A)是有关此器件的 EEPROM 仿真的正确应用手册。

    1.闪存通过闪存泵写入、闪存泵 为闪存库的擦除、编程和读取操作提供必要的电压。  一次只能执行这些操作中的一个、所以从闪存读取或执行数据以及向闪存写入数据是相互排斥的操作(这也是编程闪存的代码必须从 RAM 执行的原因)。 通常、CPU 将等待 FSM (闪存状态机)完成其操作、然后检查结果并继续执行。

    2.您的问题是什么?

    此致!

    Alex

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

    Alex、您好!

    1.关于你的回答,我想澄清一下。
    答:我看到某些命令标记为异步。 这是什么意思?
    b.当对闪存进行擦除或写入时、无法从闪存执行代码。
    c.在擦除或写入闪存 BANK0时、即使我们正在执行位于闪存 BANK1中的代码、上述声明也有效吗?

    2.我关于欠压的问题是:如果在擦除或写入闪存的过程中断电、会发生什么情况?

    A.我们能否在重启时再次擦除以恢复扇区?

    谢谢

    Jay

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

    我在您分享的指南中看到了以下陈述。 这是否意味着从 EEPROM 仿真以外的组中执行代码仍然有效?

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

    Jay、

    1A。 这些函数向 FSM (闪存状态机)发出命令、然后立即返回。 在代码中、您必须通过轮询 FSM 状态来等待操作完成。 如需相关演示、请参阅闪存编程示例。

    1b。 正确、修改闪存的代码应该首先被载入到 RAM 中。

    1c. 是的、因为只有一个闪存泵。

    2.写入/擦除目标和数据完整性不再保证与传递到该函数的内容相同。 是的、可以通过擦除来恢复该扇区

    对于指南的说法、也就是说为 EEPROM 数据存储选择的扇区和代码不应重叠。 是的、 代码和数据的位置无关紧要。

    此致!

    Alex

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

    您好 Alex、感谢您的澄清。 很抱歉 Im 给了我一个关于从闪存执行代码的错误消息。 但我确实注意到指南中有一个相互矛盾的陈述。 我理解只有一个电荷泵的重要性。

    用户指南似乎意味着我们可以继续从另一个闪存存储体中执行代码。 我觉得应该更新一下指南、以免给用户造成混淆。

    谢谢

    Jay

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

    Jay、

    对不起错误,指南是正确的这里--闪存操作只阻止他们发生的银行.

    此致!

    Alex

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

    谢谢 Alex。

    得出结论:

    1.只要我们在另一个组上使用闪存操作[例如:闪存组0或闪存组2]、我们就可以继续运行闪存组1中的代码

    2.基于上述,我们是否需要执行修改 RAM 闪存内容的代码?

    Jay

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

    Jay、

    1.是的,正确。

    2. 可以从任何不是被编程/擦除的存储体的地方进行读取/提取。

    此致!

    Alex