你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 IAP+Ymodem功能实现(参考官方代码)

[复制链接]
STMCU小助手 发布时间:2022-2-1 18:00
IAP:在线升级代码 ,通俗的讲就是通过USART,IIC,或者SPI,USB等等,方式,在程序中升级程序,一般用在远程升级,或者是在PCB板子都安装到模具之后还需要升级代码,这样我们就需要,通过IAP的方式来升级。
开发环境:MDK-V5,stm32cubeMx,SecureCRT8
硬件平台:stm32f103系列最小系统板,带有swd仿真接口和串口1
1、从st的官方获取到IAP的工程
9 K7 ?( u# V6 [8 b& A
1054826-20180101102647112-1110417948.png
8 `/ |0 F# P! p: _
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代码怎么写,打开我们之前备份好的代码,修改的几个地方,看下面的截图

+ t# K2 [* N7 ]* C) r( M
1054826-20180101102647534-1266607816.png

: G2 i$ Y0 `) T9 |9 q' m
MDK里面点开魔术棒,修改Start的地址为你在之前的IAP代码里面写的地址,Size的大小是,你的全部地址,减去IAP代码占有的大小。然后在main函数里面添加下面一句代码,设置中断的向量的地址,
  • SCB->VTOR = FLASH_BASE | 0x4000;
    # Q* ^4 d' W7 {% {
0x4000是你的IAP程序的大小
MDK里面如下设置,生成bin文件

* p( {2 u  a+ P
1054826-20180101102647971-401275439.png

* a  \" K: [- {9 p* T$ I
7、生成之后,用超级终端或者SecureCRT8就可以烧录了
8 S+ V4 T4 F  T4 N

& c/ }! O: c9 E5 P9 s2 u0 n1 l! W; s, d0 C9 ~* l
+ I* n9 n: x0 v- B
5 j: }5 K1 ]$ U# l) t% s/ h6 X/ g6 V1 f
收藏 评论1 发布时间:2022-2-1 18:00

举报

1个回答
常春藤 回答时间:2023-9-23 09:20:24

官方库版本太旧,很多写保护的找不到定义

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版