dsPic33页擦除大小

时间:2016-06-15 19:22:46

标签: memory flash-memory dspic

我在dsPic33EP256MC502应用程序上工作,我需要在flash上​​写保存配置。除了擦除页面以外的所有工作,我擦除太多或太多。

数据表说页面擦除页面大小是" 1024条指令" (3072字节) 由于指令是24位+幻像字节,因此指令是32位对齐的 我们需要两个地址单元来处理指令

示例:
    0x000000:[Phantom] [Instruction1] [Instruction1] [Instruction1]
    0x000002:[Phantom] [Instruction2] [Instruction2] [Instruction2]
    0x000004:[幻像] [指令3] [指令3] [指令3]
    0x000006:...

A / Naively我计算 1024条指令页面大小,如:

  • 4096字节(包括幻像字节) [1024条指令x 4字节]
  • 3072 utile bytes。 [4096字节x 0.75]
  • 因此我们需要2048个地址单元 [4096/2] 来处理页面:每页0x800地址

我/我做了一个经验测试验证,我发现每页 0x600地址,这意味着1024条指令是:

  • 0x600是1536地址
  • 3072字节(包括幻像字节) [1536 x 2 bytes]
  • 2304 utile bytes [3072 bytes x 0.75]
  • 我发现擦除页面是 768条指令 [3072/4]

我不明白数据表如何计算带或不带虚拟字节的指令,三个或四个字节?每页有多少个地址?

有人可以帮助我理解我的错误和/或获得良好的观点吗?

1 个答案:

答案 0 :(得分:0)

我现在确认1024条指令擦除页面是:

  • 4096字节(包括幻像字节)[1024条指令x 4字节]
  • 3072 utile bytes。 [4096字节x 0.75]
  • 我们需要2048(0x800)地址单元[4096/2]来寻址页面

小心测试擦除页面对齐,因为如果你擦除页面中某个地址的页面,整​​个页面都会被删除,这就是我的经验结论不好的原因。

第0页:0x000000至0x0007FE
第1页:0x000800至0x000FFE
第2页:0x001000至0x0017FE
第3页:0x001800到0x001FFE
第4页:0x002000到0x0027FE
...
页面84:0x02A000到0x02A7FE
页面85:0x02A800到0x02AFFE (最后一页包含flash配置字节)
页面86:0x02B000 (不存在的页面)