打印
[应用相关]

关于STM32 IAP

[复制链接]
1641|53
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
转眼间天亮了......

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



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

使用特权

评论回复
沙发
susceptibility|  楼主 | 2020-5-17 10:58 | 只看该作者
上面是昨天写的,应该说是今天写的,,今天发现发现博客又不能复制粘贴图片了!!!!然后就睡了一觉,,麻烦。。。。是不是因为我写的博客有太多的图片而把我屏蔽了。能让人一目了然的就是图片。。。。

使用特权

评论回复
板凳
susceptibility|  楼主 | 2020-5-17 10:59 | 只看该作者
说一下自己是如何做的,,,

先说一下实现的功能

IAP程序的功能

使用特权

评论回复
地板
susceptibility|  楼主 | 2020-5-17 10:59 | 只看该作者
再看自己的用户程序--用户程序自己也做了些设置

使用特权

评论回复
5
susceptibility|  楼主 | 2020-5-17 11:00 | 只看该作者
对了关于我为什么拷贝到Flash里面------自己用的单片机的RAM不够用,存不了用户程序,所以自己就定义了一个小点的数组(环形队列),串口一边接收,一边往Flash里面写,环形队列可是帮了大忙了,,,,

使用特权

评论回复
6
susceptibility|  楼主 | 2020-5-17 11:00 | 只看该作者
把IAP升级程序下进去,以后就直接通过串口发送自己的用户程序就行了...什么都不需要做了,先说一下操作过程吧!最后有自己的源码

使用特权

评论回复
7
susceptibility|  楼主 | 2020-5-17 11:01 | 只看该作者
IAP程序软件不需要任何配置

使用特权

评论回复
8
susceptibility|  楼主 | 2020-5-17 11:02 | 只看该作者
波特率太快的话,数据来不及写入Flash,环形队列容易溢出,,太慢的话,程序发送的慢。。。

用户程序软件需要一些配置

8006000告诉编译器我的用户程序打算在这里开始,你帮我设置一下吧,默认是在8000000开始的

0x1A000,就是告诉编译器我的程序空间有这么大。

使用特权

评论回复
9
susceptibility|  楼主 | 2020-5-17 11:02 | 只看该作者
我的用户程序里面也是设置的6000,这个一定要和程序设置的一样哈

关于这个我后面会说为什么这样设置。。。当然也可以百度一下。

使用特权

评论回复
10
susceptibility|  楼主 | 2020-5-17 11:03 | 只看该作者
其实我的本来是

20000换成十进制就是131072个字节  除以1024 等于128

使用特权

评论回复
11
susceptibility|  楼主 | 2020-5-17 11:03 | 只看该作者
由于我先把IAP程序下进去了,IAP程序也需要空间来运行,,,我就给了他6000 换成十进制就是24576  除以1024就是24K

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

所以我上面写了1A000

对了如果您的板子是大容量的如果您非常明白就自己随意修改把,别忘了修改程序里的那个,,,

使用特权

评论回复
12
susceptibility|  楼主 | 2020-5-17 11:04 | 只看该作者
如果不是很明白按照上面修改就行,后面会让您明白

这个呢就是让Keil软件帮忙生成bin文件

使用特权

评论回复
13
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文件,根据自己的找到

./当前目录

../上一级目录

../../上上一级目录

使用特权

评论回复
14
susceptibility|  楼主 | 2020-5-17 11:06 | 只看该作者
关于Bin文件和Hex文件

http://blog.sina.com.cn/s/blog_6b94d5680100lo2h.html

使用特权

评论回复
15
susceptibility|  楼主 | 2020-5-17 11:06 | 只看该作者
这是我的用户程序的Hex与Bin

咱们自己设置好写到哪里了,所以前头的就不需要了,后面的校验也不需要了,,不过呢应该向他那样加上校验,数据对了再写进去!!!!

使用特权

评论回复
16
susceptibility|  楼主 | 2020-5-17 11:07 | 只看该作者
好生成了bin文件

然后

使用特权

评论回复
17
susceptibility|  楼主 | 2020-5-17 11:08 | 只看该作者

使用特权

评论回复
18
susceptibility|  楼主 | 2020-5-17 11:09 | 只看该作者
假设修改了程序了,再升级




您再升级就再升级把!!

使用特权

评论回复
19
susceptibility|  楼主 | 2020-5-17 11:10 | 只看该作者
再升级



不要老是升级哈!!!玩坏了Flash可就不好玩了

使用特权

评论回复
20
susceptibility|  楼主 | 2020-5-17 11:10 | 只看该作者
自己用的F103RBT6单片机的RAM只有

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


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

u8 USART_RX_BUF[USART_REC_LEN]  __attribute__ ((at(0X20001000)));//接收缓冲,最大USART_REC_LEN个字节,起始地址为0X20001000.//把数据固定的存在以0X20001000为起始地址的RAM里面

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

238

帖子

1

粉丝