你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 程序下载地址问题

[复制链接]
wang12zhe-29129 提问时间:2015-1-12 18:38 /

编译好的程序是从Flash的哪个地址开始写入Flash的?
以后的每个地址是按照怎样的规律变化的?

下面是我监控的STM32一次下载过程,使用的是串口下载,得到的上位机软件通过串口发送给STM32的待写入程序的Flash地址,
感觉不是特别有规律,那上位机软件是如何计算Flash地址的。每次下载的地址都一样吗? 不同型号的芯片会有差别吗?

每一组数据的前四个是Flash地址,第五个个校验
0X08,0X00,0X00,0X00,0X08
0X08,0X00,0X00,0X40,0X48
0X08,0X00,0X00,0X80,0X88
0X08,0X00,0X00,0XC0,0XC8
0X08,0X00,0X01,0X00,0X09
0X08,0X00,0X01,0X40,0X49
0X08,0X00,0X01,0X80,0X89
0X08,0X00,0X04,0X40,0X4C
0X08,0X00,0X04,0X80,0X8C
0X08,0X00,0X04,0XC0,0XCC
0X08,0X00,0X05,0X00,0X0D
0X08,0X00,0X05,0X40,0X4D
0X08,0X00,0X05,0X80,0X8D
0X08,0X00,0X08,0X40,0X40
0X08,0X00,0X08,0X80,0X80
0X08,0X00,0X08,0XC0,0XC0
0X08,0X00,0X09,0X00,0X01
0X08,0X00,0X09,0X40,0X41
0X08,0X00,0X09,0X80,0X81
0X08,0X00,0X0C,0X40,0X44
0X08,0X00,0X0C,0X80,0X84
0X08,0X00,0X0C,0XC0,0XC4
0X08,0X00,0X0D,0X00,0X05
0X08,0X00,0X0D,0X40,0X45
0X08,0X00,0X0D,0X80,0X85
0X08,0X00,0X10,0X40,0X58
0X08,0X00,0X10,0X80,0X98
0X08,0X00,0X10,0XC0,0XD8
0X08,0X00,0X11,0X00,0X19
0X08,0X00,0X11,0X40,0X59
0X08,0X00,0X11,0X80,0X99


收藏 评论12 发布时间:2015-1-12 18:38

举报

12个回答
qianfan 回答时间:2015-1-12 21:01:23
一般来说是从0X0800_0000开始下载的,如果是hex格式里面有一个字节记录的是下载的其实地址。如果是bin格式的话,需要自己指定地址。
程序是分批下载的,每一次下载的数据大小不能超过256个字节。如果你有1K的数据,那么应该分成4次下载。第一次的下载是0X0800_0000,下载0-256个字节。然后下载的程序没传送一个字节会将地址偏移一次。当第二次下载的时候,地址就会变成0X0800_0000+256。再次下载,以此类推。
wangshu2013 回答时间:2015-1-12 22:10:58
肯定不同的,
wang12zhe-29129 回答时间:2015-1-12 22:19:33
QianFan 发表于 2015-1-12 21:01
一般来说是从0X0800_0000开始下载的,如果是hex格式里面有一个字节记录的是下载的其实地址。如果是bin格式 ...

我也认为是这样,但是上图是我抓取的一次串口下载过程里的 下载地址  感觉和想象的不一样
拼命三郎 回答时间:2015-1-13 08:35:00
学习了 哈哈
我是酱油哥 回答时间:2015-1-13 08:50:11
学习一下
AndyYau-268557 回答时间:2015-1-13 08:53:27
1楼正解,非常清楚。
wn1900 回答时间:2015-1-13 10:01:31
学习一下了
wang12zhe-29129 回答时间:2015-1-14 18:57:31
QianFan 发表于 2015-1-12 21:01
一般来说是从0X0800_0000开始下载的,如果是hex格式里面有一个字节记录的是下载的其实地址。如果是bin格式 ...

我试验了一下,地址确实如你所说的,感谢

但是我一次写入64个,最后一次只有20个  我就加上44个0XFF,凑成64个,做最后一次发送,
之后再把这64个读了出来,和写入的比较,发现前20个一样

后边44个应该是0XFF的,但是读出来的却不是,   这是为什么
但是程序跑起来了,会不会有什么问题?
qianfan 回答时间:2015-1-14 19:21:47
wang12zhe-29129 发表于 2015-1-14 18:57
我试验了一下,地址确实如你所说的,感谢

但是我一次写入64个,最后一次只有20个  我就加上44个0XFF,凑 ...

这个没有试过,不过,有多少数据发送多少,别多写,估计会出问题。如果写0XFF的话可能会没事,因为芯片擦除之后全是0XFF。
你在写之前有没有擦除必要的页?
多加的数据后面的字节和和checkSum加上了吗?
wang12zhe-29129 回答时间:2015-1-15 16:23:15
QianFan 发表于 2015-1-14 19:21
这个没有试过,不过,有多少数据发送多少,别多写,估计会出问题。如果写0XFF的话可能会没事,因为芯片擦 ...

问题解决了,我多哈了一帧数据,
也就是说在最后一个地址里写了两次,  非常感谢
bwtxxy 回答时间:2019-7-25 09:28:10
大神好,我最近再编写一个烧写hex的程序。我想咨询一下,如果是烧写hex文件,hex文件本身最后一个校验码,但是STM3240XX写的话也需要校验码,这个校验码和hex文件里的校验码是一个意思吗?
bird0123 回答时间:2019-7-25 09:30:05
学习

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版