【问题标题】:dsPic33 page erase sizedsPic33 页面擦除大小
【发布时间】:2016-10-17 01:53:46
【问题描述】:

我在 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]

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

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

【问题讨论】:

    标签: memory flash-memory dspic


    【解决方案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 到 0x001FFE
    第 4 页:0x002000 到 0x0027FE
    ...
    第 84 页:0x02A000 到 0x02A7FE
    第 85 页:0x02A800 到 0x02AFFE (最后一页包含闪存配置字节)
    第 86 页:0x02B000 (不存在的页面)

    【讨论】:

      猜你喜欢
      • 2018-03-30
      • 2015-01-29
      • 2014-09-17
      • 2015-02-28
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      相关资源
      最近更新 更多