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.

[参考译文] TMS320F28.0049万:通过uniflash命令行对DCSM进行编程的示例

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1087362/tms320f280049-an-example-to-program-dcsm-via-uniflash-commandline

部件号:TMS320F28.0049万
主题中讨论的其他部分:UNIFLAASH

您好,专家,  

我收到了客户的请求,要求DCSM程序Z1使用唯一密码,Z2使用默认密码  

请举例说明如何通过uniflash命令行对DCSM Z1和Z2进行编程?

我想在  下面的链接中使用sterie的方法,但看起来在 执行命令后,sterie遇到了问题

我 没有要重试的MCU ,专家能否确认这是使用uniflash命令行对DCSM进行编程的有效方法?  

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/79.1064万/ccs-tms320f28379s-programm-password-with-uniflash-commandline?tisearch=e2e-sitesearch&keymatch=commandline%2520password%2520uniflash#</s>2.8379万 25202520

谢谢

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

    您好,Vincent:

    我正在刘卫健循环,我们的Uniflash专家提供了最佳的解决方案。

    此致,

    Vivek Singh

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

    您好,Vincent:

    您发布的主题与UniFlash 3.4 相关。 最新版本的UniFlash更新了命令行语法,因此看起来有点不同,但一般概念相似。

    因此,在F28.0049万上编程Zone1密码的命令示例为:

    > dslite -c <CCXML>-s Z1B0CSMPSWD0=1234ABCD -b Z1PasswordProgram -e.

    请告诉我这是否适合您。

    谢谢!

    Ricky

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

    感谢您的回复,  

    C:\ti\uniflash 5.1 .0\dslite.bat -- mode flash -c C:\users\cuniflarle_LYline\v -s Z1B0OSECGPREG1=5AFFFFFFFF -s Z123FF0OTPGPROC2\unifliflash _LYLINe\program.txt -v -s Z1B0OECGPREG1=5AF1F0=5AF1F0=123AF0PS1B0=ZPS1B0=ZPS0Z -s Z2B0GRABRAM=0000AAAA -s Z2B0EXEONLYSECT=0.0001万F -s Z2B0EXEONLYRAM=0万FF -s Z2B1GRABSEC=5555.5555万 -s Z2B1EXEONLYSECT=0万 -b Z1PasswordProgram -b Z1B1BPT=55.5555万

     load setting参数不能正确加载设置文件,所以我最后在参数上键入完整的DCSM设置。看起来上面的命令可以将DCSM编程到MCU中。   

    我 遇到了另一个问题,闪存中有两个图像,一个图像位于B0 Sect 0-3,扇区的其余部分是第二个图像,  

    一旦我确认第二个映像的完整性,我就使用以下命令引导到第二个映像。  

    #Define Image1_AppCode (int (*)(void))Bzere_Sector4_start

    (*Image1_AppCode)();

    在对DCSM进行编程之前,它工作正常,现在我将Z1设置为使用exeonly保护第一个图像 ,而Z2使用exeonly保护第二个图像,  

    在引导至第二个映像之前,是否需要解锁Z2?  

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

    文森特

    Vivek可能能够回答您的安全相关问题。

    对于通过文件加载安全设置的问题,这是由从文件加载设置,然后连接到覆盖用户设置的设备的顺序引起的错误。 您使用的似乎是v.5.1 .0;此问题应在最新版本的UniFlash中得到解决。 在命令中单独设置每个选项的效果与您所述的相同。

    谢谢!

    Ricky

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

    您好  

    我使用了uniflash中的以下命令来编程DCSM设置,但它确实将设置编程到OTP中  

    C:\ti\uniflash 5.1 .0\dslite.bat -- mode flash -c C:\users\cuniflarle_LYline\v -s Z1B0OSECGPREG1=5AFFFFFFFF -s Z123FF0OTPGPROC2\unifliflash _LYLINe\program.txt -v -s Z1B0OECGPREG1=5AF1F0=5AF1F0=123AF0PS1B0=ZPS1B0=ZPS0Z -s Z2B0GRABRAM=0000AAAA -s Z2B0EXEONLYSECT=0.0001万F -s Z2B0EXEONLYRAM=0万FF -s Z2B1GRABSEC=5555.5555万 -s Z2B1EXEONLYSECT=0万 -b Z1PasswordProgram -b Z1B1BPT=55.5555万

    但是两年前我在这个岗位上遇到了类似的问题。

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/866630/ccs-tms320f280049-dcsm-programed-and-set-for-flash-boot-but-the-processor-will-not-startup</s>2000 200086.663万28.0049万

    其中MCU的闪存寄存器 在0x7.8014万和0x7.8014万中显示错误,如上面所示的链接。

    我不确定这是否是MCU/Uniflash中的错误,因此我决定查找一个新的f28.0049万 MCU并 对DCSM进行编程,而不使用以下 commnad触摸pswdlockand crclock  

    C:\ti\uniflash 5.1 .0\dslite.bat -- mode flash -c C:\Users\incentilliin\Desktop\unifliflash _cmdline\TMS320F28.0049万.ccXML -e -g C:\Users\entyllin\Desktop\uniflash _LYline\program.txt -s Z1B0OWDF0 GPREG1=5AFFFFFFFF -s ZEX0OTPG1BFF=1BPS1B0PS1B0s=1BAF0FAZFAZPS1B0=ZFAZPS0FAZPS0=ZFA0FAZPS1B1B0PS1 b Z1GEOTE=0万 -b Z1PBLYProgram -b Z1B2BEXKPOINTERProgram -b Z1GB2解锁-b Z1B0EXKPOINTERProgram -b Z1GB2

    程序之后,它仍然卡在引导ROM中,

    1.加载引导ROM符号

    2.将bootpin_config_key更改为0xA5

    3.成功读取OTP并进入闪存启动的情况, 并将0x8万作为入口地址

    4.返回0x8万作为起始地址

    5. 之后进入非法中断  

    但是,如果我在返回EntryAddr之前使用MCU寄存器解锁DCSM Z1,它将不会出现引导到 我的闪存映像的问题  

     当Z1 作为EXEONLY确保闪存扇区安全时,我是否无法运行闪存映像?  

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

    您好,

    </s>402.9437万

    在对DCSM进行编程之前,它工作正常,现在我将Z1设置为使用exeonly保护第一个图像 ,而Z2使用exeonly保护第二个图像,  

    在引导至第二个映像之前,是否需要解锁Z2?  

    [/引述]

    否,代码应能够跳转至安全功能,避免不安全,因此无需解锁Z2。

    当108.7362万当  EONLY28.0049万EONLY作为403.3714万作为闪403.3714万闪存区是安全的时,我是否不能运行闪存映像?  [/引述]

    不,这应该不重要。 您的堆栈在哪里? 确保未将其放入任何安全的RAM中。

    此致,

    Vivek Singh

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

    MEMORY
    {
    PAGE 0 :
       /* BEGIN is used for the "boot to Flash" bootloader mode   */
       BEGIN                 : origin = 0x080000, length = 0x000002
       RAMM0                 : origin = 0x0000F5, length = 0x00030B
    
       BOOT_FLASH            : origin = 0x080002, length = 0x003FFE	/* on-chip Flash */ /* BANK0_SEC0 ~ BANK0_SEC3 */
       RAMLS0                : origin = 0x008000, length = 0x000800
       RESET           		 : origin = 0x3FFFC0, length = 0x000002
    PAGE 1 :
    
       BOOT_RSVD       : origin = 0x000002, length = 0x0000F3     /* Part of M0, BOOT rom will use this for stack */
       RAMM1           : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
    
       RAMLS1      : origin = 0x008800, length = 0x003800
       RAMGS      : origin = 0x00C000, length = 0x008000
    }
    
    
    SECTIONS
    {
       codestart        : > BEGIN,     PAGE = 0, ALIGN(4)
       .text            : > BOOT_FLASH, PAGE = 0, ALIGN(4)
    
    
       .cinit           : > BOOT_FLASH,     PAGE = 0, ALIGN(4)
       .pinit           : > BOOT_FLASH,     PAGE = 0, ALIGN(4)
       .switch          : > BOOT_FLASH,     PAGE = 0, ALIGN(4)
       .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */
    
    	.stack           : > RAMGS,     PAGE = 1
       .ebss            : >>RAMLS1 | RAMGS ,    PAGE = 1
       .esysmem         : > RAMGS,    PAGE = 1
       .econst          : > BOOT_FLASH,       PAGE = 0, ALIGN(4)
    	ramgs0           : > RAMGS,    PAGE = 1
       	ramgs1           : > RAMGS,    PAGE = 1
    
    
       .TI.ramfunc      : LOAD = BOOT_FLASH,
                          RUN = RAMLS0,
                          LOAD_START(_RamfuncsLoadStart),
                          LOAD_SIZE(_RamfuncsLoadSize),
                          LOAD_END(_RamfuncsLoadEnd),
                          RUN_START(_RamfuncsRunStart),
                          RUN_SIZE(_RamfuncsRunSize),
                          RUN_END(_RamfuncsRunEnd),
                          PAGE = 0, ALIGN(4)
    
    }
    
    /*
    //===========================================================================
    // End of file.
    //===========================================================================
    */
    

    我已经将堆栈放在RAMGS部分,并且我没有阻止DCSM中的任何RAM。

     B0扇区0 - 3 与 Z1中的EXEONLY相同。

    我已经和@的FAE Wayne Huang (台湾)谈过了,他 建议使用安全,而不是仅执行,现在看起来它已经成功地运行到应用中了。

    C:\ti\uniflash 5.1 .0\dslite.bat -- mode flash -c C:\Users\incentillin\Desktop\unifliflash _cmdline\TMS320F28.0049万.ccXML -g C:\Users\entyllin\Desktop\uniflash _LYline\v program.txt -s Z1B0OWDGPREG1=5AFFFFF123TPFF -s Z1B1BAF=1BA0PS1B0PS1BAF=ZFA0PSZPS1B0PSZPS0=1B0Z b Z2BEX1EXEONLYT=0000FFFF -b Z1PasswordProgram -b Z1PasswordProgram -b Z1PasswordProgram -b Z1PasswordProgram -b Z1B Unlock -b Z2B Z2B Unlock -b Z1B0LINKPOINTERProgram -b

    我还 没有 对Z1B0PSWDLOCK部分进行编程,   能否请您看看为什么  

    -b Z1B0AllProgram -b Z1B1AllProgram -b Z2B0AllProgram -b Z2B1AllProgram是否要将设备模块?

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

    文森特

    Z1B0PSWDLOCK (和Z1B0CRCLOCK)是通过Z1OTPSECLOCKProgram操作进行编程的,因此,如果要对Z1B0PSWDLOCK进行编程,则需要将其添加到命令中。

    我不知道"AllProgram"操作的编织设备。 它应该只按顺序执行每个可用的安全编程操作。

    谢谢!

    Ricky

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

    您好,Ricky,是否可以在-b Z1OTPSECLOCKProgram -b Z2OTPSECLOCKProgram中添加这两个命令  

    在以下内容的末尾?  

    b Z1B0LINKPOINTERProgram -b Z1OTPBOTOTOTTCTRL程序-b Z1B0GRAB UNDERB -B Z1GBE程序-b Z1B0GRAB程序-b Z1GBE程序-b

    </s>403.8991万

    我不知道"AllProgram"操作的编织设备。 它应该只按顺序执行每个可用的安全编程操作。

    [/引述]

    但我确实确认它会使设备积木

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

    文森特

    添加"-b Z1OTPSECLOCKProgram"和"-b Z2OTPSECLOCKProgram"将执行Z1和Z2 OTPSECLOCK编程。 所有-b操作将按您提供的顺序执行。 如果需要,您可以询问Vivek,这是否是对设备上的OTPSECLOCK和其它安全字段进行编程的首选方法。

    对于"AllProgram"功能,如果您仍有运行命令的控制台输出,或者尝试连接到设备时收到的错误消息,Vivek也许可以帮助您了解设备发生了什么。

    谢谢!

    Ricky