【M0+使用分享】芯片加密

2020-02-11 09:03发布

Kinetis内部拥有加密选项FSEC_SEC,设置该选项为00,01,11时,就可以加密MCU。进而保证内部程序不会通过调试端口被读出。下面介绍设置方法。

由于FSEC寄存器是无法在程序运行过程中被修改的,而是在上电复位后,直接从某个地址直接加载。所以,只要修改该内存的内容即可。下面是我修改的方法,供大家参考。

如何启用kinetis内部的加密功能

下面以Codewarrior(eclipse)+kl05Z32为例说明。
1,建立kl05Z32的工程

2,新建一个文件Security.c

3,在工程的Security.c中定义如下变量
volatile const char __attribute__((section (".cfmconfig"))) BackDoor[8]={0};
volatile const char __attribute__((section (".cfmconfig"))) Fprot[4]={0xFF,0xFF,0xFF,0xFF};
volatile const char __attribute__((section (".cfmconfig"))) Fsec=0x00;
volatile const char __attribute__((section (".cfmconfig"))) Fopt=0xFF;
volatile const char __attribute__((section (".cfmconfig"))) Reserved1={0};
volatile const char __attribute__((section (".cfmconfig"))) Reserved2={0};

4,编译工程并下载
5,然后断电重启,再下载调试程序的时候就会有芯片被加密的提示了。

注意:有些仿真器在调试时,会自动将FOPT置为0xFF。所以,无论怎么设置,都不会加密。我用j-link是可以很好的看到效果的。

最后,附上我的工程。如有问题请大家指出。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
32MCU
1楼-- · 2020-02-11 11:10
收藏。以前搞STM32L152为加密事摸索了好久。
zndz410
2楼-- · 2020-02-11 13:31
看到楼主的ID,好象是飞思卡尔的代理推广公司。这个贴子有技术,学习一下。
Excellence
3楼-- · 2020-02-11 15:34
飞锐泰克是最早放下身段做飞思卡尔的公司。
去过该公司。
himd
4楼-- · 2020-02-11 18:53
不错,好像使用很简单。mark。
ccrt
5楼-- · 2020-02-12 00:05
 精彩回答 2  元偷偷看……
fangliang66
6楼-- · 2020-02-12 05:08
嗯 下下来看看学习学习 应该有机会用得到吧

一周热门 更多>