基于Ymodem协议的STM32串口IAP的实现(IAP + APP + 上位机)

1.什么是IAP?

IAP:In Application Programming 是指在应用编程,即在程序运行中编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的bootloader程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到存储区。

2.与ISP的区别

在线编程目前有两种实现方法:在系统编程(ISP)和在应用编程(IAP)。ISP一般是通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程,而IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。

3.为什么要用IAP

STM32F1XX单片机在出厂前,固化了ISP自举程序,挺强悍的,至少我觉得,因为人家还自适应波特率呢,才2KByteROM+512ByteRAM。上位机下载软件现成的,也不用自己操心了。不过呢,需要boot0跳线进入,详见文档 RM0008芯片参考手册第2章 和 AN2606系统内存引导模式。那我就要在我明亮的壳子上打个白米粒大的洞,然后就像路由器那样,拿牙签捅啊捅的。还有,就是把HEX文件发布让客户自己升级,感觉不像回事,老板也会担心他们抄东西(其实没有什么是安全的啦)。所以,不需要拆机就能对产品进行固件升级是很多人想要的效果,不仅方便而且节省精力和成本。

4.如何设计IAP

经过上面的介绍我们知道完整的IAP应该包括三个部分:1.boot 2.user app 3.上位机控制端。

在做之前在网上查了很多资料,要不就是空空而谈如何如何实现要不就是只有一个boot代码,就是找不到整套的资料,这可能与整个电子行业的封闭有关。在这方面真的要学学互联网的开源精神。

当然啦,也有很多优秀的文章,这里给大家传送门:

基于Ymodem协议的IAP上位机(C#)

献丑之STM32F单片机IAP方法

所以我决定将这个项目开源出来,整个项目包括三套代码。

  1. boot部分:可用于stm32f1xx平台,几乎不需要修改代码,只需要根据你的MCU简单的配置一下工程文件就好了。(我的平台是stm32f103ze)

  2. app部分:其实就是你需要实现产品功能的部分。我这里采用了usmart框架,用它的原因主要是方便和boot部分以及上位机部分进行通信。这部分目前做的比较少,之后会将他抽象出来。

  3. 上位机部分:前面两个部分运行在MCU内部用的是C编程。这部分运行在windows平台用的是C#,基于 .net4.0。你可以很方便的将它移植到你的项目中。

5.干货在哪里

说了这么多,是时候show my code了。我把代码都托管在github上了(之后会放到csdn上面),每套代码都有说明文档(请按照下述编号看起)。但是文档不够详细,之后会丰富。目前测试的平台比较少,希望大家可以一起来测试提交bug,一起来完善。

  1. boot部分代码

  2. app部分代码(支持usmart的重量版)
    app部分代码(简洁的轻量版)

  3. 上位机代码

6.还需要去做什么

  • 实现aes文件加密

  • 实现一边接收数据一边写入数据

  • 实现可更改每包数据大小(目前每包是1024字节)

    • 已经实现32Byte、64Byte、128Byte、256Byte、512Byte、1KByte可选(2017.6.11更新)
  • 实现蓝牙串口iap

    • 我采用HC-08蓝牙透传模块(BLE类型),在32Byte和64Byte的情况下可以实现蓝牙串口iap(跟蓝牙模块有关,建议不要使用BLE类型的,它的延时较高。2017.6.11)
  • 增加spi接口和i2c接口的iap(目前是uart接口)

7.诚邀有兴趣的小伙伴一起来。。。

更新时间20170605

更新时间20170611

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容