查看: 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, 防过压防过流防反接
回复
使用道具
举报