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.

[参考译文] TMS320F2800155:安全启动的仿真调试似乎无效。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1626596/tms320f2800155-the-simulation-debugging-for-the-safe-startup-seems-to-have-no-effect

器件型号: TMS320F2800155

你好、团队

我使用该例程进行调试、旨在实现安全启动功能。 目前、我设置了 EXEONLY、

1773662215226_6a34c0c473d342a68440255febba662b.png

 已配置 CAMC、并检查相应的十六进制值以生成 CMAC。 相应的十六进制如下所示、以及相应的文件。

image.png

image.png

 

我使用 unitflash 配置了 EXEONLY、烧录相应的十六进制文件、并使用 CCS 执行仿真。 我分别在地址 0x0d00 和 0x0d04 处写入 5AFFFFFF 和 FFFFFF0A、模拟安全启动。 我设置断点、程序正常运行。 但是、我在地址 0x02 处看不到成功标志 0x3 或 burn.out 文件。 由于.out 文件没有 CMAC、根据规则、程序应该无法正常启动。 但 burned.out 程序仍在运行。 这可能是什么原因? 如果我遗漏了任何内容、请检查一下吗?

image.png

此致

Zhang

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

    您好:

    由于.out 文件没有 CMAC、根据规则、程序应该无法正常启动。 但 burned.out 程序仍在运行。

    正确。 只有从十六进制实用程序生成的.hex 才会嵌入黄金 CMAC 标签。

    I 使用 unitflash 配置了 EXEONLY、烧录相应的十六进制文件、并使用 CCS 执行仿真。

    您是否对.hex 或.out 文件进行编程? 您似乎在描述中同时引用了这两项内容。

    [报价 userid=“599988" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1626596/tms320f2800155-the-simulation-debugging-for-the-safe-startup-seems-to-have-no-effect ]我分别在地址 0x0d00 和 0x0d04 编写了 5AFFFFFFF 和 FFFFFF0A、模拟安全启动

    您是否在写入仿真引导配置后重置了 CPU? 否则、安全启动流程将不会运行。

    但是、我在地址 0x02 处看不到成功标志 0x3 或 burn.out 文件。

    地址 0x02 是什么意思? 您是指相对于黄金 CMAC 标签所在的闪存入口点的偏移量吗?

    您是否在您的应用程序中执行了额外的闪存验证? 如果是、CPU1BROM_calculatecmac() 返回什么?  

    此致、
    马特

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

    您好、Matt

    目前、仿真启动已成功激活。 我已经观察到了我所期望的现象。 但是、当我导入相应的 OTP 配置时、程序无法正常启动。 我使用 unitflash 烧录相应的十六进制文件。 在此之前、我已经烧录了相应的.out 文件(目的是配置相应的闪存加密和 OTP 安全启动)。 中烧录的配置如下:

    对应的code为 μ s

    .sect “dcsm_OTP_Z1_gpreg"</s>“
    .retain
    .long 0x5AFF1820;Z1OTP_GPREG1 = Z1_BOOTPIN
    .long 0x5Affff;Z1OTP_GPREG2
    .long 0x0A03040A;Z1OTP_GPREG3 = Z1OTP_BOOTDEF_LOW
    .long 0xFFFFFFFF;Z1OTP_GPREG4 = Z1OTP_BOOTDEF_HIGH

    当前配置的引脚为 GPIO24 和 GPIO32、并且引脚状态均为高电平 (11)。 因此、BOOTDEF3 对应于引脚状态、并配置为 0A 安全启动。 但是、此时引导失败。 我相信我的引脚状态是正确的。 那么、问题可能出在哪里呢?

    此外、请查找附加的 DCSM 配置。

    ;----------------------------------------------------------------------
    ; Zone 1
    ;----------------------------------------------------------------------
         .sect "dcsm_otp_z1_linkpointer"
          .retain
          .long 0x00003FFC
          .long 0x00003FFC
          .long 0x00003FFC
        
         .sect "dcsm_otp_z1_jlm_enable"
          .retain
          .long 0xFFFF000F     ;Z1OTP_JLM_ENABLE
    ;;     .sect "dcsm_otp_z1_jtag_pswdh"
    ;;      .retain
    ;;      .long 0x4BFFFFFF     ;Z1OTP_JTAGPSWDH0
    ;;      .long 0x3FFFFFFF     ;Z1OTP_JTAGPSWDH1
    
         .sect "dcsm_otp_z1_cmac_key"
          .retain
          .long 0xFFFFFFFF     ;Z1OTP_CMACKEY0
          .long 0xFFFFFFFF     ;Z1OTP_CMACKEY1
          .long 0xFFFFFFFF     ;Z1OTP_CMACKEY2
          .long 0xFFFFFFFF     ;Z1OTP_CMACKEY3
      
         .sect "dcsm_otp_z1_pswdlock"
          .retain
          .long 0xFB7FFFFF
          
         .sect "dcsm_otp_z1_crclock"
          .retain
          .long 0x7FFFFFFF
       
       .sect "dcsm_otp_z1_gpreg"
          .retain
          .long 0x5AFF1820     ;Z1OTP_GPREG1 = Z1_BOOTPIN
          .long 0x5Affffff     ;Z1OTP_GPREG2
          .long 0x0A03040A     ;Z1OTP_GPREG3 = Z1OTP_BOOTDEF_LOW
          .long 0xFFFFFFFF     ;Z1OTP_GPREG4 = Z1OTP_BOOTDEF_HIGH
         .sect "dcsm_zsel_z1"
          .retain
          .long 0x12345678     ;Z1OTP_CSMPSWD0 (LSW of 128-bit password)
          .long 0x1DFFFFFF     ;Z1OTP_CSMPSWD1
          .long 0x12345678     ;Z1OTP_CSMPSWD2
          .long 0x12345678     ;Z1OTP_C
          
          .long 0x55555555     ;Z1OTP_GRABSECT1
          .long 0x55555555     ;Z1OTP_GRABSECT2
          .long 0x55555500     ;Z1OTP_GRABSECT3
          .long 0x0000AAAA     ;Z1OTP_GRABRAM1
          .long 0xFFFFFFFF     ;Reserved
          .long 0xFFFFFFFF     ;Reserved
          
           
          .long 0xFFFFFFF0     ;Z1OTP_EXEONLYSECT1
          .long 0x0000FFF0     ;Z1OTP_EXEONLYSECT2
          .long 0x000000FF     ;Z1OTP_EXEONLYRAM1
          .long 0xFFFFFFFF     ;Reserved
          .long 0xFFFFFFFF     ;Z1OTP_JTAGPSWDL0
          .long 0x7B7FFFFF     ;Z1OTP_JTAGPSWDL1    
          
    ;----------------------------------------------------------------------
    ; Zone 2
    ;----------------------------------------------------------------------
         .sect "dcsm_otp_z2_linkpointer"
          .retain
          .long 0x00003FFC
          .long 0x00003FFC
          .long 0x00003FFC
    
         .sect "dcsm_rsvd_z2"
          .retain
          .long 0xFFFFFFFF     ;Reserved
         .sect "dcsm_otp_z2_pswdlock"
          .retain
          .long 0x1F7FFFFF
          
            .retain
          .long 0x3FFFFFFF
                
    ;;     .sect "dcsm_otp_z2_gpreg"
    ;;      .retain
    ;;      .long 0x5AFFFFFF     ;Z2OTP_GPREG1 = Z2_BOOTPIN
    ;;      .long 0x5AFFFFff     ;Z2OTP_GPREG2
    ;;      .long 0xFFFFFF0A     ;Z2OTP_GPREG3 = Z2OTP_BOOTDEF_LOW
    ;;      .long 0xFFFFFFFF     ;Z2OTP_GPREG4 = Z2OTP_BOOTDEF_HIGH
          .sect "dcsm_rsvd1_z2"
          .retain
          .long 0xFFFFFFFF     ;Reserved
          .long 0xFFFFFFFF     ;Reserved
    
          .sect "dcsm_zsel_z2"
          .retain
          .long 0x12345678     ;Z2OTP_CSMPSWD0 (LSW of 128-bit password)
          .long 0x4FFFFFFF     ;Z2OTP_CSMPSWD1
          .long 0x12345678     ;Z2OTP_CSMPSWD2
          .long 0x12345678     ;Z2OTP_CSMPSWD3 (MSW of 128-bit password)
     
          .long 0xAAAAAAAA     ;Z2OTP_GRABSECT1
          .long 0xAAAAAAAA     ;Z2OTP_GRABSECT2
          .long 0xAAAAAA00     ;Z2OTP_GRABSECT3
          .long 0x0000AAAA     ;Z2OTP_GRABRAM1
          .long 0xFFFFFFFF     ;Reserved
          .long 0xFFFFFFFF     ;Reserved
          
          .long 0xFFFFFFFF     ;Z2OTP_EXEONLYSECT1
          .long 0x0000FFF0     ;Z2OTP_EXEONLYSECT2
          .long 0x000000FF     ;Z2OTP_EXEONLYRAM1
          .long 0xFFFFFFFF     ;Reserved
          .long 0xFFFFFFFF     ;Reserved
          .long 0xFFFFFFFF     ;Reserved
        

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

    您好:

    您是否可以在 CCS 存储器浏览器中检查以下内容:

    • 确认黄金 CMAC 标签已正确编程为地址 0x80002(加载十六进制之后)。  有什么价值?
    • 通过检查地址 0x2 处的引导状态、确认安全闪存启动已启动。 有什么价值?
      • 如果没有、请探测 XRSn 以查看器件是否正在复位  

    此致、
    马特