mc9s12的单片机是如何实现加密的(已解决)

2020-02-21 21:10发布

本帖最后由 FSL_TICS_ZJJ 于 2014-9-11 13:07 编辑

看了资料上写的好简单,如何实现的,有没有详细点的例子

•加密后,FLASH和RAM被加密,无法读出
•直接页寄存器,高页寄存器和背景调试控制器仍可读出,未被加

•在加密的存储器中的程序可以访问所有的MCU资源
•从未被加密的存储器中的程序无法访问被加密的程序 (返回值全
为0)
•背景调试控制器也无法访问被加密的程序(返回值全为0)
•加密通过FOPT寄存器的SEC01:SEC00位来设置(0:0, 0:1, 1:1为
加密)
•复位时,FLASH中NVOPT的内容将会被拷贝到高页寄存器FOPT

•在对FLASH编程同时,对NVOPT地址也编入数据即可加密
•加密后,FLASH仍可以全部擦除
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
lileistone
1楼-- · 2020-02-22 01:52
人家不是说了嘛:
“加密通过FOPT寄存器的SEC01:SEC00位来设置(0:0, 0:1, 1:1为加密)”

其实就是Flash读出被禁止了,就叫被加密了。
浪里白条
2楼-- · 2020-02-22 05:33
2楼正解,
richyhuang
3楼-- · 2020-02-22 07:25
 精彩回答 2  元偷偷看……
zhangchaoying
4楼-- · 2020-02-22 10:28
怎么那么像AVR的熔丝位呢?
FSL_TICS_ZJJ
5楼-- · 2020-02-22 12:28
楼主你好,FOPT的数据是复位时从NVOPT那边拷贝过来,其实实际上实现加密是通过修改NVOPT那边的数据实现的。你仔细看看手册中关于NVOPT的配置情况,手册中肯定有讲的。
lileistone
6楼-- · 2020-02-22 12:36
richyhuang 发表于 2014-8-11 21:14
那复位的时候,程序还没运行到设置加密位的时候,不是加密不起作用吗?

BDM调试的时候,可以是停止代码执 ...

那几个bit设置好了之后就存在Flash中了,掉电不丢失的,上电复位的时候会拷贝到Flash相关控制器相关寄存器的那些位,先于你的代码启动之前就执行了。
另外这里说“设置”的意思不是你的代码要手动写个什么值进去,而是你写中断向量表的时候就写好(定义好常数数组),直接存在Flash里。用户程序不需要操心这些事……

以上经验来自Kinetis系列控制器,但我猜Freescale多个芯片应该做法是通用的。如果有错误麻烦Freescale Support同志更正一下……

一周热门 更多>