PS:本【案例】基于STM32F10x系列。
如何利用蓝牙等无线设备进行无线下载编程?
简化步骤:
1. 第一步:配置BootLoard工程,通过有线(如ST-LinK)下载BootLoard工程。
2. 第二步:配置用户工程,通过无线(如蓝牙)下载APP到MCU内。
具体步骤:
1. 配置BootLoard工程:
a. BootLoard是什么?
是一个工程。BootLoard工程相当于电脑的Boos系统, 相当于母鸡下蛋的那个牵引蛋。与用户工程的关系就像, BootLoard相当于360手机助手, 用户工程相当于你要下载的APP。也就是说BootLoard本质也是个App。使用BootLoard引导下载程序的方式被称为使用IAP(in application programming) , 这种方式利用stm32的任意一个通讯端口,如spi,iic,can,usart等来更新程序。
b. 为什么要用BootLoard来更新(下载)用户工程?
可以实现远程编程和无线编程。比如小米手环就是利用蓝牙更新手环里面的程序,手机通过WIFI等获取小米官网的最新程序到手机内。再通过手机的蓝牙将最新程序烧写到小米手环内。
对于我们在校生有啥用呢?你需要无线下载的时候就用这个。比如在比赛现场无线下载程序什么的,别说我说的(逃)!
c. BootLoard工程怎么编写?慢慢编呗,哈哈,开玩笑了,当然找会的人要呀,比如我。或者去网上搜罗,然后自己修改参数。那么如何修改那些参数呢?
参数修改:
很简单,就修改2个地方:一,Target;二,Flash DownLoad ;
一,Target:配置程序的首地址0x8000000和空间大小0x10000(64KB)**
二,Flash DownLoad:配置烧写时BootLoader的空间大小
2. 配置用户工程:
a. 用户工程有什么不同?没有任何代码差异,主要差异在配置上。
b. 用户工程如何配置?
修改3个地方:一,Target;二,Flash DownLoad;三,User
跟修改BootLoard工程一样,只是多了User。因为,我们蓝牙发送的是.bin文件,而不是.Hex文件。
一,Target:配置程序的首地址0x8010000和空间小0x70000(448KB)
二,Flash DownLoad:配置烧写时BootLoader的空间大小
三,User:配置生成Bin文件
问题补充:
1. 用户工程烧进去运行不成功的常见原因?
a) 用户工程的起始地址设置有误
图片无法上传,只好使用链接
http://chuantu.biz/t5/148/1500955102x987742248.png
参考资料:
- Stm32 IAP程序编写及用户程序编写
http://blog.sina.com.cn/s/blog_b4ce638e0102w36l.html - keil MDK中如何生成*.bin格式的文件
http://blog.csdn.net/zhzht19861011/article/details/5927924 - STM32 IAP Boot参考(讲解附源码)资料
http://download.csdn.net/download/cxsys/4427640 - 不知道fromelf.exe文件路径怎么办?
http://www.jianshu.com/p/549e0857e450 - 关于STM32做IAP程序的一些问题
https://my.oschina.net/purplespace/blog/856244 - KEIL MDK输出map文件分析
http://blog.csdn.net/ropai/article/details/7493168