闪存编程
Flash编程算法是一种用于擦除应用程序或将应用程序下载到Flash设备的软件。具有设备支持的包通常包含预定义的Flash算法,用于对DFP支持的设备进行编程。ARM:CMSIS Pack 中提供了用于创建新算法的模板。
创建一个新算法
闪存编程算法由擦除和烧写闪存的一组函数实现。需要特殊的编译器和链接器设置。请按照以下步骤创建和配置新的Flash编程算法:
1.从ARM:CMSIS Pack文件夹(通常为C:\ Keil \ ARM \ Pack \ ARM \ CMSIS \ version \ Device \ _Template_Flash)复制到新文件夹。
2.重命名项目文件NewDevice.uvprojx以代表新的Flash ROM设备名称,例如MyDevice.uvprojx。
3.使用uVision打开项目。在工具栏中,使用下拉选择目标定义处理器架构。Cortex-M适用于所有Cortex-M0 / M0 +,M3和M4设备。该配置假定一个低端字节的微控制器。如果是大端微控制器,请使用Project - Options for Target - Device选择正确的处理器内核。
4.打开对话框“ Project - Options for Target - Output ”,并更改“ Name of Executable ”字段的内容以表示设备,例如MyDevice。
5.修改文件FlashPrg中的编程算法。
6.在文件FlashDev中调整设备参数。
7.使用Project - Build Target生成新的Flash编程算法。必须将输出文件(例如MyDevice.FLM)添加到DFP中。
注意:1.不支持使用MDK-Lite创建Flash编程算法。2.Flash编程算法使用只读位置无关和读写位置无关程序代码。这些选项在对话框Project - Options for Target - C / C ++和Project - Options for Target - Asm对话框中设置。 3.The dialog Project - Options for Target - Linker defines the linker scatter file Target.lin. The error L6305 is disabled with –diag_suppress L6305.4.“ 闪存算法功能”部分包含所有可用功能的参考。
FlashPrg.c
文件FlashPrg.c包含必需的Flash编程功能Init,UnInit,EraseSector和ProgramPage。(可选)根据设备功能(或加快执行速度),可以实现功能EraseChip,BlankCheck和Verify。
FlashDev.c
文件FlashDev.c包含以下参数的定义:
1.Flash编程功能。
2.该FlashDevice结构:
注意:1. Device Name通常以工具来识别闪存算法显示。确保此名称反映设备名称。2. Programming Page Size规定了使用功能编程块大小ProgramPage。对于块大小小的设备,最好指定物理块大小的倍数,因为这会减少与目标设备的通信开销。快速编程的最佳块大小为1024字节,但是系统本身并不限制该大小值。
向包中添加算法
需要将生成的* .FLM文件添加到具有设备支持的软件包中,以便工具用户可以使用该文件对自己的设备进行编程。通常,将创建目录Flash,并将算法保存在此目录中。
该算法在/ package / devices / family级别中指定:
参数start指定Flash编程算法的基地址。
参数大小指定Flash编程算法覆盖的大小。结束地址=开始+大小-1。
参数default指定是否将Flash编程算法设置为项目中的默认算法(true时)。如果未设置default或false,则可以在较低级别上配置Flash编程算法。但是,在开发过程中可以随时手动更改项目的Flash编程算法。