[有问必答]关于MCU bootloader与app的固件版本号存放位置

[有问必答]关于MCU bootloader与app的固件版本号存放位置

查看: 5043|回复: 24

[有问必答]

关于MCU bootloader与app的固件版本号存放位置

[复制链接]

薪火相传

薪火相传

当前离线

积分454

77

主题223

回帖454

积分

高级会员

高级会员, 积分 454, 距离下一级还需 45 积分

高级会员, 积分 454, 距离下一级还需 45 积分

积分454

发消息

电梯直达

楼主

发表于 2021-12-1 16:04:53

|

只看该作者

|只看大图

|倒序浏览

|阅读模式

像这种版本号信息一般放到哪?mcu内部flash?eeprom?

因为内部flash的页大小是2k,那么存在内部flash至少会占用到2k

收藏4

回复

使用道具

举报

eric2013

eric2013

当前在线

积分117055

1万

主题7万

回帖11万

积分

管理员

积分117055

发消息

沙发

发表于 2021-12-1 16:46:21

|

只看该作者

简单易用,存在这里就可以:

QQ截图20211201164605.png (52.71 KB, 下载次数: 1)

下载附件

2021-12-1 16:46 上传

微信公众号:点击此处扫描图片关注

B站视频:https://space.bilibili.com/678329477

淘宝小店:https://anfulai.taobao.com/

【2025新品】H7-TOOL PLUS电池版发布,真正的手持设备,微型数控电源输出电流提升至2A,峰值3A, 防过压防过流防反接

回复

使用道具

举报

薪火相传

薪火相传

当前离线

积分454

77

主题223

回帖454

积分

高级会员

高级会员, 积分 454, 距离下一级还需 45 积分

高级会员, 积分 454, 距离下一级还需 45 积分

积分454

发消息

板凳

楼主|

发表于 2021-12-1 17:22:16

|

只看该作者

eric2013 发表于 2021-12-1 16:46

简单易用,存在这里就可以:

这个0x00000207是地址,还是表示V1.00?

读时直接取地址么?

回复

使用道具

举报

eric2013

eric2013

当前在线

积分117055

1万

主题7万

回帖11万

积分

管理员

积分117055

发消息

地板

发表于 2021-12-1 17:35:25

|

只看该作者

薪火相传 发表于 2021-12-1 17:22

这个0x00000207是地址,还是表示V1.00?

读时直接取地址么?

这个你随便表示,每个可以记录32bit数据,我们简单的注释了个V1.00,不必介意。

对,直接对读取这个地址内容即可。

微信公众号:点击此处扫描图片关注

B站视频:https://space.bilibili.com/678329477

淘宝小店:https://anfulai.taobao.com/

【2025新品】H7-TOOL PLUS电池版发布,真正的手持设备,微型数控电源输出电流提升至2A,峰值3A, 防过压防过流防反接

回复

使用道具

举报

薪火相传

薪火相传

当前离线

积分454

77

主题223

回帖454

积分

高级会员

高级会员, 积分 454, 距离下一级还需 45 积分

高级会员, 积分 454, 距离下一级还需 45 积分

积分454

发消息

5#

楼主|

发表于 2021-12-1 18:03:57

|

只看该作者

eric2013 发表于 2021-12-1 17:35

这个你随便表示,每个可以记录32bit数据,我们简单的注释了个V1.00,不必介意。

对,直接对读取这个地址 ...

我还是有点不太明白,这个地址是特定的还是?好像不是内部闪存的地址

回复

使用道具

举报

caicaptain2

caicaptain2

当前离线

积分3246

355

主题2176

回帖3246

积分

版主

积分3246

发消息

6#

发表于 2021-12-2 09:11:14

|

只看该作者

薪火相传 发表于 2021-12-1 18:03

我还是有点不太明白,这个地址是特定的还是?好像不是内部闪存的地址

这就是一个内部的flash地址,大概是0x8000 001C

第一个DCD __initial_sp就是flash的首地址。后面每一行占用4个字节,也就是地址依次增加4个字节。

回复

使用道具

举报

薪火相传

薪火相传

当前离线

积分454

77

主题223

回帖454

积分

高级会员

高级会员, 积分 454, 距离下一级还需 45 积分

高级会员, 积分 454, 距离下一级还需 45 积分

积分454

发消息

7#

楼主|

发表于 2021-12-2 11:40:08

|

只看该作者

caicaptain2 发表于 2021-12-2 09:11

这就是一个内部的flash地址,大概是0x8000 001C

第一个DCD __initial_sp就是flash的首地址。后面每一行 ...

所以上面那个0x00000207只是个指针变量的名称?我能不能这样定义一个名称?这样会报错

1.png (31.96 KB, 下载次数: 1)

下载附件

2021-12-2 11:39 上传

回复

使用道具

举报

eric2013

eric2013

当前在线

积分117055

1万

主题7万

回帖11万

积分

管理员

积分117055

发消息

8#

发表于 2021-12-2 11:55:25

|

只看该作者

薪火相传 发表于 2021-12-2 11:40

所以上面那个0x00000207只是个指针变量的名称?我能不能这样定义一个名称?这样会报错

这个默认是存到内部Flash的。

微信公众号:点击此处扫描图片关注

B站视频:https://space.bilibili.com/678329477

淘宝小店:https://anfulai.taobao.com/

【2025新品】H7-TOOL PLUS电池版发布,真正的手持设备,微型数控电源输出电流提升至2A,峰值3A, 防过压防过流防反接

回复

使用道具

举报

ilcvm

ilcvm

当前离线

积分126

0

主题126

回帖126

积分

初级会员

初级会员, 积分 126, 距离下一级还需 73 积分

初级会员, 积分 126, 距离下一级还需 73 积分

积分126

发消息

9#

发表于 2021-12-2 13:31:56

|

只看该作者

薪火相传 发表于 2021-12-2 11:40

所以上面那个0x00000207只是个指针变量的名称?我能不能这样定义一个名称?这样会报错

在40行后加一行

IMPORT boot_ver复制代码

应该就不会报错了,当然前提是你已经在其他C文件定义了一个名为boot_ver的全局字符串变量

回复

使用道具

举报

caicaptain2

caicaptain2

当前离线

积分3246

355

主题2176

回帖3246

积分

版主

积分3246

发消息

10#

发表于 2021-12-2 13:47:13

|

只看该作者

薪火相传 发表于 2021-12-2 11:40

所以上面那个0x00000207只是个指针变量的名称?我能不能这样定义一个名称?这样会报错

DCD是个汇编指令,后面是一个数据。 它是32bit的。 你可以写98976436之类的。 也可以用0x93784634。

你如果写boot_ver ,那么就需要补充定义一个数据给boot_ver。

回复

使用道具

举报

薪火相传

薪火相传

当前离线

积分454

77

主题223

回帖454

积分

高级会员

高级会员, 积分 454, 距离下一级还需 45 积分

高级会员, 积分 454, 距离下一级还需 45 积分

积分454

发消息

11#

楼主|

发表于 2021-12-2 14:05:47

|

只看该作者

caicaptain2 发表于 2021-12-2 09:11

这就是一个内部的flash地址,大概是0x8000 001C

第一个DCD __initial_sp就是flash的首地址。后面每一行 ...

是0x0800 001C

回复

使用道具

举报

薪火相传

薪火相传

当前离线

积分454

77

主题223

回帖454

积分

高级会员

高级会员, 积分 454, 距离下一级还需 45 积分

高级会员, 积分 454, 距离下一级还需 45 积分

积分454

发消息

12#

楼主|

发表于 2021-12-2 14:09:01

|

只看该作者

可以了,感谢几位小伙伴的解答,抱拳!

1.png (23.38 KB, 下载次数: 2)

下载附件

2021-12-2 14:08 上传

2.png (21.37 KB, 下载次数: 0)

下载附件

2021-12-2 14:08 上传

回复

使用道具

举报

eric2013

eric2013

当前在线

积分117055

1万

主题7万

回帖11万

积分

管理员

积分117055

发消息

13#

发表于 2021-12-2 19:11:16

|

只看该作者

薪火相传 发表于 2021-12-2 14:09

可以了,感谢几位小伙伴的解答,抱拳!

不容易,终于搞定了

微信公众号:点击此处扫描图片关注

B站视频:https://space.bilibili.com/678329477

淘宝小店:https://anfulai.taobao.com/

【2025新品】H7-TOOL PLUS电池版发布,真正的手持设备,微型数控电源输出电流提升至2A,峰值3A, 防过压防过流防反接

回复

使用道具

举报

xdh873939316

xdh873939316

当前离线

积分57

7

主题36

回帖57

积分

初级会员

初级会员, 积分 57, 距离下一级还需 142 积分

初级会员, 积分 57, 距离下一级还需 142 积分

积分57

发消息

14#

发表于 2022-1-10 10:59:11

|

只看该作者

有点疑问,为什么定义版本号不能直接在代码里面直接定义一个变量 uint32_t g_version = 2001// 表示V2.0.0.1 每次版本修改了,直接修改这个变量就好了。。

回复

使用道具

举报

云琴箫龙

云琴箫龙

当前离线

积分654

98

主题360

回帖654

积分

金牌会员

金牌会员, 积分 654, 距离下一级还需 346 积分

金牌会员, 积分 654, 距离下一级还需 346 积分

积分654

发消息

15#

发表于 2022-1-11 11:34:05

|

只看该作者

xdh873939316 发表于 2022-1-10 10:59

有点疑问,为什么定义版本号不能直接在代码里面直接定义一个变量 uint32_t g_version = 2001// 表示V2.0.0. ...

我理解的是为了实现不经过用户程序即可得到版本号的目的,比如程序变板砖了。又或者主程序去获得BOOT程序的版本,直接读绝对地址就可以。

回复

使用道具

举报

zzh616320030

zzh616320030

当前离线

积分26

2

主题20

回帖26

积分

新手上路

新手上路, 积分 26, 距离下一级还需 23 积分

新手上路, 积分 26, 距离下一级还需 23 积分

积分26

发消息

16#

发表于 2024-10-16 19:51:03

|

只看该作者

用变量的方式试了怎么是不行的,IMPORT boot_ver ,在别的文件里有定义了boot_ver为const常量数据了,编译没有问题,但是实际读出来数据不对,直接写数据就没有问题,是什么原因?

回复

使用道具

举报

zzh616320030

zzh616320030

当前离线

积分26

2

主题20

回帖26

积分

新手上路

新手上路, 积分 26, 距离下一级还需 23 积分

新手上路, 积分 26, 距离下一级还需 23 积分

积分26

发消息

17#

发表于 2024-10-16 19:51:29

|

只看该作者

用变量的方式试了怎么是不行的,IMPORT boot_ver ,在别的文件里有定义了boot_ver为const常量数据了,编译没有问题,但是实际读出来数据不对,直接写数据就没有问题,是什么原因?

回复

使用道具

举报

eric2013

eric2013

当前在线

积分117055

1万

主题7万

回帖11万

积分

管理员

积分117055

发消息

18#

发表于 2024-10-17 09:53:46

|

只看该作者

zzh616320030 发表于 2024-10-16 19:51

用变量的方式试了怎么是不行的,IMPORT boot_ver ,在别的文件里有定义了boot_ver为const常量数据了,编译 ...

那就干脆,直接写就行。

微信公众号:点击此处扫描图片关注

B站视频:https://space.bilibili.com/678329477

淘宝小店:https://anfulai.taobao.com/

【2025新品】H7-TOOL PLUS电池版发布,真正的手持设备,微型数控电源输出电流提升至2A,峰值3A, 防过压防过流防反接

回复

使用道具

举报

zzh616320030

zzh616320030

当前离线

积分26

2

主题20

回帖26

积分

新手上路

新手上路, 积分 26, 距离下一级还需 23 积分

新手上路, 积分 26, 距离下一级还需 23 积分

积分26

发消息

19#

发表于 2024-10-17 10:26:18

|

只看该作者

eric2013 发表于 2024-10-17 09:53

那就干脆,直接写就行。

谢谢回复,如果用const变量有办法吗,或者想用一个宏定义,但是我看这个文件不可以用宏定义,主要是我们软件分了几个分支对应不一样的产品,直接写的话不方便每次都需要修改,现在的做法是做了一个宏去定义boot_ver这个变量为不一样的值,然后引用这个值

回复

使用道具

举报

eric2013

eric2013

当前在线

积分117055

1万

主题7万

回帖11万

积分

管理员

积分117055

发消息

20#

发表于 2024-10-18 10:08:53

|

只看该作者

zzh616320030 发表于 2024-10-17 10:26

谢谢回复,如果用const变量有办法吗,或者想用一个宏定义,但是我看这个文件不可以用宏定义,主要是我们 ...

const attribute at设置到指定地址满足需求不

微信公众号:点击此处扫描图片关注

B站视频:https://space.bilibili.com/678329477

淘宝小店:https://anfulai.taobao.com/

【2025新品】H7-TOOL PLUS电池版发布,真正的手持设备,微型数控电源输出电流提升至2A,峰值3A, 防过压防过流防反接

回复

使用道具

举报

zzh616320030

zzh616320030

当前离线

积分26

2

主题20

回帖26

积分

新手上路

新手上路, 积分 26, 距离下一级还需 23 积分

新手上路, 积分 26, 距离下一级还需 23 积分

积分26

发消息

21#

发表于 2024-10-18 10:43:54

|

只看该作者

eric2013 发表于 2024-10-18 10:08

const attribute at设置到指定地址满足需求不

如果用const attribute at,这个地址可以用0x0800C020这个地址吗,这个就是跟上面实现的是同一个地址了

回复

使用道具

举报

zzh616320030

zzh616320030

当前离线

积分26

2

主题20

回帖26

积分

新手上路

新手上路, 积分 26, 距离下一级还需 23 积分

新手上路, 积分 26, 距离下一级还需 23 积分

积分26

发消息

22#

发表于 2024-10-18 10:45:14

|

只看该作者

eric2013 发表于 2024-10-18 10:08

const attribute at设置到指定地址满足需求不

上次的说错了,应该是0x08000020,这个地址

回复

使用道具

举报

eric2013

eric2013

当前在线

积分117055

1万

主题7万

回帖11万

积分

管理员

积分117055

发消息

23#

发表于 2024-10-19 09:45:05

|

只看该作者

zzh616320030 发表于 2024-10-18 10:45

上次的说错了,应该是0x08000020,这个地址

这地址,还是直接写道.s启动文件的向量表里面方便

微信公众号:点击此处扫描图片关注

B站视频:https://space.bilibili.com/678329477

淘宝小店:https://anfulai.taobao.com/

【2025新品】H7-TOOL PLUS电池版发布,真正的手持设备,微型数控电源输出电流提升至2A,峰值3A, 防过压防过流防反接

回复

使用道具

举报

kaixuan520

kaixuan520

当前离线

积分2

0

主题2

回帖2

积分

新手上路

新手上路, 积分 2, 距离下一级还需 47 积分

新手上路, 积分 2, 距离下一级还需 47 积分

积分2

发消息

24#

发表于 2024-11-18 17:52:22

|

只看该作者

zzh616320030 发表于 2024-10-18 10:43

如果用const attribute at,这个地址可以用0x0800C020这个地址吗,这个就是跟上面实现的是同一个地址了

直接用const attribute at就行了,可以定位到flash末尾附近的地址上,无论是bootloader上还是app里都方便读,并且不会占用整页的容量。

回复

使用道具

举报

eric2013

eric2013

当前在线

积分117055

1万

主题7万

回帖11万

积分

管理员

积分117055

发消息

25#

发表于 2024-11-19 09:55:38

|

只看该作者

kaixuan520 发表于 2024-11-18 17:52

直接用const attribute at就行了,可以定位到flash末尾附近的地址上,无论是bootloader上还是app里都方便 ...

这种方式使用非常方便,但有个小缺点,生成的bin问题比较大,特别是有效程序大小和版本号之间地址区域有较大空闲时。

微信公众号:点击此处扫描图片关注

B站视频:https://space.bilibili.com/678329477

淘宝小店:https://anfulai.taobao.com/

【2025新品】H7-TOOL PLUS电池版发布,真正的手持设备,微型数控电源输出电流提升至2A,峰值3A, 防过压防过流防反接

回复

使用道具

举报

相关推荐

画江山游侠平民攻略,《画江山》攻略:如何快速提升平民实力
Facebook平台BM是什么?如何创建?常见问题分析
服务产品的特征包括什么
365bet在线网址

服务产品的特征包括什么

07-03 316