取之于民用之于民--IAP,SD卡升级,奉献给大家,支持开源

2019-07-21 08:10发布

SD卡实现IAP升级。mini板中完美通过。

iap 功能其实很实用。

工作之前还不知道有iap这个东东,后来工作了。公司用的就是这技术,

每次发给客户的软件都是bin文件让客户升级MCU软件。

过程是这样的,给bin文件客户,放入sd卡中,开机,升级。

免除了拆卸机器,烧录MCU这样繁琐的过程,并且客户没有烧录器,可以挂在网上,然客户自行下载升级。

很方便,可是我公司却将iap功能打包了。看不见源码。

这技术我觊觎很久了。

有幸网络认识原子大哥,投身mini大营,有了一个研究平台,

并且大哥开源高水准的代码,让我获益匪浅。


SD卡读取应用程序,很爽不是。

嘎嘎。 代码是移植原子哥的。




 操作过程: 1、烧录bootloader中的HEX文件,作为引导程序

                2、将程序通过MDK 生成BIN文件(修改成stm32.bin)
                

              
                      fromelf.exe 是MDK自带的HEX->BIN 程序, 查看你们的MDK安装位置,自行改成fromelf.exe的路径
                3、修改程序烧录ROM的位置 
                     


                     0x5000之前装的是boderloader引导升级程序

                   4、修改向量表(跟ROM一致,一定要改)
                        

                    5、编译
                        将生成的STM32.bin 放入SD卡中插在MINI板上,开机就可以升级了。
                  

                    6、升级OK,直接进入应用程序。



程序思想:上电检测SD卡,FAT初始化,检查stm32.bin文件。OK,进入升级。否则进入应用程序。




升级成功,自动进入应用(该应用程序是原子哥的,就该了改ROM位置以及向量表)


            
iap例程中,两个应用都是原子哥的,仅仅改了ROM和向量表。。








友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
强子
1楼-- · 2019-07-22 15:41
 精彩回答 2  元偷偷看……
suqingxiao
2楼-- · 2019-07-22 16:15
回复【14楼】强子:

回复【13楼】suqingxiao:
---------------------------------
这是STM32升级。可以理解为直接烧录。但是跟烧录还是有区别的。

---------------------------------
这个我有了解,我们以前就有产品是两个文件的,一个BOOTLOADER,一个是BIN,我看都是用ISP烧进去的。我自己也操作过。软件不记得了。
强子
3楼-- · 2019-07-22 16:38
回复【15楼】suqingxiao:
---------------------------------
bootloader 要用烧录器烧写。bin文件可以用SD卡。或者,通过串口发送。
串口发送是最简单的。说白了,单片机就是取应用CODE,两种方式得到CODE。串口接收、SD卡中读取。
最终将code写入指定地址的FLASH,然后通过指针跳转进入应用,进入应用main中执行,main本身就是一个死循环。向量偏移,堆栈初始化。
suqingxiao
4楼-- · 2019-07-22 19:01

回复【16楼】强子:

回复【15楼】suqingxiao:
---------------------------------
bootloader 要用烧录器烧写。bin文件可以用SD卡。或者,通过串口发送。
串口发送是最简单的。说白了,单片机就是取应用CODE,两种方式得到CODE。串口接收、SD卡中读取。
最终将code写入指定地址的FLASH,然后通过指针跳转进入应用,进入应用main中执行,main本身就是一个死循环。向量偏移,堆栈初始化。

---------------------------------
是不是这样说,bootloader的HEX文件我可以用ISP烧进去,BIN文件通过串口发送给单片机,那BIN文件在电脑上用什么软件。是不是可以用mcuisp 软件
                                        

其实我现在用的ISP就是串口的两个IO口 

强子
5楼-- · 2019-07-22 23:13
回复【17楼】suqingxiao:
-------------------------------
正确。bin文件通过串口调试工具发送。但是代码得要改改。要加上串口那块。定义一个buffer。
原子哥。例程中是一次性接收,然后写flash。最好是一边收,一边写。波特率调慢点。毕竟没有数据校验。
565956807@qq.co
6楼-- · 2019-07-23 02:03
 精彩回答 2  元偷偷看……

一周热门 更多>