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.

[参考译文] CC1350:是否从闪存运行自定义闪存擦除?

Guru**** 2546020 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/942272/cc1350-custom-flash-erase-running-from-flash

器件型号:CC1350

为了支持低功耗设计、Max Wennerfeldt 为我们提供了一个定制闪存擦除功能的极好示例、该功能使我们能够解决电源问题。 这基本上是 从驱动程序库中的 flash.h 中对 FlashSectorErase 进行的一个小重写。 该函数的文档指出:"请注意、 在对闪存的任何部分进行编程或擦除时、代码不能在闪存中执行。"因此、重写函数正确地使用 __attribute__((ramfunc))进行了修饰。 但是、将其放置在 RAM 中会给我们带来相当多的编译难题、因此我们希望尽可能避免这种情况。  

我发现从闪存运行自定义闪存擦除代码似乎不会导致任何问题。 因此、我想问:当 代码总是从与被擦除的扇区不同的扇区运行时、从闪存运行等效的 FlashSectorErase 是否存在风险? 如果是、这些风险是什么?如何缩小关键部分的范围以占用最少的 RAM?

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

    您好 Paal、

    没有关于风险到底是什么的公开信息、但总的来说、闪存模块的内部部分以及具有特定读取/写入模式值的寄存器。 这意味着、闪存实际上意味着一次处于一种模式、这是编写文档说明(也是技术参考手册的一部分)的原因。  

    虽然我无法确切地告诉您可能发生的情况、但我们可以假设此处最坏的情况是闪存损坏。 在页面基础上进行读/写没有区别、这让我相信、即使您从另一页执行操作、限制仍然存在。  

    如果我还记得我正确写入的示例、我不确定它在 RAM 方面可以小得多。 我希望修补函数中的大多数调用都是 ROM 调用。 我会再看一下、看看我是否发现了一些明显的东西、但我不能答应工作。 此外,我们没有任何正式支持的,这意味着我不能在公开论坛上分享任何成果。  

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

    谢谢、我们将确保它基于 RAM。