embedded - 如何删除闪存的一些字节?

标签 embedded microcontroller pic bootloader microchip

我的 PIC18F87J11一次只删除 1024 个字节。 有办法强制它一次只能删除 2 个字节或更多字节吗?

我正在制作一个引导加载程序,有时 HEX 文件(16 字节)中只有一行为应用程序更改,所以我只想用新的 16 字节替换内存中的那一行。如果我尝试删除这 16 个字节,也会自动删除 1024 个字节。然后我被迫重新编写它们,这需要一些时间并降低引导加载程序的速度。

是否有另一种方法可以在不删除 1024 字节的情况下从闪存中删除某些内容?希望有。

谢谢!

最佳答案

您不能删除小于底层内存实现的“删除 block 大小”。如果您的设备上有 1024 字节(您可以验证),那么这是您可以删除的最小大小。

您可以将整个 block 复制到 RAM(如果可用),仅修改必要的部分,删除闪存 block ,然后将其写回,避免从 重新上传未更改的部分外部来源。

在许多这些技术中,还有一个方向可以在不删除的情况下写入 - 例如,内存可能允许将“1”更改为“0”,但只有删除周期才能更改“0”回到“1”。根据您的具体需求,您可以设计一个利用这一点的方案。

关于embedded - 如何删除闪存的一些字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895253/

相关文章:

c - 用C18读取pic18 rom常量

c - 有没有更好的方法来定义用于进行位操作的预处理器宏?

java - 在FreeRTOS上使用Java?

c - 带按钮的 LED 灯闪烁

c - Pic CCS,如何让 float 的每个数字显示在7段显示器中

c - 基于麦克风输入的 PWM 信号生成

c - 串行读取时丢失数据

c - 卡在 C 指针结构中

c - PIC16F1787 内部振荡器

c - 强制编译器在预处理期间进行算术计算