TA的每日心情 | 开心 2020-7-28 15:35 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于STM32的IAP总结
9 A# Q n( X& h: k# i最近有项目要用到1AP的功能,于是调试了下STM32的IA,可能因为个人水平的原因吧,也颇; C" d; H$ I/ Y X6 a% L# e9 c6 Q
费了一般周折
9 J r: I5 `5 r1 s m: l& M现在返回头来想,其实还是蛮简单的0 a" K7 K" t0 x% W
整个过程按照如下步骤:
! c' M$ I0 `" Z4 V1.解锁4 R S: t1 `0 V4 H6 }+ N
2判断是否保护,有 保护的话要先关闭保护
2 F9 f; ~7 J! e+ i; O3 W3.擦除: Q o9 ~% e# T- M& K, k3 Q* j
4.编程
( L3 T3 V+ j% k# S: B5.复位进入应用程序区( `% a7 L7 j" V w
关于解镇:看资料的时候说的神乎其神,有个读/编程控制器叫"FPEC
. ?) D, l% B' [有几个寄存器,专门负责Flash 的,对这几个寄存器以一-定得顺序访问并设置即可成功解锁
/ T9 D1 n5 u: q4 i5 N( n4 QFlash,至于怎么访间,谁先谁后,数据手册上写的头晕,直接来个快刀斩乱麻flash. _UnLock()函
/ |8 S q9 I5 }" t! P数封装了这一系列的操作,有一点要注意,如果你是自己操作寄存器的话,如果操作的方法或5 v0 D$ I) J) Z+ D& E
者顺序不对都会造成Flash 的锁定之后的所有操作都会返回一一个错误,直到下次启动后才能
# V" R& B! K% Z4 U. y. A正常操作
' N6 C- Y6 x2 X0 p关于保护,为了保护用户数据不被无意修改或者悲意读取,STM32提供了对芯片FLASH的5 J8 @2 S! U5 N" m) W
写读等一-系列的保护,加密方式是按照每4页为一个单位也就是说,如果你想加密的话,你至6 Z. \$ w/ R1 I1 a: j/ J6 t/ f) M- h
少要加密4页也就至少4K的空间,至于高密的STM32是否就是8K了?这个我没仔细去看!还
0 \4 o# f m+ z* l. N0 Q0 `: X待以后仔细查看? :2 O+ y% k5 y3 G7 d) m, @0 z1 A6 y
关于擦除,擦除也是很简单,但是只能一页一 页的擦除,ST 公司也提供了一个函 数至于这7 e$ M: \0 ^% Y( r f4 f
个函数后面的输入地址参数,经过试验发现只要这个地址落在这个页里,就是擦除这个页不6 ?) X! }, k# m' b! b$ j& c: ~6 C$ ~2 {
知道这样理解对不对,还需要验证???
v3 x5 t2 m6 T4 f1 z1 H. q% _FLASHStatus = FLASH ErasePage(Address );. k9 P% l, P! }, s( H3 ~
关于编程,STM32编程-次只能以半字(16位的方式编程,库提供了两个函数" r+ m6 b q# K
FLASH_ Status FLASH ProgramWord(u32 Address u32 Data)编程一 个字9 F1 G& G. p7 |% I8 S: I3 k
FLASH_ Staus FLASH ProgramHatWor(u32 Address, u18 Data)编程半个字
; {% O3 Z$ J% E' S$ w. l$ r% i% `+ v在实际编程虽然你调用的一-个字编程的时候内部操作仍然是按照半字的方式编程6 X8 Q" |1 ^$ B1 C9 j7 }) N U9 b9 Q
另外还有个最最重要的-点还要注意大小端的问题,有些你认为可移植性很好的代码.其实' ]4 X0 D4 v1 Q# U6 X
并不一-定,用位移组合成- - 个32位整型然后当做参数来编程由于大小端的模式刚好第一个2 l1 N, G: }# t+ P2 t" H0 \5 X7 r% q
字节在最后边了.最后一个字节在前面了。 导致了AN2557下载我的代码可以使用,我自己的下+ J7 t+ @1 q% v* _
载我自己的代码竟然不能使用,很是郁闷了- -阵子.读出整个Flash的内容就很容易看出来不) c0 E7 O& D$ I( s; B
同了.这个没有想到也着实该死后来用指针强指,不但效率高了,程序也方便了,开一个! :- g/ w* b6 V8 O D
为什么有些人说STM32的IAP其实-一个 半成品.不成熟的呢????这个还需以后了解!
2 q2 B, f4 o& `, b$ w
$ t5 D" i) x7 x/ \, H9 k4 l2 J% `' o v( U
|
|