【MCU】如何利用蓝牙对单片机进行无线编程?

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等获取小米官网的最新程序到手机内。再通过手机的蓝牙将最新程序烧写到小米手环内。

【MCU】如何利用蓝牙对单片机进行无线编程?_第1张图片
小米手环如何更新固件?

对于我们在校生有啥用呢?你需要无线下载的时候就用这个。比如在比赛现场无线下载程序什么的,别说我说的(逃)!

c. BootLoard工程怎么编写?慢慢编呗,哈哈,开玩笑了,当然找会的人要呀,比如我。或者去网上搜罗,然后自己修改参数。那么如何修改那些参数呢?
参数修改:
很简单,就修改2个地方:一,Target;二,Flash DownLoad ;
一,Target:配置程序的首地址0x8000000和空间大小0x10000(64KB)**

【MCU】如何利用蓝牙对单片机进行无线编程?_第2张图片
Boot配置01-Target

二,Flash DownLoad:配置烧写时BootLoader的空间大小

【MCU】如何利用蓝牙对单片机进行无线编程?_第3张图片
Boot配置02-Flash DownLoad
【MCU】如何利用蓝牙对单片机进行无线编程?_第4张图片
Boot配置-注意01

2. 配置用户工程:

a. 用户工程有什么不同?没有任何代码差异,主要差异在配置上。
b. 用户工程如何配置?
修改3个地方:一,Target;二,Flash DownLoad;三,User
跟修改BootLoard工程一样,只是多了User。因为,我们蓝牙发送的是.bin文件,而不是.Hex文件。
一,Target:配置程序的首地址0x8010000和空间小0x70000(448KB)

【MCU】如何利用蓝牙对单片机进行无线编程?_第5张图片
用户工程配置01-Target

二,Flash DownLoad:配置烧写时BootLoader的空间大小

【MCU】如何利用蓝牙对单片机进行无线编程?_第6张图片
用户工程配置02-Flash DownLoad

三,User:配置生成Bin文件

【MCU】如何利用蓝牙对单片机进行无线编程?_第7张图片
用户工程配置03-User
OK了

问题补充:

1. 用户工程烧进去运行不成功的常见原因?

a) 用户工程的起始地址设置有误

图片无法上传,只好使用链接
http://chuantu.biz/t5/148/1500955102x987742248.png


参考资料:

  1. Stm32 IAP程序编写及用户程序编写
    http://blog.sina.com.cn/s/blog_b4ce638e0102w36l.html
  2. keil MDK中如何生成*.bin格式的文件
    http://blog.csdn.net/zhzht19861011/article/details/5927924
  3. STM32 IAP Boot参考(讲解附源码)资料
    http://download.csdn.net/download/cxsys/4427640
  4. 不知道fromelf.exe文件路径怎么办?
    http://www.jianshu.com/p/549e0857e450
  5. 关于STM32做IAP程序的一些问题
    https://my.oschina.net/purplespace/blog/856244
  6. KEIL MDK输出map文件分析
    http://blog.csdn.net/ropai/article/details/7493168

你可能感兴趣的:(【MCU】如何利用蓝牙对单片机进行无线编程?)