0

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

数据表说页面擦除页面大小是“1024条指令”(3072字节)由于指令是24位+幻象字节,指令是32位对齐的我们需要两个地址单元来寻址一条指令

示例:
0x000000:[幻影][指令1][指令1][指令1]
0x000002:[幻影][指令2][指令2][指令2]
0x000004:[幻影][指令3][指令3][指令3]
0x000006:...

A/ 我天真地计算1024 条指令页面大小,例如:

  • 4096 字节(包括虚字节)[1024 条指令 x 4 字节]
  • 3072 个有用字节。[4096 字节 x 0.75]
  • 所以我们需要2048个地址单元[4096 / 2]来寻址一个页面:每页0x800地址

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

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

我不明白数据表如何计算有或没有幻象字节、三个或四个字节的指令?每页有多少个地址可用?

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

4

1 回答 1

1

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

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

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

页面0:0x000000至0x0007FE
页面1:0x000800至0x000FFE
页面2:0x001000到0x0017FE
页面3:0x001800 to 0x001ffe Page 4
:0x002000至0x0027fe
...配置字节) 第 86 页:0x02B000 (不存在的页面)


于 2016-06-16T16:19:58.177 回答