主题中讨论的其他部件:controlSUITE, C2000WARE
大家好,
我使用双核, 希望 保护我的设备, 因此 除非 您有正确的密码,否则不能访问任何资源。
请 举例说明,您是否有如何执行此操作的教程?
我只在一个内核上的controlSUITE中找到了一个示例。
任何建议/信息 都非常受欢迎 ,最好是流程图/代码 来实现。
谢谢你
此致
卡洛
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好,
我使用双核, 希望 保护我的设备, 因此 除非 您有正确的密码,否则不能访问任何资源。
请 举例说明,您是否有如何执行此操作的教程?
我只在一个内核上的controlSUITE中找到了一个示例。
任何建议/信息 都非常受欢迎 ,最好是流程图/代码 来实现。
谢谢你
此致
卡洛
大家好,Carlo问我这个问题。
我需要将密码插入我的双核: 非常简单,我想将所有资源分配给Z1,并将一个简单的PSWD设置为能够访问内部的所有内容,但外部不能(不能使用C2Prog或CCS重新编程,除非我提供了正确的psw)。
我附加了一个项目,它基本上阻止了我的DSP:其中有一个自述文件,其中描述了我用于插入PSW的解决方案和我发现的问题。 我需要一个解决方案以及如何操作
1)以正确的方式在代码中插入PSWD
2)使用CCS连接右侧PSW
3)使用C2Prog重新编程DSP
谢谢!
Andrea Marcianesi。
早上好,Codeskin,
在我的DSP中,我仅保护CPU1,将所有内容分配给Z1区域。
在代码库GUI中,只能插入4个字符,而不能插入0xFFF等数字,因为是6个字符。
是的,我确定键入了正确的PSW,但解锁不起作用。 顺便说一句,我把这个项目附在了一起,如果你有一个双核测试板,你可以自己试一下。 对我们来说,这是一个大问题。
我还尝试将所有0放入所有键中,并且实际工作,接口解锁DSP:这是非常非常奇怪的,因为DCSM实际上是安全的,所以怎么可能做到这一点? 在密钥字段中插入所有零即可解锁所有双核,这是不是一种可弹出性? 您能否向我解释一下它的工作原理? 我不确定它是否对DSP编程,但至少C2PROG确认了解锁,擦除程序。
我需要明确地使用正确的psw使所有流程正常工作,并使用所有0锁定DSP。
谢谢你。
早上好Vivek
请再提供一个帮助。
我尝试用这种方式锁定密码,对结构DcsmZ1Otp的默认值进行编程
#define DCSM_Z1_OTP_DEFAULTS{
0xFFFFFFFE, \ Z1OTP_LINKPOINTER1
0xFFFF, \
0xFFFF, \
0xFFFFFFFE, \ Z1OTP_LINKPOINTER2
0xFFFF, \
0xFFFF, \
0xFFFFFFFE, \ Z1OTP_LINKPOINTER3:
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFFFFFE, \ Z1OTP_PSWDLOCK:锁定与所有0不同的psw I PU部件
0xFFFF, \
0xFFFF, \
0xFFFFFFFF, \ Z1OTP_CRCLOCK
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFF, \
0xFFFFFFFF }\ Z1OTP_BOOTCTRL
我没有触摸任何其他东西,但现在我的DSP没有运行任何东西:LED不再闪烁,C2PROG无法自动检测DSP,因此即使串行通信也失败。
DSP似乎没有什么做。
相反,使用黑色Hack,我可以连接到DSP, 使用与以前相同的psw,但CPU 在一段时间内卡住了。
所有这些行为只是将 OTP中的PSWLOCK的1位更改:从0xFFFFFFFF 更改为0xFFFFFFFE
你有什么想法吗?
感谢您的回答
Andrea Marcianesi。
早上好Vivek
问题不是我无法连接调试器:如果我将DSP置于等待启动模式(GPIO72=1,GPIO84=0),调试器能够连接和编程DSP。 问题是当我拔下调试器并正常提供DSP时,DSP被阻止。 我觉得这是因为CPU1在等待CPU2。 因此,锁定密码似乎与处理器间通信有关。
您有我的代码示例,您可以自己尝试:在示例中,我在CPU1中有2个LED (GPIO66,GPIO67) ,在CPU2 (GPIO68)中有一个。 您必须做的唯一更改是 F2837xD_dcsm.h文件中#define DCSM_Z1_OTP_DEFAULTS中的单词0xFFFFFFFF到0xFFFFFFFE。
奇怪的是,当我将DSP置于SCI引导(GPIO72=0,GPIO84=1)中时,C2PROG无法连接到DSP,因为在串行通信期间无法自动检测: 在实践中,C2程序无法与DSP通信(解锁阶段应遵循此阶段,但C2PROG在解锁阶段之前失败)。
非常感谢你的帮助。
Andrea MArcianesi。
Andrea,
1)您似乎与Vivek共享了一个项目。 您能将它发送给我,以便我尝试一下吗?
2)根据您提供的快照,我看到只有扇区A到扇区G分配给区域1,而REST不受保护。 这是故意的吗? 我是因为您提到您要将所有资源分配给区域1。
3)您是否在Unsecured Flash中有任何代码尝试访问安全闪存或RAM? 请检查。
4)您能否确认从工作项目更改为不工作项目的唯一方法是PSWDLOCK中的1位翻转? 您是否按此顺序重试过:0xFFFFFFFF应该正常工作,但只有一个更改0xFFFFFFFE不工作?
谢谢,此致,
Vamsi
Andrea,
我查看了您的团队发送给我的离线项目。 我注意到下面的结构定义是由用户添加的。 您能否要求他们将这些结构分为两部分? -一个结构应包括3个链接指针,然后下一个结构应从ZxOTP_PSWDLOCK开始。 请尝试并告诉我。 我没有备用设备来尝试此操作,但我觉得这可以解决问题。
我认为ECC未针对PSWDLOCK位置进行编程,导致ECC错误。 当工具对结构下面进行编程时,它们首先找到链接指针地址,因此跳过整个结构的编程ECC。 因为不应为链路指针对ECC进行编程,所以工具会执行此操作。 但是,PSWDLOCK需要对ECC进行编程。
如果客户使用TI提供的头文件,则不会发生此问题,因为这些部分按我上面的说明进行了细分。 结帐:
(i) DCSM_ZX_ZoneSelectBlock.ASM,位于C2000Ware_1_00_02_00\device_support\f2837xd\examples\CPU1 \linky_with2837 \linky_with _DCSM\cpu01和
(ii) 2837xD_DCSM_lnk_CPUx.cmd,位于C2000Ware_1_00_02_00\device_support\f2837xd\con\cmd</s>2837
结构DCSM_Z1_OTP{
UINT32. Z1OTP_LINKPOINTER1; // Z1 OTP中的区域1链路接口1
UINT16. rsvd1[2]; //保留
UINT32. Z1OTP_LINKPOINTER2; // Z1 OTP中的区域1链路接口2
UINT16. rsvd2[2]; //保留
UINT32. Z1OTP_LINKPOINTER3; // Z1 OTP中的区域1链路接口3
UINT16. rsvd3[6]; //保留
UINT32. Z1OTP_PSWDLOCK; // Z1 OTP中的安全密码锁
UINT16. rsvd4[2]; //保留
UINT32. Z1OTP_CRCLOCK; //在Z1 OTP中安全锁定CRC
UINT16. rsvd5[8]; //保留
UINT32. Z1OTP_BOOTCTRL; // Z1 OTP中的启动模式
};
结构DCSM_Z2_OTP{
UINT32. Z2OTP_LINKPOINTER1; // Z2 OTP中的区域2链路接口1
UINT16. rsvd1[2]; //保留
UINT32. Z2OTP_LINKPOINTER2; // Z2 OTP中的区域2链路接口2
UINT16. rsvd2[2]; //保留
UINT32. Z2OTP_LINKPOINTER3; // Z2 OTP中的区域2链路接口3
UINT16. rsvd3[6]; //保留
UINT32. Z2OTP_PSWDLOCK; // Z2 OTP中的安全密码锁
UINT16. rsvd4[2]; //保留
UINT32. Z2OTP_CRCLOCK; //在Z2 OTP中确保CRC锁的安全
UINT16. rsvd5[8]; //保留
UINT32. Z2OTP_BOOTCTRL; // Z2 OTP中的引导模式
};
谢谢,此致,
Vamsi
Andrea,
很高兴它有所帮助。
关于您的问题:
1)默认情况下启用闪存/ OTP的ECC检查。 因此,如果没有对ECC进行编程,将会出现NMI。 ECC错误有两种类型-单位错误和双位错误。 单位错误在数据提供给CPU之前得到纠正-单位错误详细信息,如发生错误的地址,从ECC寄存器获取etc.ca。 您可以为中断生成的单位错误设置阈值,此阈值应大于0 (请查看勘误表)。 未纠正双位错误,并且生成NMI。 有关此方面的详细信息,请阅读TRM中的2.12 .................................................................10错误纠正代码(ECC)保护部分。
关于工具: 正如我前面提到的那样,不应针对链接指针位置对ECC进行编程,因为如果需要,您应该可以在不擦除的情况下多次更新链接指针。 因此,闪存工具(如CCS片上闪存插件)将避免对ECC进行编程。 由于您之前拥有的结构/部分包括链路指针和PSWDLOCK,因此Flash工具会查看为其提供的部分的地址,并发现它是链路指针,跳过对整个部分的ECC编程-因此,ECC也不是为PSWDLOCK位置编程的。 这会导致ECC错误。 将它们分开后,Flash工具会跳过链接指针的ECC,而不是PSWDLOCK。
2)您可以。
3)如果您使用CsmUnlock()解锁设备,则设备不再受保护。 请阅读 TRM中的2.13 双码安全模块(DCSM)部分,了解更多详细信息。
谢谢,此致,
Vamsi