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

【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

[复制链接]
caizhiwei 提问时间:2014-4-4 19:20 /
实验平台:windows7 + STM32F103ZET6
实验目的:你不需要任何烧录工具,就可以对你的产品进行远程升级代码!
1. Xmodem协议简介
2. IAP编程原理
3. Boot与App程序设计
4. 实验步骤
5. 远程升级应用


1.   Xmodem 协议
      串行通信的文件传输协议主要有:Xmodem、Ymodem、Zmodem和KERMIT等。
 
      Xmodem 协议传输由接收程序和发送程序完成。先由接收程序发送协商字符,协商校验方式,协商通过之后发送程序就开始发送数据包,接收程序接收到完整的一个数据包之后, 按照协商的方式对数据包进行校验。校验通过之后发送确认字符,然后发送程序继续发送下一包;如果校验失败,则发送否认字符,发送程序重传此数据包。
Xmodem协议是由Ward Chritensen于70年代提出并实现的,传输数据单位为信息包。
Xmodem 协议一般支持128 字节的数据包,并且支持校验和、CRC 两种校验方式。


2.iap编程原理
 
      在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般是通过单片机专用的串行口对内部的整个Flash存储器进行编程,而IAP技术是从结构上将Flash存储器分为两个部分,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。而IAP的实现更加灵活:通常可利用单片机的串口,网口,USB等接口在线编程,从而实现代码的远程升级。 
有些用户希望产品在实际应用期间能够通过某种远程通信方式自动地更新程序内容,显然ISP已经无法满足这样的需求了。新出现的IAP烧录方式为程序的自我更新提供了有效手段。单片机内部的Flash存储器保存有用户的程序代码,这些代码在正常运行期间是不能被修改的。但是有了IAP,用户程序就能够根据需要(满足某种条件)自行修改部分甚至全部程序代码。新的程序代码可能是程序在运行过程中自动生成的,也可能来自于远程设备。


       Boot代码必须通过其它手段,如JTAG或ISP烧入;APP代码可以使用Boot代码的IAP功能烧入,以后就可以方便地利用IAP功能更新代码了。  
      这两部分代码存放在FLASH的不同地址范围,一般从最低地址区开始存放Bootloader,紧跟其后的就是APP程序(注意,如果FLASH容量足够,是可以设计很多APP程序的)。


中断向量表的偏移量设置:(misc.c中)
void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset)
#ifdef  VECT_TAB_SRAM
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET;
#else
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;
#endif
设计VECT_TAB_OFFSET=0x4000   预留16KB的Flash空间给Boot程序。




3. 实验步骤:



通过STM3210e 开发板进行实验验证:
Boot程序实现了如下功能:
1. 通过串口方式实现在应用编程(IAP)。
图片1.jpg
2. 下载hex文件(CRC或SUM) 到指定Flash存储区。
图片2.png
3. 擦除任意指定扇区(8~127)。
图片3.png
4. 从任意扇区启动APP程序。
stm32bootloader.zip (1.96 MB, 下载次数: 2586)

评分

参与人数 1 ST金币 +1 收起 理由
小天哥 + 1

查看全部评分

收藏 4 评论50 发布时间:2014-4-4 19:20

举报

50个回答
caizhiwei 回答时间:2014-4-4 19:24:20

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

去年做的,一直没时间整理传上来,希望对大家有用!里面有readme文档:
1. 实验平台为stm32f103zet6 ,你可以移植到其他mcu上;
2.bootloader 文件夹中的hex文件为bootloader,先用串口iap软件烧录到stm32中;
3.然后你就可以通过串口终端烧录usart_printf_test文件夹中的hex;
4.你可以直接用usart_printf_test文件夹中工程作为母体,开发你的应用!
oipk 回答时间:2015-1-6 22:59:36
楼主牛掰啊,我先mark,随后就好好学习学习。好。
blue-cat 回答时间:2017-7-12 02:30:55
真是不错的资料,我现在正在开发IAP功能
caizhiwei 回答时间:2014-4-4 19:20:41

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

先抢沙发咯
stm32f107 回答时间:2014-4-15 21:20:25

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

学习学习撒 !
stm32f107 回答时间:2014-4-15 21:44:26

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

学习学习撒 !
julymin211 回答时间:2014-4-15 23:20:24

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

看看。。。。。。
joss 回答时间:2014-4-16 09:52:18

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

谢谢楼主~~~~
kingchou2 回答时间:2014-4-16 10:02:27

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

学习一下,怎么IAP!
yangjueuser 回答时间:2014-4-16 14:30:12

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

学习
yeqiqi94100 回答时间:2014-4-17 20:59:13

回复:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究


借鉴一下
green3002 回答时间:2014-5-4 11:44:36

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

,bucuo
windy489 回答时间:2014-5-6 14:12:03

RE:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

刚好需要 下载一个
kecheng1987 回答时间:2014-5-13 15:50:42

回复:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

 最近一直在研究,还未成功,学习一下。
ld527027363 回答时间:2014-5-15 16:24:25

回复:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

还在研究当中
rungwonghuw 回答时间:2014-5-16 15:21:42

回复:【MCU实战经验】+基于Xmodem协议的嵌入式IAP编程的研究

你这个程序好使吗??验证了吗?
1234下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版