首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]请问用codewarrior编译调试工具是否可以对mcu加密?

[求助]请问用codewarrior编译调试工具是否可以对mcu加密?

我用的是16位的mcu,型号为DT128,因为现在要小批量,没有购买专用的烧录工具.我记得以前用8位机的时候prog08sz可以从上位机软件直接加密.
立志做个专业的工程师
当然可以。只要在其FLASH加密地址处定义一个常数(注意不是加密寄存器地址),给它赋一个初值,使芯片处于加密状态即可。
海纳百川  有容乃大
哦,谢谢!
立志做个专业的工程师
今天试验了下,好像没有成功,我是这样做的
在PRM文件中
ROM_FF0F = READ_ONLY 0xFF0E TO 0xFF0F;
SECUR_ROM INTO ROM_FF0F;
然后在文件中写初值
#pragma CODE_SEG SECUR_ROM
const uchar secur_byte[2]={0x00,0x00};
#pragma CODE_SEG DEFAULT
然后通过sci接口把FSEC传上来,得到的值是0xfe,还是处于未加密状态.
写了几次后,单片机好像写出错,不知道和这有没有关系,但是传回来的值显示是未加密状态.
请问加密后单片机能否再写?读肯定是不行了.谢谢
立志做个专业的工程师
应该用
#pragma CONST_SEG SECUR_ROM
海纳百川  有容乃大
今天试了下,把CODE_SEG改成CONST_SEG,结果是一样的,加密不了.FSEC传回来的结果是0xfe.
立志做个专业的工程师
今天试了下,把CODE_SEG改成CONST_SEG,结果是一样的,加密不了.FSEC传回来的结果是0xfe.
立志做个专业的工程师
“SECUR_ROM INTO ROM_FF0F;”这一句是否放在“PLACEMENT”后面?做一个简单的project,然后打包上传看一下吧。
海纳百川  有容乃大
是放在PLACEMENT后面,等下我打包上传.
立志做个专业的工程师
http://bbs.chinaecnet.com/uploadImages/test_securD64.rar
打包好了,请帮忙看看,谢谢!
立志做个专业的工程师
因为你的程序中没有用到secur_byte这个常量,所以编译器把它优化掉了,没有生成代码,加个volatile声明即可,如下:

#pragma CONST_SEG SECUR_ROM
volatile const uchar secur_byte[2]={0x00,0x00};
#pragma CONST_SEG DEFAULT_ROM
海纳百川  有容乃大
版主,我有用到啊,我也是怕被优化掉了,所以在程序中特意加了两句:
x=secur_byte[0];
y=secur_byte[1];
其中x,y是全局变量,应该不会优化掉啊,我明天到公司加个volatile声明试试看.
立志做个专业的工程师
刚才编译了,在map文件中好像真的被优化掉了,明天到公司写到芯片中看看实际的结果,谢谢!
立志做个专业的工程师
今天来公司试验了,加密终于成功了,但是用这种方式的加密好像有问题,我通过这种方式加密后就不能通过codewarrior再写进去了.请问是这样的吗?
如果是这样,那实在是不方便,以后我要改写程序怎么办呢?
立志做个专业的工程师
用CodeWarrior调试界面里的unsecure把它解密,即全部擦除就可以再用了。
海纳百川  有容乃大
返回列表