[求助]请问用codewarrior编译调试工具是否可以对mcu加密?
- UID
- 115025
- 性别
- 男
|
[求助]请问用codewarrior编译调试工具是否可以对mcu加密?
我用的是16位的mcu,型号为DT128,因为现在要小批量,没有购买专用的烧录工具.我记得以前用8位机的时候prog08sz可以从上位机软件直接加密. |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
当然可以。只要在其FLASH加密地址处定义一个常数(注意不是加密寄存器地址),给它赋一个初值,使芯片处于加密状态即可。 |
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
今天试验了下,好像没有成功,我是这样做的
在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,还是处于未加密状态.
写了几次后,单片机好像写出错,不知道和这有没有关系,但是传回来的值显示是未加密状态.
请问加密后单片机能否再写?读肯定是不行了.谢谢 |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
应该用
#pragma CONST_SEG SECUR_ROM |
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
今天试了下,把CODE_SEG改成CONST_SEG,结果是一样的,加密不了.FSEC传回来的结果是0xfe. |
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
今天试了下,把CODE_SEG改成CONST_SEG,结果是一样的,加密不了.FSEC传回来的结果是0xfe. |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
“SECUR_ROM INTO ROM_FF0F;”这一句是否放在“PLACEMENT”后面?做一个简单的project,然后打包上传看一下吧。 |
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
http://bbs.chinaecnet.com/uploadImages/test_securD64.rar
打包好了,请帮忙看看,谢谢! |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
因为你的程序中没有用到secur_byte这个常量,所以编译器把它优化掉了,没有生成代码,加个volatile声明即可,如下:
#pragma CONST_SEG SECUR_ROM
volatile const uchar secur_byte[2]={0x00,0x00};
#pragma CONST_SEG DEFAULT_ROM |
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
版主,我有用到啊,我也是怕被优化掉了,所以在程序中特意加了两句:
x=secur_byte[0];
y=secur_byte[1];
其中x,y是全局变量,应该不会优化掉啊,我明天到公司加个volatile声明试试看. |
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
刚才编译了,在map文件中好像真的被优化掉了,明天到公司写到芯片中看看实际的结果,谢谢! |
|
|
|
|
|
- UID
- 115025
- 性别
- 男
|
今天来公司试验了,加密终于成功了,但是用这种方式的加密好像有问题,我通过这种方式加密后就不能通过codewarrior再写进去了.请问是这样的吗?
如果是这样,那实在是不方便,以后我要改写程序怎么办呢? |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
用CodeWarrior调试界面里的unsecure把它解密,即全部擦除就可以再用了。 |
|
|
|
|
|