打印
[开发工具]

获得的ID为0怎么解决?

[复制链接]
1041|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ningbuzhi|  楼主 | 2015-12-17 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在调试OV9655摄像头,硬件是F407discovery+微雪OV9655,连接了电源,SCCB和xclk主时钟。调试发现初始化可以成功,但是获得的ID为0。
沙发
643757107| | 2015-12-17 22:32 | 只看该作者
数据存储器RAM的规划原则是:

(1)要按照应用程序所使用的数据类型进行规划,将频繁使用的、内存占用量能固定的数据放在高位地址。

(2)由于片内RAM的容量比较小,因此对它要尽可能地重叠使用。

(3)系统中扩展有外部数据存储器时,外部存储器一般用作存放一些大块的数据。如数据测量结果等。

使用特权

评论回复
板凳
643757107| | 2015-12-17 22:33 | 只看该作者
stm32 ID读取
内置闪存模块可以在通用地址空间直接寻址,任何32位数据的读操作都能访问闪存模块的内容并得到相应的数据。ID号的地址为0x1FFFF7E8-0x1FFFF7F0


SerialID[0] = *(unsigned int*)(0x1FFFF7E8);

    SerialID[1] = *(unsigned int*)(0x1FFFF7EC);

    SerialID[2] = *(unsigned int*)(0x1FFFF7F0);


几种读取唯一ID方法的优缺点分析(z,t)

STM32系列芯片内置有芯片唯一ID,这个为我们进行程序加密提供了一种低成本的方法.为了对抗解密就必须尽可能隐藏程序内读取ID的地方,下面对这些常用方法作个比较,当然是一家之言,权当抛砖引玉.

1    直接读取ID,也可把普通的 LDR 指令用 LDREX 指令代替; 特点:简单,隐蔽性差,不能对抗模拟器攻击.
1.1 ID地址在运行时生成.特点:简单,有一定的隐蔽性,不能对抗模拟器攻击.
1.2 用硬件 DMA 把 ID 传输到RAM中; 特点:简单,隐蔽性较好,估计能对抗普通模拟器攻击.

2. 不直接读取 ID 而是生成相关区域的 Hash; 特点: 程序稍微复杂,隐蔽性较好,估计不能对抗模拟器攻击.
2.1 用 STM32 的CRC硬件模块生成 Hash; 特点: 程序简单,隐蔽性较好,估计能对抗普通模拟器攻击;但是碰撞性大一些.

实际加密产品时,把这些方法全部或组合运用到产品中,增强加密性.


产品唯一的身份标识非常适合:
● 用来作为序列号(例如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);
}

使用特权

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

本版积分规则

17

主题

24

帖子

0

粉丝