Chinaunix首页 | 论坛 | 博客
  • 博客访问: 284938
  • 博文数量: 91
  • 博客积分: 1772
  • 博客等级: 上尉
  • 技术积分: 930
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-17 19:49
文章分类

全部博文(91)

文章存档

2012年(1)

2011年(36)

2010年(50)

2008年(4)

我的朋友

分类: LINUX

2011-08-08 16:23:29

stm32 的唯一ID编码  

2010-04-10 14:50:35|  分类: STM32|字号 订阅

产品唯一的身份标识非常适合:
● 用来作为序列号(例如USB字符序列号或者其他的终端应用)
● 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。
● 用来激活带安全机制的自举过程
96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。
这个96位的产品唯一身份标识,按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。
基地址:0x1FFF F7E8

每个CPU 出厂的时候都
配置的一个ID,96 位的.这个唯一码可以利用作软件加密.......

static u32 CpuID[3];
static u32 Lock_Code;

void GetLockCode(void)
{
 //获取CPU唯一ID
 CpuID[0]=*(vu32*)(0x1ffff7e8);
 CpuID[1]=*(vu32*)(0x1ffff7ec);
 CpuID[2]=*(vu32*)(0x1ffff7f0);
 //加密算法,很简单的加密算法
 Lock_Code=(CpuID[0]>>1)+(CpuID[1]>>2)+(CpuID[2]>>3);
}

然后再用上次所用的  FLASH_ProgramWord(LOCK_ADDR,Lock_Code); 写到FLASH 的某个角落就好了,然后再在程序中验证这个值是否正确。感觉ID的调取很是方便倒是加密算法让人头痛,当然了要是把MD5移植过来应该不是太难。现在市场中这么多的廉价J-link还不是中国牛人xxx.

阅读(2531) | 评论(0) | 转发(0) |
0

上一篇:ISP and IAP

下一篇:硬件管理构想

给主人留下些什么吧!~~