搜索
bottom↓
回复: 57

KE02 加密(已解决)

[复制链接]

出0入0汤圆

发表于 2014-6-20 13:12:05 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZP 于 2014-7-8 14:45 编辑

用SEDDER J-Flash 4.74给KE02量产烧程序,为什么选择了Secure Chip 之后,仍能通过SWD口对芯片进行DEBUG?
芯片到底加密了吗?我没时间去自己研究了,急用。

出0入0汤圆

 楼主| 发表于 2014-6-20 13:40:13 | 显示全部楼层
没有人回答吗?

出0入0汤圆

 楼主| 发表于 2014-6-20 14:01:32 | 显示全部楼层
难道罢工了?我急用啊

出0入0汤圆

发表于 2014-6-20 14:56:37 | 显示全部楼层
你看datasheet,有对禁用SWD的寄存器。配置就好。

出0入0汤圆

 楼主| 发表于 2014-6-20 15:00:35 | 显示全部楼层
我知道可以把SWD disable,但通过串口,仍能读出。

出0入0汤圆

 楼主| 发表于 2014-6-20 15:13:41 | 显示全部楼层
wanstrive 发表于 2014-6-20 14:56
你看datasheet,有对禁用SWD的寄存器。配置就好。

我知道可以把SWD disable,但通过串口,仍能读出。

出0入0汤圆

发表于 2014-6-20 15:19:44 | 显示全部楼层
ln08136207 发表于 2014-6-20 15:00
我知道可以把SWD disable,但通过串口,仍能读出。

你好,楼主!
来自手册的的Statement:
当Flash设置成secured后,照道理是通过SWD接口DebugMCU的啊,请问你说的通过串口,仍能读出是什么意思?

出0入0汤圆

 楼主| 发表于 2014-6-20 15:24:15 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-6-20 15:19
你好,楼主!
来自手册的的Statement:
当Flash设置成secured后,照道理是通过SWD接口DebugMCU的啊,请问 ...

在程序中将SWD 功能disable之后,通过串口,再烧写一次,仍能够恢复SWD功能啊。
我现在急需的是,使用JLINK烧写程序,怎样设置,能够加密芯片,我试了几次,都不行,我没时间去看资料了,我还有十分钟时间。

出0入0汤圆

发表于 2014-6-20 15:35:17 | 显示全部楼层
ln08136207 发表于 2014-6-20 15:24
在程序中将SWD 功能disable之后,通过串口,再烧写一次,仍能够恢复SWD功能啊。
我现在急需的是,使用JLI ...

这么急吗,我找了两篇我的同事写的关于加密方法的帖子,希望可以帮到你,你照着做就好啊。
http://www.amobbs.com/thread-5556543-1-1.html
http://www.amobbs.com/thread-5556547-1-1.html

出0入0汤圆

 楼主| 发表于 2014-6-20 15:50:50 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-6-20 15:35
这么急吗,我找了两篇我的同事写的关于加密方法的帖子,希望可以帮到你,你照着做就好啊。
http://www.am ...

我看了帖子,在datasheet中没找到KE02对应的加密位,难道就不能通过J-FLASH的设置进行加密吗?
之前我一直以为可以的,就没有测试,现在完了。

出0入0汤圆

发表于 2014-6-20 16:22:43 | 显示全部楼层
ln08136207 发表于 2014-6-20 15:50
我看了帖子,在datasheet中没找到KE02对应的加密位,难道就不能通过J-FLASH的设置进行加密吗?
之前我一直 ...

想K60一样,设置FTMRH_FSEC[SEC ],也需要找到其在Flash configuration field中对应位置,
它在RM的第八章,你可以找找看。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2014-6-20 16:53:22 | 显示全部楼层
加密位好像是在程序中搞的,0x400到0x410地址中,上电的时候他会自己从这里Load到Flash加密寄存器中去的!

出0入0汤圆

发表于 2014-6-20 17:09:27 | 显示全部楼层
wangpengcheng 发表于 2014-6-20 16:53
加密位好像是在程序中搞的,0x400到0x410地址中,上电的时候他会自己从这里Load到Flash加密寄存器中去的! ...

是这样的,你说很对!

出0入0汤圆

发表于 2014-6-20 17:19:13 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-6-20 17:09
是这样的,你说很对!

最近在搞KE02的BootLoad,所以看得稍仔细了一点!搞完了,呵呵,刚发了个贴,回头再把源文件传上来!

出0入0汤圆

发表于 2014-6-20 17:41:50 | 显示全部楼层
wangpengcheng 发表于 2014-6-20 17:19
最近在搞KE02的BootLoad,所以看得稍仔细了一点!搞完了,呵呵,刚发了个贴,回头再把源文件传上来!{:ti ...

好的啊,发出来大家交流一下!

出0入0汤圆

发表于 2014-6-21 16:28:42 | 显示全部楼层
本帖最后由 laoshuhunya 于 2014-6-21 16:32 编辑

1、在J-Flash中选择MCU器件时要选择后面带 (allow security)的。
2、代码中需要在PFLASH的0x40D地址处写入0x00,0x40E地址处写入0x7D。
3、KE02貌似没有“禁止整片擦除”功能。

出0入0汤圆

 楼主| 发表于 2014-6-25 16:46:56 | 显示全部楼层
laoshuhunya 发表于 2014-6-21 16:28
1、在J-Flash中选择MCU器件时要选择后面带 (allow security)的。
2、代码中需要在PFLASH的0x40D地址处写入0 ...

在0x40D处写0x00,0x40E处写0x7D?
我在datasheet上没找到这两个命令

出0入0汤圆

发表于 2014-6-25 18:02:38 来自手机 | 显示全部楼层
ln08136207 发表于 2014-6-25 16:46
在0x40D处写0x00,0x40E处写0x7D?
我在datasheet上没找到这两个命令

这个是在启动代码中直接修改的。

出0入0汤圆

 楼主| 发表于 2014-6-26 09:42:24 | 显示全部楼层
laoshuhunya 发表于 2014-6-25 18:02
这个是在启动代码中直接修改的。

在40D写0x00,和40E写0x7d的根据是什么?
datasheet中没有讲啊

出0入0汤圆

发表于 2014-6-26 10:12:37 | 显示全部楼层
ln08136207 发表于 2014-6-26 09:42
在40D写0x00,和40E写0x7d的根据是什么?
datasheet中没有讲啊

去第三章找找看,呵呵,一般后面找不到的东西,在第三章里都描述过了

出0入0汤圆

 楼主| 发表于 2014-6-26 10:19:56 | 显示全部楼层
wangpengcheng 发表于 2014-6-26 10:12
去第三章找找看,呵呵,一般后面找不到的东西,在第三章里都描述过了  ...

我看了一下,没找到

出0入0汤圆

发表于 2014-6-26 11:36:10 | 显示全部楼层
ln08136207 发表于 2014-6-26 10:19
我看了一下,没找到

你得仔细看看,当初我是看到了,但是现在不记得在哪了,其实他的原理我在前面已经说过了!

出0入0汤圆

发表于 2014-6-26 11:57:52 | 显示全部楼层
加密都是高大上的东西。

出0入0汤圆

发表于 2014-6-26 13:40:15 | 显示全部楼层
ln08136207 发表于 2014-6-26 09:42
在40D写0x00,和40E写0x7d的根据是什么?
datasheet中没有讲啊

呵呵,楼主数据手册都没看清楚就量产了?

设置在这里:


根据在这里:


本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-6-26 13:43:57 | 显示全部楼层
wangpengcheng 发表于 2014-6-26 11:36
你得仔细看看,当初我是看到了,但是现在不记得在哪了,其实他的原理我在前面已经说过了! ...

我看到了,但是写不进去

出0入0汤圆

发表于 2014-6-26 13:47:33 | 显示全部楼层
ln08136207 发表于 2014-6-26 13:43
我看到了,但是写不进去

寄存器只读的,当然写不进去啦



本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-6-26 13:48:14 | 显示全部楼层
laoshuhunya 发表于 2014-6-26 13:40
呵呵,楼主数据手册都没看清楚就量产了?

设置在这里:

之前是给客户的小批测试,不加密,现在进入批量才做的加密,原本以为和其他芯片一样,用J-FLASH就可以加密,没想到不可以,
根据在datasheet中找到了,现在的问题是,写不到0X40E这个地址.
芯片中0x4oe地址中的数据,和文件中这个地址的数据不一样,校验错误,程序也跑飞了.

出0入0汤圆

 楼主| 发表于 2014-6-26 13:51:02 | 显示全部楼层
laoshuhunya 发表于 2014-6-26 13:47
寄存器只读的,当然写不进去啦

我是说,0x40e地址的内容改不了.
const char FlashConfig[16]@".flashConfig" = {
                                                0xff,0xff,0xff,0xff,
                                                0xff,0xff,0xff,0xff,
                                                0xff,0xff,0xff,0xff,
                                                0xff,0xff,0xff,0xff};

出0入0汤圆

发表于 2014-6-26 13:55:37 | 显示全部楼层
ln08136207 发表于 2014-6-26 13:48
之前是给客户的小批测试,不加密,现在进入批量才做的加密,原本以为和其他芯片一样,用J-FLASH就可以加 ...

按24楼的方法试过了吗?
你可以直接在MDK或IAR下面下载程序试下,先不用J-FLASH。
如果还有问题,请说下你的加密过程,特别是使用J-FLASF加密的步骤。

出0入0汤圆

发表于 2014-6-26 13:57:03 | 显示全部楼层
本帖最后由 laoshuhunya 于 2014-6-26 14:00 编辑
ln08136207 发表于 2014-6-26 13:51
我是说,0x40e地址的内容改不了.
const char FlashConfig[16]@".flashConfig" = {
                       ...


试下在启动文件中直接修改。
我没用过库,都是直接在START文件中改。

出0入0汤圆

发表于 2014-6-26 13:57:13 | 显示全部楼层
ln08136207 发表于 2014-6-26 13:51
我是说,0x40e地址的内容改不了.
const char FlashConfig[16]@".flashConfig" = {
                       ...

晕,什么编译器?数据改不了?

出0入0汤圆

 楼主| 发表于 2014-6-26 14:08:39 | 显示全部楼层
本帖最后由 ln08136207 于 2014-6-26 14:10 编辑
laoshuhunya 发表于 2014-6-26 13:55
按24楼的方法试过了吗?
你可以直接在MDK或IAR下面下载程序试下,先不用J-FLASH。
如果还有问题,请说下 ...


你用的是.s文件,我用的是.c文件.按照freescale在9楼提供的第二种加密方法,没法写进去.

出0入0汤圆

 楼主| 发表于 2014-6-26 14:09:17 | 显示全部楼层
wangpengcheng 发表于 2014-6-26 13:57
晕,什么编译器?数据改不了?

IAR6.7版本

出0入0汤圆

 楼主| 发表于 2014-6-26 14:11:29 | 显示全部楼层
wangpengcheng 发表于 2014-6-26 13:57
晕,什么编译器?数据改不了?

Verify error at address 0x0000040E, target byte: 0xFE, byte in file: 0xFF


这是在debug时出现的错误,就是说,没写进去。

出0入0汤圆

发表于 2014-6-26 14:12:03 | 显示全部楼层

怎么可能,把常量直接改掉,哪个编译器都支持啊!

出0入0汤圆

发表于 2014-6-26 14:13:20 | 显示全部楼层
ln08136207 发表于 2014-6-26 14:11
Verify error at address 0x0000040E, target byte: 0xFE, byte in file: 0xFF

晕,没用过IAR,只用过KEIL,不知道你那个是怎么回事!改完后是否没有烧录进去啊?

出0入0汤圆

 楼主| 发表于 2014-6-26 14:16:48 | 显示全部楼层
wangpengcheng 发表于 2014-6-26 13:57
晕,什么编译器?数据改不了?

https://community.freescale.com/docs/DOC-95565

按照这个帖子中的操作,依然不行。
不过有一点不同,我的参数解释是灰色的。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-6-26 14:37:00 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-6-20 15:35
这么急吗,我找了两篇我的同事写的关于加密方法的帖子,希望可以帮到你,你照着做就好啊。
http://www.am ...

按照第二个帖子的方法,结果写不进去,无法0x400~0x40f写入

出0入0汤圆

发表于 2014-6-26 14:38:18 | 显示全部楼层
ln08136207 发表于 2014-6-26 14:08
你用的是.s文件,我用的是.c文件.按照freescale在9楼提供的第二种加密方法,没法写进去.

...

可能被IAR优化掉了,试试在Options -> Linker -> Input 选项卡中加入“FlashConfig”。

出0入0汤圆

 楼主| 发表于 2014-6-26 14:41:29 | 显示全部楼层
laoshuhunya 发表于 2014-6-26 14:38
可能被IAR优化掉了,试试在Options -> Linker -> Input 选项卡中加入“FlashConfig”。 ...

已经加入了,我是按照9楼的帖子,一步一步做下来的。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2014-6-26 14:55:13 | 显示全部楼层
ln08136207 发表于 2014-6-26 14:41
已经加入了,我是按照9楼的帖子,一步一步做下来的。

先区分是编译还是烧录的问题:生成的目标代码里加密字节是不是正确?

出0入0汤圆

 楼主| 发表于 2014-6-26 14:58:49 | 显示全部楼层
laoshuhunya 发表于 2014-6-26 14:55
先区分是编译还是烧录的问题:生成的目标代码里加密字节是不是正确?

是正确的,附件是400开始地址的数据,跟定义的数组是一样的。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2014-6-26 15:09:38 | 显示全部楼层
ln08136207 发表于 2014-6-26 14:58
是正确的,附件是400开始地址的数据,跟定义的数组是一样的。

这个设置下。按“F7”下载。


本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-6-26 15:15:02 | 显示全部楼层
laoshuhunya 发表于 2014-6-26 15:09
这个设置下。按“F7”下载。

这个已经试过了,下载进去之后,程序是能够正常运行,但是还能把程序读出来,根本没有起到加密作用。

出0入0汤圆

发表于 2014-6-26 15:19:21 | 显示全部楼层
ln08136207 发表于 2014-6-26 15:15
这个已经试过了,下载进去之后,程序是能够正常运行,但是还能把程序读出来,根本没有起到加密作用。 ...

KE02没试过,我的K22锁定后会弹出这个对话框:



本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2014-6-26 15:23:13 | 显示全部楼层
laoshuhunya 发表于 2014-6-26 15:19
KE02没试过,我的K22锁定后会弹出这个对话框:

没有出现过,折腾几天了,也没弄好。找不到原因

出0入0汤圆

 楼主| 发表于 2014-6-26 15:30:05 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-6-20 16:22
想K60一样,设置FTMRH_FSEC[SEC ],也需要找到其在Flash configuration field中对应位置,
它在RM的第八 ...

按照帖子的方法,没法对加密位0x40e写操作。

出0入0汤圆

发表于 2014-6-26 16:04:48 | 显示全部楼层
ln08136207 发表于 2014-6-26 14:16
https://community.freescale.com/docs/DOC-95565

按照这个帖子中的操作,依然不行。

这个就是我推荐的第一个帖子又讲到的啊,我这个方法是可以的啊,建议烧录号程序后,将对应的寄存器的值打印出来看看。

出0入0汤圆

发表于 2014-6-26 16:06:34 | 显示全部楼层
ln08136207 发表于 2014-6-26 14:58
是正确的,附件是400开始地址的数据,跟定义的数组是一样的。

没看到007D的内容啊,试下0x00、0x7D ?
下载工具的问题应该好检查,我用的J-FLASH软件为4.86A

出0入0汤圆

 楼主| 发表于 2014-6-26 16:34:44 | 显示全部楼层
laoshuhunya 发表于 2014-6-26 16:06
没看到007D的内容啊,试下0x00、0x7D ?
下载工具的问题应该好检查,我用的J-FLASH软件为4.86A ...

我用的是4.74
根据datasheet的描述,只要不是10,就是使能加密了,至于flsah保护,我还没加,因此ff应该也是可以加密的。

出0入0汤圆

 楼主| 发表于 2014-6-26 16:38:10 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-6-26 16:04
这个就是我推荐的第一个帖子又讲到的啊,我这个方法是可以的啊,建议烧录号程序后,将对应的寄存器的值打 ...

我准备再用用第一个帖子的方法试一下,可是,我的vectors.c文件里面没有CONFIG_1,CONFIG_2,CONFIG_3,CONFIG_4,
自己直接加上去?

出0入0汤圆

发表于 2014-6-26 16:41:54 | 显示全部楼层
ln08136207 发表于 2014-6-26 16:34
我用的是4.74
根据datasheet的描述,只要不是10,就是使能加密了,至于flsah保护,我还没加,因此ff应该 ...

是这样的——除非手册有错误。

出0入0汤圆

 楼主| 发表于 2014-6-30 09:49:56 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-6-26 16:04
这个就是我推荐的第一个帖子又讲到的啊,我这个方法是可以的啊,建议烧录号程序后,将对应的寄存器的值打 ...

打印出来了,根本写不进去

寄存器的值和生成的hex文件对应地址中的值不一样

出0入0汤圆

发表于 2014-6-30 15:13:36 | 显示全部楼层
ln08136207 发表于 2014-6-26 14:16
https://community.freescale.com/docs/DOC-95565

按照这个帖子中的操作,依然不行。

/* Security Config field in flash started from 0x400(".flashConfig"), which defined in linker files */
/* flash security config located in 0x40E for Kinetis E(different from Kinetis K and L), config address of 0x40E to "0xfc" for security, to "0xfe" for unsecurity */
const char FlashConfig[16] @ ".flashConfig"= {0xff, 0xff, 0xff, 0xff,
                                              0xff, 0xff, 0xff, 0xff,
                                              0xff, 0xff, 0xff, 0xff,
                                              0xff, 0xff, 0xfc, 0xff            
};
你好,上面的flash配置是我之前给一个客户做的加密配置,即将0x40E的地址配置成0xfc,其他的都按照我之前的第二种方法的帖子里的步骤来操作,编译好之后看下hex文件相应地址的数据是否变成0xfc.
然后,在J-Flash里打开这个hex文件(J-Flash设置里security一定要勾选上,否则J-Flash不会对0x400~0x40F地址进行擦写),另外芯片型号选择你目标板的型号(Flash大小要一致)。

出0入0汤圆

 楼主| 发表于 2014-6-30 15:23:49 | 显示全部楼层
FSL_FAE_JiCheng 发表于 2014-6-30 15:13
/* Security Config field in flash started from 0x400(".flashConfig"), which defined in linker file ...

在400~40f我全部设置成ff,
生成的hex文件也都是ff.
之际在IAR中debug的时候,会提示校验错误,但是程序仍能够正常运行。错误内容是:芯片地址40E的数据为FE,而文件中对应的数据是FF.
按照你所说的,用JFLASH烧写的话,仍然能够读出,并且读出40E地址的数据是FE

出0入0汤圆

发表于 2014-6-30 17:15:20 | 显示全部楼层
ln08136207 发表于 2014-6-30 15:23
在400~40f我全部设置成ff,
生成的hex文件也都是ff.
之际在IAR中debug的时候,会提示校验错误,但是程序 ...

不要设置成全ff,按照我刚回复的那个,将0x40E地址改成0xfc.
另外,你的IAR Flashloader编辑界面中参数描述是全灰的有点奇怪,这个正常的话都会有参数可选的。

出0入0汤圆

发表于 2014-9-3 11:36:06 | 显示全部楼层
我是来看回复学习经验的,楼主辛苦了。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-20 02:04

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

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