于 STM32 的 IAP 总结
Posted 道亦无名
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了于 STM32 的 IAP 总结相关的知识,希望对你有一定的参考价值。
整个过程按照如下步骤:
- 解锁
- 判断是否保护,有保护的话要先关闭保护
- 擦除
- 编程
- 复位进入应用程序区
关于解锁读/编程控制器叫"FPEC"有几个寄存器,专门负责 Flash 的,对这几个寄存器以一定得顺序访问并设置即可成功解锁
Flash,至于怎么访问,谁先谁后,数据手册上写的头晕,直接来个快刀斩乱麻 Flash_UnLock()函数封装了这一系列的操作,有一点要注意,如果你是自己操作寄存器的话,如果操作的方法或者顺序不对都会造成 Flash 的锁定,之后的所有操作都会返回一个错误,直到下次启动后才能正常操作.
关于保护,为了保护用户数据不被无意修改或者恶意读取,STM32 提供了对芯片 FLASH 的写读等一系列的保护,加密方式是按照每 4 页为一个单位,也就是说,如果你想加密的话,你至少要加密 4 页,也就至少 4K 的空间,至于高密的 STM32 是否就是 8K 了.
关于擦除,擦除也是很简单,但是只能一页一页的擦除,ST 公司也提供了一个函数,至于这个函数后面的输入地址参数,经过试验发现只要这个地址落在这个页里,就是擦除这个页FLASHStatus = FLASH_ErasePage(Address );
STM32 编程一次只能以半字(16 位)的方式编程,库提供了两个函数
FLASH_Status FLASH_ProgramWord(u32 Address, u32 Data) 编程一个字
FLASH_Status FLASH_ProgramHalfWord
以上是关于于 STM32 的 IAP 总结的主要内容,如果未能解决你的问题,请参考以下文章