打印
[活动专区]

【AT-START-F425测评】4、获取MCU96位唯一ID、FLASH大小

[复制链接]
1822|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 freeelectron 于 2022-3-4 18:17 编辑

1、关于电子签名

设备的电子签名中包含的存储容量信息和96位的唯一设备ID。它被存储在片上闪存的信息模块 中。96位唯一设备ID对于每颗芯片而言都是唯一的。它可以用作序列号,或安全密钥的一部分, 等等。


2、96位唯一ID和Flash大小


96位ID信息,地址依次为0x1FFFF7E8、0x1FFFF7EC、0x1FFFF7F0;

flash大小信息,地址依次0x1FFF F7E0;

设备出厂的时候,已经固化在mcu内部的,用户不可更改。


3、程序读取
#define   STORAGE_INFO       0x1FFFF7E0
#define   STORAGE_INFO_SRAM
#define   STORAGE_INFO_FLASH

#define   UNIQUE_ID     0x1FFFF7E8

#define   UNIQUE_ID_0_31     0x1FFFF7E8
#define   UNIQUE_ID_32_63    0x1FFFF7EC
#define   UNIQUE_ID_64_95    0x1FFFF7F0

struct McuInfo_t
{
        uint32_t Size;
        uint8_t UniqueId[12];
}McuInfo;



void GetMcuInfo(void)
{
        McuInfo.Size=*(uint32_t*)STORAGE_INFO;
        
        printf("flash size=%dk\r\n\r\n",McuInfo.Size);
        printf("unique id:[");
        for(uint8_t i=0;i<12;i++)
        {
                McuInfo.UniqueId[i]=*(uint8_t*)(UNIQUE_ID+i);
                printf(" %02x",McuInfo.UniqueId[i]);
        }
        printf("]\r\n");
}

4、实验现象






可以看出,程序读取的和调试器调试读取的一致。




















使用特权

评论回复
沙发
yangxiaor520| | 2022-3-4 18:44 | 只看该作者
学习了,谢谢分享。

使用特权

评论回复
板凳
freeelectron|  楼主 | 2022-3-4 19:11 | 只看该作者
yangxiaor520 发表于 2022-3-4 18:44
学习了,谢谢分享。

相互交流,共同进步

使用特权

评论回复
地板
lzbf| | 2022-12-5 21:28 | 只看该作者
做数字签名可以,防伪也可以。              

使用特权

评论回复
5
maqianqu| | 2022-12-5 22:19 | 只看该作者
stm32也有唯一的ID。              

使用特权

评论回复
6
sesefadou| | 2022-12-6 15:30 | 只看该作者
这个不能自己写入数据的??              

使用特权

评论回复
7
sesefadou| | 2022-12-6 17:09 | 只看该作者
这个唯一id怎么获取数据?              

使用特权

评论回复
8
freeelectron|  楼主 | 2022-12-6 19:12 | 只看该作者
sesefadou 发表于 2022-12-6 15:30
这个不能自己写入数据的??

不行的,只读

使用特权

评论回复
9
Arvin2022| | 2022-12-11 21:41 | 只看该作者
想问下,内部flash如何实现存储配置数据?意思是程序烧录时就把配置参数一同烧录好的那种,本人小白,求教大神

使用特权

评论回复
10
freeelectron|  楼主 | 2022-12-12 08:35 | 只看该作者
Arvin2022 发表于 2022-12-11 21:41
想问下,内部flash如何实现存储配置数据?意思是程序烧录时就把配置参数一同烧录好的那种,本人小白,求教 ...

往bin文件特定的地址写入你想要存的数据即可

使用特权

评论回复
11
Arvin2022| | 2022-12-12 09:35 | 只看该作者
本帖最后由 Arvin2022 于 2022-12-12 09:39 编辑
freeelectron 发表于 2022-12-12 08:35
往bin文件特定的地址写入你想要存的数据即可

感谢大神回复    我目前用的是这条语句,但是存储的数据是安好32位间隔,如图
   int Temp[] __attribute__ ((section(".ARM.__at_0x08003C00"))) = {0x12, 0x23, 0x45, 0x67, 0x89, 0x10};


通过ICP Programmer  读取出来的数据是按照32位间隔写入的。怎样才能让数据按照8位或者16位存入对应地址?   另外如果是字符串需要用什么指令?

再次感谢大神

使用特权

评论回复
12
hanter| | 2022-12-30 10:15 | 只看该作者
应该跟你定义的数据类型有关,int。你改成byte之类的试试看。

使用特权

评论回复
13
houjiakai| | 2023-1-5 16:34 | 只看该作者
后期可以利用这个做电子指令。              

使用特权

评论回复
14
jtracy3| | 2023-1-5 16:43 | 只看该作者
这个做防伪使用的吗?              

使用特权

评论回复
15
linfelix| | 2023-1-6 13:17 | 只看该作者
96位ID有什么作用              

使用特权

评论回复
16
mnynt121| | 2023-1-6 15:18 | 只看该作者
这个能不能动态修改这个ID呢?              

使用特权

评论回复
评论
forgot 2023-1-17 09:04 回复TA
不行的,改不了的 
17
sanfuzi| | 2023-2-4 11:43 | 只看该作者
这个唯一ID不能修改的吗?              

使用特权

评论回复
18
burgessmaggie| | 2023-2-4 11:52 | 只看该作者
这个可以,以后做加密狗应该可以。

使用特权

评论回复
19
youtome| | 2023-2-4 13:08 | 只看该作者
这个获取id有什么作用呢?》              

使用特权

评论回复
20
xiaoyaodz| | 2023-2-4 15:01 | 只看该作者
不能通过外部修改ID数据吗?              

使用特权

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

本版积分规则

个人签名:stm32/LoRa物联网:304350312

65

主题

785

帖子

10

粉丝