[应用相关] 关于STM32 IAP

[复制链接]
2416|53
 楼主| susceptibility 发表于 2020-5-17 10:58 | 显示全部楼层 |阅读模式
转眼间天亮了......

然后就想起了一个朋友QQ的个性签名:年轻人总是要为一些自己认为有意义的事情而废寝忘食,通宵达旦,直至白发方休........
对了这篇**一定会介绍的很详细,请细嚼慢咽.......嗯,我是这样认为的,,,,,,



作者:杨奉武
链接:https://www.jianshu.com/p/8eb8465d5dee
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 楼主| susceptibility 发表于 2020-5-17 10:58 | 显示全部楼层
上面是昨天写的,应该说是今天写的,,今天发现发现博客又不能复制粘贴图片了!!!!然后就睡了一觉,,麻烦。。。。是不是因为我写的博客有太多的图片而把我屏蔽了。能让人一目了然的就是图片。。。。
 楼主| susceptibility 发表于 2020-5-17 10:59 | 显示全部楼层
说一下自己是如何做的,,,

先说一下实现的功能

IAP程序的功能
634205ec0a87509530.png
 楼主| susceptibility 发表于 2020-5-17 10:59 | 显示全部楼层
再看自己的用户程序--用户程序自己也做了些设置
874615ec0a89f3de17.png
 楼主| susceptibility 发表于 2020-5-17 11:00 | 显示全部楼层
对了关于我为什么拷贝到Flash里面------自己用的单片机的RAM不够用,存不了用户程序,所以自己就定义了一个小点的数组(环形队列),串口一边接收,一边往Flash里面写,环形队列可是帮了大忙了,,,,
 楼主| susceptibility 发表于 2020-5-17 11:00 | 显示全部楼层
把IAP升级程序下进去,以后就直接通过串口发送自己的用户程序就行了...什么都不需要做了,先说一下操作过程吧!最后有自己的源码
 楼主| susceptibility 发表于 2020-5-17 11:01 | 显示全部楼层
IAP程序软件不需要任何配置
79825ec0a8f421ced.png
376335ec0a8fce5d7a.png
 楼主| susceptibility 发表于 2020-5-17 11:02 | 显示全部楼层
波特率太快的话,数据来不及写入Flash,环形队列容易溢出,,太慢的话,程序发送的慢。。。

用户程序软件需要一些配置
201745ec0a91b38120.png
8006000告诉编译器我的用户程序打算在这里开始,你帮我设置一下吧,默认是在8000000开始的

0x1A000,就是告诉编译器我的程序空间有这么大。
 楼主| susceptibility 发表于 2020-5-17 11:02 | 显示全部楼层
我的用户程序里面也是设置的6000,这个一定要和程序设置的一样哈
895105ec0a943530c7.png
关于这个我后面会说为什么这样设置。。。当然也可以百度一下。
 楼主| susceptibility 发表于 2020-5-17 11:03 | 显示全部楼层
其实我的本来是
642705ec0a961c5c7a.png
20000换成十进制就是131072个字节  除以1024 等于128
 楼主| susceptibility 发表于 2020-5-17 11:03 | 显示全部楼层
由于我先把IAP程序下进去了,IAP程序也需要空间来运行,,,我就给了他6000 换成十进制就是24576  除以1024就是24K

我的总共是128K然后去掉IAP暂用的24K就是  128-24 = 104K  = 106496个字节   换成16进制就是 1A000

所以我上面写了1A000

对了如果您的板子是大容量的如果您非常明白就自己随意修改把,别忘了修改程序里的那个,,,
 楼主| susceptibility 发表于 2020-5-17 11:04 | 显示全部楼层
如果不是很明白按照上面修改就行,后面会让您明白
282055ec0a99e9ebff.png
这个呢就是让Keil软件帮忙生成bin文件
 楼主| susceptibility 发表于 2020-5-17 11:04 | 显示全部楼层
F:\Keil4&&MDK4.70A\ARM\ARMCC\bin\fromelf.exe   --bin -o  .\Progect\Progect.bin  ..\Progect\output\Progect.axf

F:\Keil4&&MDK4.70A\ARM\ARMCC\bin\fromelf.exe   --bin -o这个是执行的命令,就是生成bin文件,根据自己的安装路径找哈

.\Progect\Progect.bin 就是告诉他把生成的bin文件放在哪个地方

..\Progect\output\Progect.axf 这个就是自己工程编译的时候产生的.axf文件,根据自己的找到

./当前目录

../上一级目录

../../上上一级目录
 楼主| susceptibility 发表于 2020-5-17 11:06 | 显示全部楼层
关于Bin文件和Hex文件

http://blog.sina.com.cn/s/blog_6b94d5680100lo2h.html
 楼主| susceptibility 发表于 2020-5-17 11:06 | 显示全部楼层
这是我的用户程序的Hex与Bin
261995ec0aa2e4fc5e.png
咱们自己设置好写到哪里了,所以前头的就不需要了,后面的校验也不需要了,,不过呢应该向他那样加上校验,数据对了再写进去!!!!
 楼主| susceptibility 发表于 2020-5-17 11:07 | 显示全部楼层
好生成了bin文件
875815ec0aa58f4034.png
然后
984855ec0aa68953d4.png
675615ec0aa8ae694c.png
 楼主| susceptibility 发表于 2020-5-17 11:08 | 显示全部楼层
 楼主| susceptibility 发表于 2020-5-17 11:09 | 显示全部楼层
假设修改了程序了,再升级
338205ec0aabe0ea4b.png
89825ec0aac890da5.png
27235ec0aad054269.png
184475ec0aad98ff4c.png
您再升级就再升级把!!
 楼主| susceptibility 发表于 2020-5-17 11:10 | 显示全部楼层
再升级
115665ec0aafc03058.png
879235ec0ab021e11f.png
828095ec0ab0ce7155.png
不要老是升级哈!!!玩坏了Flash可就不好玩了
 楼主| susceptibility 发表于 2020-5-17 11:10 | 显示全部楼层
自己用的F103RBT6单片机的RAM只有

5000 也就是20480个字节,,但是自己的程序已经超过了这个字节数
65795ec0ab3139af9.png

所以自己就不能先定义一个很大的数组然后然后把程序先存在里面了,列如很多都是:

u8 USART_RX_BUF[USART_REC_LEN]  __attribute__ ((at(0X20001000)));//接收缓冲,最大USART_REC_LEN个字节,起始地址为0X20001000.//把数据固定的存在以0X20001000为起始地址的RAM里面
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

238

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部