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.

[参考译文] TMS320F28388D:串行闪存编程器.hex 文件 DCSM 密码锁定问题

Guru**** 2589300 points
Other Parts Discussed in Thread: UNIFLASH

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1163735/tms320f28388d-serial-flash-programmer-hex-file-dcsm-password-lock-problem

器件型号:TMS320F28388D
主题中讨论的其他器件:UNIFLASH

我们目前正在尝试在生产中实现串行闪存编程器功能。 但是、我们很难将固件的生产版本上传到处理器。

当我们在输出十六进制文件中包含设置 DCSM 密码的功能时。 我们会得到校验和错误或空白错误(如果处理器已预编程)。 这是我们要包含的文件(除了密码文件本身)、我们似乎找不到导致问题的任何特定内容。 如果我们编译到.out 文件并使用 UniFlash 将其发送到处理器、则一切正常。

/* this linker command file is to be included if user wants to use the DCSM feature on the device
 * DCSM  means Dual Zone Code Security Module.
 * This linker command file works as an addendum ot the already existing Flash/RAM linker command file
 * that the project has.
 * The sections in the *_ZoneSelectBlock.asm source file is linked as per the commands given in the file
 * NOTE - please note fill=0xFFFF, this helps if users include this file in the project by mistake and
 * doesn't provide the needed proper *_ZoneSelectBlock.asm sources .
 * Please refer to the Blinky DCSM example in the controlsuite examples for proper usage of this.
 *
 * Once users are confident that they want to program the passwords in OTP, the DSECT section type can be removed.
 *
*/


MEMORY
{
PAGE 0 :  /* Program Memory */

   /* Z1 OTP.  LinkPointers */
   DCSM_OTP_Z1_LINKPOINTER   : origin = 0x78000, length = 0x00000C
   /* Z1 OTP.  PSWDLOCK/RESERVED */
   DCSM_OTP_Z1_PSWDLOCK	    : origin = 0x78010, length = 0x000004
   /* Z1 OTP.  CRCLOCK/RESERVED */
   DCSM_OTP_Z1_CRCLOCK	    : origin = 0x78014, length = 0x000004
   /* Z1 OTP.  RESERVED/BOOTCTRL */
   DCSM_OTP_Z1_BOOTCTRL	    : origin = 0x7801C, length = 0x000004

   /* DCSM Z1 Zone Select Contents (!!Movable!!) */
   /* Z1 OTP.  Z1 password locations / Flash and RAM partitioning */
   DCSM_ZSEL_Z1_P0	        : origin = 0x78020, length = 0x000010
  	DCSM_ZSEL_Z1_P1	        : origin = 0x78030, length = 0x000010
  	DCSM_ZSEL_Z1_P2	        : origin = 0x78040, length = 0x000010

	DCSM_ZSEL_Z1_P3	        : origin = 0x78050, length = 0x000010
	DCSM_ZSEL_Z1_P4	        : origin = 0x78060, length = 0x000010
	DCSM_ZSEL_Z1_P5	        : origin = 0x78070, length = 0x000010
	DCSM_ZSEL_Z1_P6	        : origin = 0x78080, length = 0x000010
	DCSM_ZSEL_Z1_P7	        : origin = 0x78090, length = 0x000010
	DCSM_ZSEL_Z1_P8	        : origin = 0x780A0, length = 0x000010
	DCSM_ZSEL_Z1_P9	        : origin = 0x780B0, length = 0x000010
	DCSM_ZSEL_Z1_P10	    : origin = 0x780C0, length = 0x000010
   /* Z2 OTP.  LinkPointers */
   DCSM_OTP_Z2_LINKPOINTER	: origin = 0x78200, length = 0x00000C
   /* Z2 OTP.  GPREG1/GPREG2 */
   DCSM_OTP_Z2_GPREG	        : origin = 0x7820C, length = 0x000004
   /* Z2 OTP.  PSWDLOCK/RESERVED */
   DCSM_OTP_Z2_PSWDLOCK	    : origin = 0x78210, length = 0x000004
   /* Z2 OTP.  CRCLOCK/RESERVED */
   DCSM_OTP_Z2_CRCLOCK	    : origin = 0x78214, length = 0x000004
   /* Z2 OTP.  GPREG3/BOOTCTRL */
   DCSM_OTP_Z2_BOOTCTRL	    : origin = 0x7821C, length = 0x000004

   /* DCSM Z1 Zone Select Contents (!!Movable!!) */
   /* Z2 OTP.  Z2 password locations / Flash and RAM partitioning  */
   DCSM_ZSEL_Z2_P0	        : origin = 0x78220, length = 0x000010

}

SECTIONS
{
   dcsm_otp_z1_linkpointer 	: > DCSM_OTP_Z1_LINKPOINTER		PAGE = 0//, type = DSECT
   dcsm_otp_z1_pswdlock		: > DCSM_OTP_Z1_PSWDLOCK		PAGE = 0//, type = DSECT
   dcsm_otp_z1_crclock		: > DCSM_OTP_Z1_CRCLOCK			PAGE = 0//, type = DSECT
   dcsm_otp_z1_bootctrl		: > DCSM_OTP_Z1_BOOTCTRL		PAGE = 0//, type = DSECT
   dcsm_zsel_z1				: > DCSM_ZSEL_Z1_P0				PAGE = 0//, type = DSECT
// 	dcsm_zsel_z1				: > DCSM_ZSEL_Z1_P1				PAGE = 0//, type = DSECT

   dcsm_otp_z2_linkpointer	: > DCSM_OTP_Z2_LINKPOINTER		PAGE = 0, type = DSECT
   dcsm_otp_z2_pswdlock		: > DCSM_OTP_Z2_PSWDLOCK		PAGE = 0, type = DSECT
   dcsm_otp_z2_crclock		: > DCSM_OTP_Z2_CRCLOCK			PAGE = 0, type = DSECT
   dcsm_otp_z2_bootctrl		: > DCSM_OTP_Z2_BOOTCTRL		PAGE = 0, type = DSECT
   dcsm_zsel_z2				: > DCSM_ZSEL_Z2_P0				PAGE = 0, type = DSECT
}

/*
//===========================================================================
// End of file.
//===========================================================================
*/

对于可能导致问题的原因、是否有任何想法? 到目前为止、我们已经克服了包括(对齐8)问题在内的所有其他问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    感谢您的提问。 我需要更多时间来详细了解 DCSM、并尽快返回给您的问题的原因。

    谢谢、

    查尔斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我被要求提供有关这方面的状态更新。  我们现在需要一个答案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    您是否知道校验和错误和/或空白检查错误发生的位置?  OTP 在某些位置不应有空白。

    查尔斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    0x78000

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ben、

    对于您的应用、您是否已 设置或需要设置 DATA_SECTION? 在 SECTIONS 下 DCSM cmd 文件的 DCSM 编程示例中、提供了段定义(您可以根据需要更改名称)。

    此外、在 Z1和 Z2开始时、长度不会转到下一个 OTP 原点/声明、这是否有意这样做?  

    查尔斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为这是有意的。 是什么使其无法正常工作?  请记住、我们在该过程中所做的唯一不起作用的事情(串行加载)是转换为.hex。  使用 Uniflash 和.out 文件可与当前写入的固件完美配合。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ben、

    好的、这看起来不错。 对于上面提到的.out 文件、这些段的对齐方式是什么? 对于闪存链接器 cmd 文件中的闪存扇区、它应该使用 ALIGN (8)。 因为串行加载程序要求十六进制文件具有特定的格式。

    在这个 关于 UniFlash 与 CCS 十六进制输出的线程之后、它看起来与您的情况类似。 BLANK_ERROR 表示返回擦除错误。 您可能需要使用填充值修改链接器 cmd 文件、以填充存储器范围中的孔洞。

    查尔斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们的闪存链接器 cmd 文件包括 align (8)。 如果我们不包含 DSCM 链接器文件、它会创建一个可使用的.hex 文件、该文件上载很好。  只有当我们包含上述文件时、它才会失败。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ben、

    好的、很高兴了解对齐情况。 Z1 Linker 是如何创建的? 这个 DCSM 链接器 cmd 文件是以某种方式生成的、还是从示例中修改的?

    查尔斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它是一个修改后的示例文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否曾尝试为 DCSM 而不是您的项目加载示例、该示例是否为器件编译?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将了解工程、看看它来自哪个样片。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、请告诉我您对他们有什么了解。

    谢谢、

    查尔斯