搜索
bottom↓
回复: 15

STM32F030读保护会影响程序自己读取唯一序列号么?

[复制链接]

出0入16汤圆

发表于 2016-12-19 10:26:04 | 显示全部楼层 |阅读模式
本帖最后由 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();
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2016-12-19 10:36:54 | 显示全部楼层
不会                          

出0入0汤圆

发表于 2016-12-19 16:23:41 | 显示全部楼层
怎么读取 STM32F030 的唯一ID,我没找到这个芯片的维一ID的地址

出0入16汤圆

 楼主| 发表于 2016-12-19 16:30:58 | 显示全部楼层
搞定了,原来是不小心访问了芯片的option 字的读保护标记的地址 0x1FFFF800,而这个地址的内容在使能读保护前后是不一样的,调试时没有马上使能所以看不出来
Address        [31:24]  [23:16]  [15:8]    [7:0]
0x1FFF F800 nUSER     USER    nRDP      RDP

出0入16汤圆

 楼主| 发表于 2016-12-19 16:35:01 | 显示全部楼层
dwj0 发表于 2016-12-19 16:23
怎么读取 STM32F030 的唯一ID,我没找到这个芯片的维一ID的地址

数据指针指向地址0x1FFFF7AC连续读取12bytes

出5入14汤圆

发表于 2016-12-19 20:33:35 | 显示全部楼层
楼主你确定 STM32F030 有唯一的ID?为啥我在数据手册上找到现在都没找到?

出0入0汤圆

发表于 2016-12-19 20:35:10 | 显示全部楼层
EMC菜鸟 发表于 2016-12-19 20:33
楼主你确定 STM32F030 有唯一的ID?为啥我在数据手册上找到现在都没找到?

坐等答案。

出5入14汤圆

发表于 2016-12-19 20:42:44 | 显示全部楼层

答案早就有了,030芯片的这个位置确实能读出一些数字,不同的芯片也确实可能不一样,但也可能一样,ST没说,谁用谁负责!

出0入16汤圆

 楼主| 发表于 2016-12-20 00:52:12 | 显示全部楼层
EMC菜鸟 发表于 2016-12-19 20:42
答案早就有了,030芯片的这个位置确实能读出一些数字,不同的芯片也确实可能不一样,但也可能一样,ST没 ...

是不是唯一的没关系,看你怎么用,对于我来说随机有差异就行了。
手册上没说的东东还有其它内容,比如内部温度传感器的校准参数、内部基准电压的校准参数等都没介绍,但在一些官方例程中可以看到。

出5入14汤圆

发表于 2016-12-20 08:12:57 | 显示全部楼层
Elex 发表于 2016-12-20 00:52
是不是唯一的没关系,看你怎么用,对于我来说随机有差异就行了。
手册上没说的东东还有其它内容,比如内 ...

对你这种不仔细看数据手册还自以为是的人我真是无语:内部温度传感器的校准参数、内部基准电压的校准参数在数据手册 3.Functional overview 的 ADC 章节讲的清清楚楚!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-12-20 08:41:53 | 显示全部楼层
误导

出0入0汤圆

发表于 2016-12-20 09:26:22 | 显示全部楼层
看标题我就在想,F030根本没有UID啊。。。

出0入16汤圆

 楼主| 发表于 2016-12-22 12:56:55 | 显示全部楼层
EMC菜鸟 发表于 2016-12-20 08:12
对你这种不仔细看数据手册还自以为是的人我真是无语:内部温度传感器的校准参数、内部基准电压的校准参数 ...

大神,你好!
原来不清楚这么detail的东西躲在overview了,怪不得我在参考手册上找不到~~
我验证过这些“序列号地址”对于不同F030芯片有不同内容,即使全部0xFF也不会影响我的程序正常功能, 可以一定程度上增加破解者麻烦就好了。
我接触STM32F0不久,还有好多问题没搞清楚,不然就不会发帖提问了。
搭车再问一下:为何设置过PWM输出的IO口在后面的程序中再设置为普通IO口推挽输出后驱动模拟方波时会随机在某个上升沿或下降沿来一个PWM波形才输出正确的方波状态?每次驱动方波输出的IO都会用相同的子程序把它强制初始化成推挽输出模式并切换到对应状态,照理不应再有PWM波形产生,而且是时有时无的单个PWM波形(即使原来的PWM也早已经设置成100%了)。

出5入14汤圆

发表于 2016-12-23 00:07:21 | 显示全部楼层
Elex 发表于 2016-12-22 12:56
大神,你好!
原来不清楚这么detail的东西躲在overview了,怪不得我在参考手册上找不到~~
我验证 ...

直接用 TIMx->CCR1=0xFFFF  输出高电平, TIMx->CCR1=0 输出低电平,还设置为普通IO干嘛?

执行 TIMx->CCR1=0 跟 GPIOx->BRR=GPIO_Pin_x 对使用来说有啥区别?

出0入16汤圆

 楼主| 发表于 2016-12-23 12:10:34 | 显示全部楼层
EMC菜鸟 发表于 2016-12-23 00:07
直接用 TIMx->CCR1=0xFFFF  输出高电平, TIMx->CCR1=0 输出低电平,还设置为普通IO干嘛?

执行 TIMx-> ...

之前就是直接设置0%和100%出现这样随机的问题所以才改用直接IO方式的,但是问题一样存在。没有设置过PWM的IO就不会出现这样的问题。外部方波信号中断触发转换几个IO的输出状态,只有设置过PWM的IO口会随机有多一个PWM波形的输出,假设如果是外部干扰引起的则其它无PWM功能的IO也同样有异常输出才是
如下图:1~3是设置过PWM的IO输出,4是无PWM功能的IO输出。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出675入8汤圆

发表于 2019-10-15 07:51:42 来自手机 | 显示全部楼层
测试一下加密保护
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-23 17:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表