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. **python实现的单例模式

    设计模式中,最简单的一个就是 “单例模式”. 所谓单例,是指一个类只有一个全局实例. 单例模式的使用场景: 1. Windows的Task Manager(任务管理器)就是很典型的单例模式(这个很熟悉 ...

  2. SpringMVC配置过程中出现的问题!

    <c:set var="ctx" value="${pageContext.request.contextPath}" />不起作用,原因是web. ...

  3. Java安全框架 Apache Shiro学习-1-ini 配置

    简单登录流程: 1.  SecurityManager   2.  SecurityUtils.setSecurityManager 3.  SecurityUtils.getSubject     ...

  4. 关于PHP如何用实现防止用户在浏览器上使用后退功能重复提交输入

    $(function(){ if(window.history && window.history.pushState){ $(window).on('popstate',functi ...

  5. Linux重置管理员密码

    对于一些非专业的Linux运维工程师或者偶尔使用Linux系统的学习者而言,比如我,经常会碰到忘记密码的尴尬,那这时候,快速的重置密码就相当重要了.废话不多说,今天我们就一起来学习一下如何快速重置密码 ...

  6. (转) Linux下配置nfs并远程挂载

    nfs是网络文件系统,允许一个节点通过网络访问远程计算机的文件系统,远程文件系统可以被直接挂载到本地,文件操作和本地没有区别,如果是局域网的nfs那么io的性能也可以保证,下面就以CentOS 7.x ...

  7. GameObject.Active

    [GameObject.Active] 用于控制一个对象是否激活,一个对象激活当且本身active=true,并且它的父结点也都active.相当API有: 1)GameObject.SetActiv ...

  8. NodeJS - npm WARN package.json : No repository field:can not open package.json

    最近在研究node.js,在安装npm的时候发现了几个报错,瞬间蒙圈,查找文献基本解决(文献好少呀~  -.-)   一.报错:“can not open  path/path/package.jso ...

  9. DevCloud for CloudStack Development

    Apache CloudStack development is not an easy task, for the simplest of deployments one requires a se ...

  10. Red Hat Cluster Suite 组件 fencing FAQ

    说明 Red Hat Cluster实现HA的关键组件之一是fencing.没有设置fencing,虽然看上去也能够运行Cluster,但是一旦遇到故障切换就会出现异 常,所以深入理解fencing原 ...