STMCU小助手
发布时间:2022-12-17 14:00
|
产品唯一的身份标识非常适合: ● 用来作为序列号(例如USB字符序列号或者其他的终端应用)6 v0 V. R/ f; k+ n" K0 ^. Y● 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。 ● 用来激活带安全机制的自举过程 C! d! v' c+ J( D7 [8 A& U 96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。% R* I: h; o/ Z6 I 这个96位的产品唯一身份标识,按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。 基地址:0x1FFF F7E8 每个CPU 出厂的时候都 配置的一个ID,96 位的.这个唯一码可以利用作软件加密.......9 _3 U' g D+ e1 T* ^ + Z1 n" K, \6 g# J static u32 CpuID[3]; static u32 Lock_Code; % Q* c+ \4 R) F. A& }+ P void GetLockCode(void)! Y A3 W# N# X# C! H { ~- q' g5 P0 c% |0 E //获取CPU唯一ID CpuID[0]=*(vu32*)(0x1ffff7e8); CpuID[1]=*(vu32*)(0x1ffff7ec); CpuID[2]=*(vu32*)(0x1ffff7f0);# ]. N! Y; K9 g& M9 _1 [2 m //加密算法,很简单的加密算法 Lock_Code=(CpuID[0]>>1)+(CpuID[1]>>2)+(CpuID[2]>>3);# V+ K7 B: h% |+ S% ^ } 6 }- B* X- k% v* M" X* N 然后再用上次所用的 FLASH_ProgramWord(LOCK_ADDR,Lock_Code); 写到FLASH 的某个角落就好了,然后再在程序中验证这个值是否正确。感觉ID的调取很是方便倒是加密算法让人头痛,当然了要是把MD5移植过来应该不是太难。现在市场中这么多的廉价J-link还不是中国牛人xxx.... ) q q$ h! O, u: L" P# T3 H$ N产品唯一的身份标识非常适合:1 s3 Z9 \# {. n- x9 Q& V- m - T% L0 u3 x+ W! O7 k; ` un=(*( u16 *)0x1FFFF7E0); //闪存容量寄存器 printf(" Unique device ID"); un=(*( u16 *)0x1FFFF7EA); un=(*( u32 *)0x1FFFF7EC);- W+ Y( o! m- d+ @% z4 { un=(*( u32 *)0x1FFFF7EF);1 F: n+ B1 u# ~6 f4 z+ {
转载自:鱼入大海_ $ \1 y7 G; f- D% l3 V2 h5 S0 ` |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版