freeelectron 发表于 2022-3-4 18:15

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

本帖最后由 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;
}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=*(uint8_t*)(UNIQUE_ID+i);
                printf(" %02x",McuInfo.UniqueId);
      }
      printf("]\r\n");
}
4、实验现象





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


















yangxiaor520 发表于 2022-3-4 18:44

学习了,谢谢分享。

freeelectron 发表于 2022-3-4 19:11

yangxiaor520 发表于 2022-3-4 18:44
学习了,谢谢分享。

相互交流,共同进步{:smile:}

lzbf 发表于 2022-12-5 21:28

做数字签名可以,防伪也可以。            

maqianqu 发表于 2022-12-5 22:19

stm32也有唯一的ID。            

sesefadou 发表于 2022-12-6 15:30

这个不能自己写入数据的??            

sesefadou 发表于 2022-12-6 17:09

这个唯一id怎么获取数据?            

freeelectron 发表于 2022-12-6 19:12

sesefadou 发表于 2022-12-6 15:30
这个不能自己写入数据的??

不行的,只读

Arvin2022 发表于 2022-12-11 21:41

想问下,内部flash如何实现存储配置数据?意思是程序烧录时就把配置参数一同烧录好的那种,本人小白,求教大神

freeelectron 发表于 2022-12-12 08:35

Arvin2022 发表于 2022-12-11 21:41
想问下,内部flash如何实现存储配置数据?意思是程序烧录时就把配置参数一同烧录好的那种,本人小白,求教 ...

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

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位存入对应地址?   另外如果是字符串需要用什么指令?

再次感谢大神{:handshake:}

hanter 发表于 2022-12-30 10:15

应该跟你定义的数据类型有关,int。你改成byte之类的试试看。

houjiakai 发表于 2023-1-5 16:34

后期可以利用这个做电子指令。            

jtracy3 发表于 2023-1-5 16:43

这个做防伪使用的吗?            

linfelix 发表于 2023-1-6 13:17

96位ID有什么作用            

mnynt121 发表于 2023-1-6 15:18

这个能不能动态修改这个ID呢?            

sanfuzi 发表于 2023-2-4 11:43

这个唯一ID不能修改的吗?            

burgessmaggie 发表于 2023-2-4 11:52

这个可以,以后做加密狗应该可以。

youtome 发表于 2023-2-4 13:08

这个获取id有什么作用呢?》            

xiaoyaodz 发表于 2023-2-4 15:01

不能通过外部修改ID数据吗?            
页: [1] 2
查看完整版本: 【AT-START-F425测评】4、获取MCU96位唯一ID、FLASH大小