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/TMS320F28034:如何首次设置 CSM 模块存储器和密码?

Guru**** 2609695 points
Other Parts Discussed in Thread: TMS320F28034, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/683531/ccs-tms320f28034-how-do-i-set-csm-module-memory-and-password-for-the-first-time

器件型号:TMS320F28034
Thread 中讨论的其他器件: controlSUITE

工具/软件:Code Composer Studio

你(们)好  

我在连接器文件中为 TMS320F28034为 CSM 保留了以下位置(代码安全模块)。  

csm_RSVD  :origin = 0x3F7F80,length = 0x000076   // FLASHA 的一部分。  当 CSM 正在使用时、使用所有0x0000进行编程。 *

CSM_PWL_P0 :origin = 0x3F7FF8,length = 0x000008   // FLASHA 的一部分。  FLASHA 中的 CSM 密码位置*/

人们通常如何 首次填充 csm_RSVD?

人们通常如何第一次在 csm_PWL_P0处设置密码?

他们是否从 code composer 中执行此操作?  如果是、如何操作?

是否有方法可以从链接器文件执行此操作? 如果是、如何操作?

还是必须使用我编写的程序来完成它?

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

    James、

    我建议使用一个较小的.asm 文件来对 Passwords 和 csm_RSVD 区域进行编程。  将此内容包括在项目中、两个区域将与闪存的所有其余部分一起进行编程。  使用命名段、并在链接器.cmd 文件中链接这些段。

    asm 文件、例如、将其称为 passwors.asm:

    (三

     .sect "密码"

     .int 0xFFFF  ;PWL0 (128位密码的 lsw)
     int 0xFFFF  ;PWL1
     int 0xFFFF  ;PWL2
     int 0xFFFF  ;PWL3
     int 0xFFFF  ;PWL4
     int 0xFFFF  ;PWL5
     int 0xFFFF  ;PWL6
     .int 0xFFFF  ;PWL7 (128位密码的 MSW)
     
    (三

     .sect "csm_rsvD"
     .loop (3F7FF5h - 3F7F80h + 1)
      int 0x0000
     endloop

    (三

     .end

    在上面、将0xFFFF 更改为您想要的密码。  然后在链接器命令中、将段链接到相应的存储器。

    存储器

    第0页:   /*程序内存*/
      CSM_RSVD  (R):origin = 0x3F7F80,length = 0x000076
      密码 (R):origin = 0x3F7FF8,length = 0x000008

     
    部分

      csm_rsvd         :>csm_RSVD,             page = 0
      密码        :>密码,            页= 0


    此致、

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答。 我将保留此代码片段并在稍后添加到我的项目中。 现在、我能够使用 Code Composer Studio 中的选项使用密码锁定我的闪存。 当您连接到调试器时、该选项位于 tools\on chip flash 中。 现在我的闪存已锁定、我一直在尝试使用自定义引导加载程序中的代码将其解锁。 我的引导加载程序基于此目录中的项目。
    C:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\F2803x_flash_kernel
    我通过 init_boot_addr = 0x003ff7dd 的代码加载上述项目;
    这就像我的引导加载程序无法正常运行、或者当我的闪存被锁定时会出现什么情况。 当我的闪存被锁定时、我无法获取自动波特字符。 在自动波特序列之后、我粘贴了一个函数 CsmUnlock、我想使用该函数来解锁闪存、但我不认为项目正在正常运行、也不认为闪存被锁定时会出现什么情况、因为我从未获得自动波特字符。 当闪存未锁定时、引导加载程序会工作。 您能不能给出代码的原因
    C:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\F2803x_flash_kernel
    闪存锁定时可能无法正常运行?

    uint16 CsmUnlock()

    易失性 uint16温度;

    //使用当前密码加载密钥寄存器。 0xFFFF 是虚拟的
    //密码。 用户应将其替换为正确的 DSP 密码。

    EALLOW;
    CsmRegs.KEY0 = 0x1111;
    CsmRegs.key1 = 0x2222;
    CsmRegs.key2 = 0x3333;
    CsmRegs.key3 = 0x4444;
    CsmRegs.KEY4=0x5555;
    CsmRegs.KEY5 = 0x6666;
    CsmRegs.KEY6 = 0x7777;
    CsmRegs.KEY7 = 0x8888;
    EDIS;

    //执行密码位置的虚拟读取
    //如果它们与密钥值匹配,CSM 将解锁

    temp = CsmPwl.PSWD0;
    temp = CsmPwl.PSWD1;
    temp = CsmPwl.PSWD2;
    temp = CsmPwl.PSWD3;
    temp = CsmPwl.PSWD4;
    temp = CsmPwl.PSWD5;
    temp = CsmPwl.PSWD6;
    temp = CsmPwl.PSWD7;

    //如果 CSM 未锁定,则返回成功,否则返回
    //失败。
    if (CsmRegs.CSMSCR.bit.SECURE_=0)返回 STATUS_SUCCESS;
    否则返回 STATUS_FAIL;

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

    如果不解锁器件、则无法擦除/编程闪存。 在 F2803x_flash_kernel 工程中、shared_Boot.c 调用 CsmUnlock 函数。 此函数被定义为 DSP2803x_SYSCTRL.C. 请在此处更新 CSM 密码、编译并重新运行 F2803x_flash_kernel 程序。

    此致、
    曼诺伊