STM32F4-IAP学习笔记(二)

本文详细介绍了STM32F4的IAP(In-Application Programming)实现过程,包括通讯、FLASH操作和引导跳转三个关键模块。在通讯部分,以USART为例阐述稳定传输的重要性;在FLASH操作中,讲解了写入地址的有效性校验及数据转化;引导跳转部分,解释了地址空间校验、复位中断向量保存等步骤。文章还提及了APP程序的编写注意事项,如设置ROM空间、中断向量表重定向,并分享了完整的IAP学习心得。
摘要由CSDN通过智能技术生成

啰嗦两句

之前我们分析了IAP的基本工作原理和编程应该注意的细节问题,接着上篇,我们来看看具体的编码问题。

正文

上篇基本将IAP工作的机理和程序组成以及运行路程分析过了,所以我们只看看关键模块的编码。
首先分析IAP,关键模块有三部分:通讯,FLASH操作,引导跳转。

一、通讯

我们先来谈谈通讯问题。可以将,无论什么通讯,都可以完成代码的传输,USART也好,USB也好,CAN也好,等等,只要是通讯外设,你都可以用来传输外设,但是考虑到实用性,也许USART是简单也是最最常用的。我们以就以USART为例来讲通讯。
文件的传输一定要稳定,传输过程中不可以丢数据,否则传输的文件就有问题,导致最后的APP程序存在问题。所以我们使用USART时需要选择合适波特率,要尽量大保证传输速率,但又不能太大导致丢帧。然后开启中断在中断将接收到的数据存放到一个数组里即可,随后处理即可。编码相信大家都会,就不在这里复述了。

二、FLASH操作

我们需要将接受到的APP程序写到合适的FLASH地址,以便后面引导启动。
首先应该明确STM32F4的FLASH地址为0x08000000-0x080FFFFF,若果越过这个空间写肯定是有问题的。下面我们看看FLASH写入的步骤。

1.校验写入地址有效性

//写入地址必须处于FLASH区间并且地址为4的倍数【按字写入】

if(WriteAddr < FLASH_BASEADDR || WriteAddr%4)   //addr error
        return ;

2.FLASH解锁,缓冲区除能

//必须要解锁FLASH并保证数据缓存处于关闭状态才可以进行FLASH写入

FLASH_Unlock();                         //ready to clear sector
FLASH_DataCacheCmd(DISABLE);

3.判断是否要擦除缓冲区


                
  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值