为了支持低功耗设计、Max Wennerfeldt 为我们提供了一个定制闪存擦除功能的极好示例、该功能使我们能够解决电源问题。 这基本上是 从驱动程序库中的 flash.h 中对 FlashSectorErase 进行的一个小重写。 该函数的文档指出:"请注意、 在对闪存的任何部分进行编程或擦除时、代码不能在闪存中执行。"因此、重写函数正确地使用 __attribute__((ramfunc))进行了修饰。 但是、将其放置在 RAM 中会给我们带来相当多的编译难题、因此我们希望尽可能避免这种情况。
我发现从闪存运行自定义闪存擦除代码似乎不会导致任何问题。 因此、我想问:当 代码总是从与被擦除的扇区不同的扇区运行时、从闪存运行等效的 FlashSectorErase 是否存在风险? 如果是、这些风险是什么?如何缩小关键部分的范围以占用最少的 RAM?