STM32F0、F1、F4的IAP程序

一、IAP是什么?

IAP(In Application Programming)即在应用编程,解释一下,就是给单片机下载烧录程序的,而且只要有串口就行。下载器J-Link、ST-Link、ISP下载也都能给单片机下载程序,但是这些都需要对硬件进行干预,不是很方便,比如下载器要插在板子上,ISP要改变启动的分区,而且ISP是官方的固定不变的,ISP不能做个性化的功能。IAP就能解决这些问题

官方IAP例程

其实ST官方就有提供IAP的例程,我们可以在例程的基础上添加个性化的功能,比如改成能通过网络或者U盘升级的、能够加密用户程序的等等。那到哪里去找这个IAP例程呢?其实就在官方固件库文件的文件夹里。比如F0标准固件库STM32F0xx_AN4065_FW_V1.0.0\Project\STM32F0xx_IAP,就是官方的IAP例程。还有HAL固件库提供的IAP例程,使用STM32Cube下载固件库后可在STM32Cube_FW_F1_V1.8.2\Projects\STM3210E_EVAL\Applications\IAP\IAP_Main找到F1的例程路径,F4的也类似,但是HAL好像没有F0的IAP例程。

官方例程采用的Ymodem协议,这种协议会把文件分块进行传输。

F0系列的IAP程序:

与F1主要区别在于F0的M0内核没有向量表偏移(M0+都有),所以实现方法就是在应用程序起始时把向量表复制到RAM内存,中断发生时到内存中取中断函数地址。

 

F1系列的IAP程序:

网上资料一大把

 

F4系列的IAP程序:

基本和F1一样。

二、自定义实现IAP需要知道的事情

1、单片机的启动过程,程序的运行过程,中断实现方式,了解一点汇编。

2、如何操作内部flash。

3、对文件系统的简单理解。

扩展:

1、安全性:

不希望原程序泄露,那么就需要对程序文件加密后传输,IAP再将收到的文件解密,然后写入flash,加密方式多种多样,可以自己选择。

2、通用及易用性:

做到通过宏定义配置就能适配以下几点内容。

①做到适配多种容量的单片机,最好做到在运行时能够得知容量信息,根据容量确定flash页大小。

②适配多种晶振规格常用的8M、16M晶振。

③串口的配置,产品可能使用的串口、串口波特率等不同。

④IAP功能与接口的分层,方便在不同库之间适配,或移植到其他系列单片机。比如都要用到的flash擦除函数,定义成iap_flash_erase(int sector)的形式,移植时改变函数调用即可。

3、扩展性:

产品有远程升级的需求,还要做网络接口。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值