如何擦除闪存的某些字节?

Amm*_*mar 2 embedded microcontroller microchip pic bootloader

我的PIC18F87J11一次只能擦除1024个字节.有没有强迫它一次只擦除2个字节或更多?

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

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

谢谢!

Chr*_*ton 6

您不能擦除低于底层内存实现的"擦除块大小".如果您的设备上有1024字节(您可以验证的话),那么这是您可以擦除的最小尺寸.

您可以将整个块复制到RAM(如果可用),仅修改必要的部分,擦除闪存块,然后将其写回,从而无需从外部源重新上载未更改的部分.

在许多这些技术中,还有一个可以在不擦除的情况下写入的方向 - 例如,存储器可能允许将"1"更改为"0",但只有擦除周期才能将"0"更改回a "1".根据您的确切需求,您可以设计一个利用此功能的方案.