Microcontroller 采用PIC18F K40单片机闪存作为存储器

Microcontroller 采用PIC18F K40单片机闪存作为存储器,microcontroller,pic,flash-memory,eeprom,pic18,Microcontroller,Pic,Flash Memory,Eeprom,Pic18,我在我的项目中使用PIC18F67K40微控制器。 它有1kB的EEPROM存储器和128kB的程序存储器(闪存) 现在我用EEPROM存储我的设置 应用程序正在“增长”,我意识到在某个时候1kB是不够的。有些设置是相当大的结构数组。 我意识到,闪存有100k 10k写入周期,我可以购买外部EEPROM,但我不想改变硬件中的任何东西,而且该产品中的内存肯定不会达到2k写入 我的问题是: 如何从EEPROM存储切换到闪存存储? 程序内存更改后,我是否必须重新计算一些CRC 我是否必须在项目设置中的

我在我的项目中使用PIC18F67K40微控制器。 它有1kB的EEPROM存储器和128kB的程序存储器(闪存)

现在我用EEPROM存储我的设置

应用程序正在“增长”,我意识到在某个时候1kB是不够的。有些设置是相当大的结构数组。 我意识到,闪存有100k 10k写入周期,我可以购买外部EEPROM,但我不想改变硬件中的任何东西,而且该产品中的内存肯定不会达到2k写入

我的问题是:

如何从EEPROM存储切换到闪存存储?

  • 程序内存更改后,我是否必须重新计算一些CRC
  • 我是否必须在项目设置中的某个地方定义我正在使用一些闪存作为存储
  • 为了像这样使用闪存,我必须做些什么

  • 100k写入仅是数据EEPROM的耐久性,而不是闪存的耐久性(仅10k写入)。您可以通过EEPROM仿真扩展耐久性。 Microchip提供了一个非常不错的库,用于闪存中的EEPROM仿真。

    看看这里:

    几年前我为一位客户做了这件事。出于保密协议和版权的原因,我不能发布代码,但基本技巧是使用一种叫做RTSP(运行时自编程)的东西。RTSP现在可能已经过时,但任何替代品都可能以类似的方式工作

    从本质上讲,flash看起来像是一系列的页面,可以一次用一个字来写,但可以一次擦除一页。您需要做的是编写一些代码,可以解锁和删除一个页面,然后写入它。完成此操作后,页面可以作为普通内存读取

    您不需要更改设置。但是,请确保您使用的页面中没有程序代码


    如果你想要一个CRC(通常是一个好的移动),你必须自己计算。

    谢谢你的回复和对flash中写入周期的更正。我想知道如何在低层次上做到这一点而不造成混乱(回答这三个问题)。使用库不会让我满意。所以PIC微控制器在运行程序之前没有crc检查?我记得使用Atmel微控制器的旧诺基亚手机就有这样的功能。这是软件引导程序功能还是什么?