本帖最后由 Elex 于 2016-12-19 10:26 编辑
按照STM32F030的参考手册,OB_RDP_Level_1 读保护貌似是不应该影响其自身程序读取FLASH和内部序列号存储空间的,但这次我测试在调试状态下执行使能加密程序则一切正常,此后再多次断电重新运行读取内部FLASH和唯一序列号进行校验的程序也是可以正常运行的,用j-flash读取芯片或重新进入调试则会芯片已经读保护了。但如果在程序独立运行时运行使能加密的程序,则此后读取内部FLASH和唯一序列号进行校验的程序就出现错误了(估计是读取内容的操作受到影响了),确认芯片也已经读保护了。
问题: STM32F030读保护会影响程序自己通过指针读取唯一序列号和内部flash么?
这是使能加密的程序:
void lockChip(void)
{
FLASH_Unlock();
// 读写flash标记(l略)
.....(其它Flash操作)
delayMs(50);
FLASH_ClearFlag(FLASH_FLAG_WRPERR | FLASH_FLAG_EOP | FLASH_FLAG_PGERR);
FLASH_OB_Unlock();
FLASH_OB_RDPConfig(OB_RDP_Level_1);
//FLASH_OB_Launch(); //此句使能后执行则调试状态也会被马上禁止访问芯片
delayMs(50);
FLASH_OB_Lock();
FLASH_Lock();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
答案早就有了,030芯片的这个位置确实能读出一些数字,不同的芯片也确实可能不一样,但也可能一样,ST没说,谁用谁负责!
是不是唯一的没关系,看你怎么用,对于我来说随机有差异就行了。
手册上没说的东东还有其它内容,比如内部温度传感器的校准参数、内部基准电压的校准参数等都没介绍,但在一些官方例程中可以看到。
对你这种不仔细看数据手册还自以为是的人我真是无语:内部温度传感器的校准参数、内部基准电压的校准参数在数据手册 3.Functional overview 的 ADC 章节讲的清清楚楚!
无标题.jpg (129.53 KB, 下载次数: 0)
下载附件
2016-12-20 08:12 上传
大神,你好!
原来不清楚这么detail的东西躲在overview了,怪不得我在参考手册上找不到~~
我验证过这些“序列号地址”对于不同F030芯片有不同内容,即使全部0xFF也不会影响我的程序正常功能, 可以一定程度上增加破解者麻烦就好了。
我接触STM32F0不久,还有好多问题没搞清楚,不然就不会发帖提问了。
搭车再问一下:为何设置过PWM输出的IO口在后面的程序中再设置为普通IO口推挽输出后驱动模拟方波时会随机在某个上升沿或下降沿来一个PWM波形才输出正确的方波状态?每次驱动方波输出的IO都会用相同的子程序把它强制初始化成推挽输出模式并切换到对应状态,照理不应再有PWM波形产生,而且是时有时无的单个PWM波形(即使原来的PWM也早已经设置成100%了)。
一周热门 更多>