IAP:在线升级代码 ,通俗的讲就是通过USART,IIC,或者SPI,USB等等,方式,在程序中升级程序,一般用在远程升级,或者是在PCB板子都安装到模具之后还需要升级代码,这样我们就需要,通过IAP的方式来升级。

软件代码托管码云地址:https://gitee.com/zyzp/stm32UartIAP

开发环境:MDK-V5,stm32cubeMx,SecureCRT8

硬件平台:stm32f103系列最小系统板,带有swd仿真接口和串口1

1、从st的官方获取到IAP的工程,http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-expansion-packages/x-cube-iap-usart.html

一路拉到最下面

下不了怎么办,自己想办法,需要填姓名邮箱等等,完事,人家会给你的邮箱发一条邮件,里面是下载链接。点开后多等一会,毕竟是国外的网站,别等不及,连着重复的去点那个按钮,没用的,如果还是下载不了,那就找我吧,我这儿有下载好的,留言或者邮件我都会回你的。

2、下载完了,解压之后点开里面有三个工程分别是l073,l469,f10的,根据需求自己选合适的,f10X的点开直接编译就可以,但是l073,和l469的点开发现没有库文件,我的天啊,这怎么办啊,哈哈,没关系了,接着向下看吧,

3、我们现在打开stm32cubeMx,根据自己的需求生成一个带串口和CRC的工程,没有CRC直接带串口就可以了,需要注意的几个地方,时钟配置,一定要根据自己实际的情况去配置时钟,串口的位数,如果使用了校验位,一定要在数据位多加1,8bit的数据位,1bit的校验位,一定要设置9bit的数据位,唉,到处都是坑,好了,可以导出工程了,导出来之后,测试一下串口功能是不是有效的,main函数里面自己写吧,实在不会,可以找我的。。。嘿嘿,完事之后备份一份这个代码,一会app代码也在这个里面写。

4、好了,我们现在有一个属于自己的带有串口的工程了,接着打开之前从官方下载的工程,把里面的Inc和Src文件夹拷贝过来,拷贝到我们的自己工程的路径下面,本来有的文件选择跳过就可以,一定不要替换。

5、接下来给工程里面添加文件,把该添加的都添加进去,主要有common.c,ymodem.c,menu.c,flash_if.c,应该是就这四个文件了,好了编译试试,哇,一大堆错误,别着急咱们一点一点的改,首先要改的是串口的句柄名称,和crc的句柄名称,可以改成统一的就可以,随便,我配合你你配合我的,无所谓了,改完之后在common.h里面添加你的usart.h有文件,随便你怎么,看你自己怎么添加咯,最后一点参考官方代码修改你的main文件,顺便把该有的错误都改了,完事下到MCU里面

6、现在我们来看看app代码怎么写,打开我们之前备份好的代码,修改的几个地方,看下面的截图

MDK里面点开魔术棒,修改Start的地址为你在之前的IAP代码里面写的地址,Size的大小是,你的全部地址,减去IAP代码占有的大小。然后在main函数里面添加下面一句代码,设置中断的向量的地址,

  1. SCB->VTOR = FLASH_BASE | 0x4000;

0x4000是你的IAP程序的大小

MDK里面如下设置,生成bin文件

7、生成之后,用超级终端或者SecureCRT8就可以烧录了

STM32 IAP+Ymodem功能实现(参考官方代码)的更多相关文章

  1. STM32 IAP程序 源码 和测试代码 有详细的中文注释

    http://bbs.21ic.com/forum.php?mod=viewthread&tid=588265&reltid=624002&pre_pos=2&ext= ...

  2. STM32 IAP 升级功能

    IAP In Application Programming 可通过USB,CAN,UART,I2C,SPI等接口实现 IAP流程 Bootloader程序:接收升级程序,更新到flash指定地址:跳 ...

  3. STM32 IAP 固件升级设计/U盘升级固件

    源:STM32 IAP 固件升级设计/U盘升级固件 固件升级的基本思路是: 将stm32 的flash划分为两个区域: 1.Bootloader区:存放bootloader的代码,bootloader ...

  4. stm32 IAP + APP ==>双剑合一

    (扩展-IAP主要用于产品出厂后应用程序的更新作用,上一篇博文详细的对IAP 升级程序做了详细的分析http://blog.csdn.net/yx_l128125/article/details/12 ...

  5. stm32 IAP + APP ==>双剑合一(转)

    源:http://blog.csdn.net/yx_l128125/article/details/13591743 (扩展-IAP主要用于产品出厂后应用程序的更新作用,上一篇博文详细的对IAP 升级 ...

  6. STM32 IAP 在线升级详解(转)

    源:http://blog.csdn.net/yx_l128125/article/details/12992773 (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP   ...

  7. STM32 IAP docs

    /********************************************************************************* * STM32 IAP docs ...

  8. STM32+IAP方案 实现网络升级应用固件

    关注了这个概念有些日子了,这段时间总算有机会实战==网络升级应用固件,这里记录下遇到的问题,及解决方案. 原理与网上流传的串口作为传输手段 一致:不同之处,无非我这里使用了网络设备传输.==(lwip ...

  9. 【转载】STM32 IAP 在线升级详解

      (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP  再烧写APP应用程序要烧写2次增加工人劳动力基础上写了“STM32 IAP+APP ==>双剑合一”链接稍后 ...

随机推荐

  1. Maven中dependencyManagement使用

    在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器. 在dependencyManagement下申明的dependencies,Maven ...

  2. Linux监控和安全运维 2.0 zabbix配置邮件告警

    1.发邮件启动postfix /etc/init.d/postfix start mail -s @qq.com < /etc/inittab mailq 查看发送结果 2.配置发邮件文件 mk ...

  3. npm 全局环境变量配置

      我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立”node_global”及”node_cache”两个文件 ...

  4. JDBC中,如何动态的设置查询条件

    今天看JDBC,发现有段代码,可以减少重复的编写查询方法,如下: public List<Goddess> query(List<Map<String, Object>& ...

  5. 前端开发之JavaScript基础篇二

    主要内容: 1.流程控制条件语句和switch语句 2.for循环和while循环 3.Break语句和Continue语句 4.数组和数组常用方法 5.函数 6.对象 一.流程控制条件语句和swit ...

  6. java 修改文件

    public void fileAlter(String fileName,String content) throws IOException{                 BufferedRe ...

  7. restful返回 json数据的JavaBean设计01

    public class ResponseEntity implements Serializable { private int errCode; private String message; p ...

  8. swarmkit test

    swarmd -d /tmp/node-1 --listen-control-api /tmp/node-1/swarm.sock --hostname mhc --engine-addr=tcp:/ ...

  9. Fresnel Reflection Shader

    [Fresnel Reflection] One of the most used types of reflections is the Fresnel reflection. One of the ...

  10. VUE+WebPack游戏设计:'乘法防线'游戏设计