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.

[参考译文] CCS/TMS320F2.8075万:使用UniFlash重新编程DCSM保护器件

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

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/592733/ccs-tms320f28075-re-programming-dcsm-protected-device-with-uniflash

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

工具/软件:Code Composer Studio

我已对启用DCSM安全的设备进行编程。 我使用“dcsm_Z1_ZoneSelectBlock.asm”文件修改了安全寄存器,该文件是由“linky_with _DSCM”示例程序提供的。 我已将所有闪存扇区和所有RAM配置为区域1。  我的测试程序只配置SCI-A串行端口,并将消息输出到终端窗口。

在CCS中,如果我在调试配置中为设备提供了正确的密码,我就能够重新编程和调试设备。  设备的后续电源循环显示设备已正确编程(消息输出到终端)。

如果我使用完全相同的.out文件,并尝试使用UniFlash对设备进行编程,则芯片无法正常运行(关闭电源后,串行端口上没有消息输出)。  在尝试对芯片进行编程之前,我在UniFlash的“Security Settings”(安全设置)页中输入了正确的密码。  我能够成功解锁芯片,控制台指示编程操作已成功完成。

尝试使用UniFlash对DCSM安全设备进行重新编程时,是否需要不同的程序?

代码编辑器工作室,版本6.1 .3.0.0034万 ;UniFlash版本3.4

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

    我想验证UniFlash是否正确加载了您的程序。 您可以尝试以下顺序吗?

    1.首先使用UniFlash加载程序
    2.启动CCS并启动配置的调试会话,然后连接到设备
    3.尝试使用片上闪存视图解锁设备
    4.转至Tools -> Debugger Options -> Program/Memory Load Options'(工具->调试器选项->程序/内存加载选项),并将验证选项更改为"Full verification"(完全验证)
    5.转至Run -> Load -> Verify Program...(运行->加载->验证程序...)并选择您使用UniFlash加载的相同程序

    请告诉我验证是否正确。

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

    当我尝试验证时,我收到以下消息:
    C28xx_CPU1:文件加载器:验证失败:内存映射阻止读取0x7.802万@程序

    在尝试验证之前,我也尝试解锁设备,并收到相同的消息:
    C28xx_CPU1:正在执行安全操作...
    C28xx_CPU1:计算的链接指针偏移:0x20
    C28xx_CPU1:正在解锁设备...
    C28xx_CPU1:锁定状态:0
    C28xx_CPU1:操作成功完成。
    C28xx_CPU1:文件加载器:验证失败:内存映射阻止读取0x7.802万@程序


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

    F2.8075万上的0x7.802万是OTP存储器。 查看gel文件,它看起来应该在数据存储器页上可以读取,但程序存储器页上不可以读取。 这可能是您收到验证读取错误的原因。 您是否需要将OTP部分保留在应用程序中才能正常运行? 如果没有,您是否可以尝试删除这些部分并再次尝试验证?

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

    进步了一点! 我按照您的建议从我的应用程序中删除了部分(我通过从项目中排除“DCSM_Z1_ZoneSelectBlock.asm”和“2807x_DCSM_Lnk_CPU1.cmd”链接器文件来执行此操作)。 完成此操作后,我能够在解锁设备后成功执行验证。

    我还下载了最新的UniFlash 4.1 2.1329)。 此版本让我成功地对设备重新编程,我通过关闭设备电源并重新打开设备电源,然后看到测试程序向终端窗口输出消息来验证该设备。

    我在UniFlash中无法做的几件事是验证编程的图像,或者读取程序内存(内存浏览器显示所有零),即使我解锁了设备。 这些函数在CCS中正常工作,但在UniFlash中不能正常工作。

    有什么建议?

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

    很高兴得知您的应用程序能够在UniFlash v4上运行。

    对于UniFlash上的验证问题,这是我们正在跟踪的已知问题。 默认情况下,UniFlash会在执行闪存操作后断开与内核的连接,因此它会在您验证或读取内存之前再次锁定设备。 您可以通过单击UniFlash GUI右上角的核心名称(位于设置下方),然后单击"操作后保持连接"来解决此问题。 这将保持设备连接,解锁后,您应该能够执行验证和内存读取。

    请告诉我这是否适合您。

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

    您好,Ricky,

    您为Uniflash建议的工作效果完美!

    感谢您的帮助!

    Toby