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.

[参考译文] TDA4VM-Q1:TDA4VM-Q1:TDA4VM88T5BALFQ1 Keywriter 编程问题

Guru**** 2425220 points
Other Parts Discussed in Thread: TDA4VM-Q1

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1522456/tda4vm-q1-tda4vm-q1-tda4vm88t5balfq1-keywriter-programming-issues

器件型号:TDA4VM-Q1


工具/软件:

你(们)好

我们目前正在使用 TDA4VM88T5BALFQ1 芯片进行与安全启动相关的开发。 但是、我们遇到了问题。 我们根据文档下载了 OTP_KEYWRITER_ADD_ON_j721e_sr1_1_v2021.05b-linux-installer.run 文件、并完成了安装和编译。 但当我们试图刻录 Keywriter 时、它并没有被刻录。 打印的日志为:OTP Keywriter 版本:02.00.00.00 (2025 年 7 月 2 日 — 13:37:44)。 在那之后,没有反应,但电流仍然存在。
BR
zhangbo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、 zhangbo

    您是否根据  OTP_KEYWRITER_ADD_ON_j721e_SR1_1 封装中自述文件所述的位置复制了 TIFS 二进制文件。

    您是否也确保仅使用 SR1.1 样本。

    此致
    Diwakar

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

    你(们)好

    是的、我确信我遵循了 redme 说明、并确认我使用了 SR1.1 示例

    BR

    zhangbo

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

    你能帮助我的详细步骤,你按照编译 Keywriter . 似乎 Keywriter TIFS 未加载。

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

    你(们)好

    以下是我执行的操作步骤

    1. 下载 OTP_KEYWRITER_ADD_ON_j721e_SR1_v2021.05b

    2.然后执行 OTP_KEYWRITER_ADD_ON_j721e_sr1_1_v2021.05b-linux-installer.run 以执行安装。

    下载的 SDK_10.X 版本

    4.

      将 OTP_KEYWRITER_ADD_ON_j721e_SR1_v2021.05b/addon/ti_FEK_public.pem 复制到 pdk_jacinto_10_00_00_27/ packages/ti/boot/keywriter/scripts。

      将 OTP_KEYWRITER_ADD_ON_j721e_SR1_v2021.05b/addon/ti-fs-keywriter.bin 复制到 pdk_jacinto_10_00_00_27/packages/ti/boot/keywriter/tifs_bin/j721e“中。

    5.

      导航到 pdk_jacinto_10_00_27/packages/ti/boot/keywriter/scripts 目录并执行命令./gen_keywr_cert.sh -g 来生成密钥。

    6.

      执行命令 cp -rf pdk_jacinto_10_00_00_27/packages/ti/build/makerules/k3_dev_mpk.pem pdk_jacinto_10_00_00_27/packages/ti/boot/keywriter/scripts/keys/smpk.pem

      xxd -r -p pdk_jacinto_10_00_00_27/packages/ti/build/makerules/k3_dev_mek.txt > pdk_jacinto_10_00_00_27/packages/ti/boot/keywriter/scripts/keys/keys smek.key

    7.

    执行./gen_keywr_cert.sh -s keys/smpk.pem --smek keys/smek.key -t ti_fek_public.pem -a keys/aes256.key --keycnt 1 --keyrev 1 来生成证书。

    8. 修改 packages/ti/boot/keywriter/main.c

    添加两个 UART 接口:
    +static void J721E_UART_InitPwrClk_test (void)
    +{
    +  HW_WR_REG32 (sbl_UART_PLL_BASE + sbl_UART_PLL_KICK0_OFFSET、sbl_UART_PLL_KICK0_UNLOCK_VAL);
    +  HW_WR_REG32 (sbl_UART_PLL_BASE + sbl_UART_PLL_KICK1_OFFSET、sbl_UART_PLL_KICK1_UNLOCK_VAL);
    +  HW_WR_REG32 (sbl_UART_PLL_BASE + sbl_UART_PLL_DIV_OFFSET、sbl_UART_PLL_DIV_VAL);
    +  HW_WR_REG32 (sbl_UART_PLL_BASE + sbl_UART_PLL_KICK0_OFFSET、sbl_UART_PLL_kick_LOCK_VAL);
    +  HW_WR_REG32 (sbl_UART_PLL_BASE + sbl_UART_PLL_KICK1_OFFSET、sbl_UART_pll_kk_lock_VAL);
    +}
    +static void J721E_SetupLvcmosDriveStrengthtest (void)
    +{
    +  volatile uint32_t *reg1 =(uint32_t *) 0x43005008;
    +  volatile uint32_t *reg2 =(uint32_t *) 0x4300500C;
    +  volatile uint32_t *lvcm_drv_h_base =(uint32_t *) 0x430060c0;
    +  volatile uint32_t *lvcm_drv_v_base =(uint32_t *) 0x430060d0;
    +  volatile uint32_t i;
    +  *reg1 = 0x68EF3490;
    +  *reg2 = 0xD172BC5A;
    +/*固定 LVCMOS 驱动强度的权变措施*/
    +  for (I= 0;I < 4;I++)
    +  {
    +       *(lvcm_drv_h_base + i)= 0xd;
    +       *(lvcm_drv_v_base + i)= 0xd;
    +  }
    +}
    int main()

      int32_t 状态= CSL_EFAIL;
    @@–190,6 +213,8 @@ int main()
      uint32_t *keywriter_cert =&keywr_end + 1U;
      UART_HwAttrs UART_cfg;

    +  J721E_SetupLvcmosDriveStrengthtest ();
    +  J721E_UART_InitPwrClk_test ();
      /* padconfig 解锁*/
      MMR_UNLOCK (WKUP_CTRL_BASE、7);
    9.
      导航至 pdk_jacinto_10_00_00_27/packages/ti/build 目录
      执行 make keywriter_img_clean SOC=j721e Board=j721e_evm
      执行 make keywriter_img SOC=j721e Board=j721e_evm
    10.
      将 keywriter_img_j721e_release.tiimage 复制到 SD 卡的引导分区、并将其重命名为 tiboot3.bin。
      将 ti-fs-keywriter.bin 复制到 SD 卡的引导分区、并将其重命名为 tifs.bin。
       继续刻录过程。
    BR
    zhangbo

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

    尊敬的 zhangbo:

      软件包中的自述文件是否说明 Keywriter 已通过 10.00 SDK 验证?

    此致
    Diwakar

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

    你(们)好

    这些内容都是由软件包中的自述文件编写的。 我看到它需要最低版本的 SDK 8.0

    欢迎使用 TI OTP Keywriter 软件附加包!!
    该软件包会安装在 TI.com 上提供的通用 PDK 软件包中

    要开始使用、请按照以下步骤操作:

    1.通过此处的链接从 TI.com 安装 Processor SDK RTOS:
    www.ti.com/.../

    注意:该软件包已通过 Processor SDK RTOS 08_00_00 版本的验证  
    并且是运行 OTP Keywriter 软件所需的最低 SDK 版本。  
    对于任何更高的 SDK 版本、请在路径中相应地更新版本。

    2.安装后,请安装 Keywriter 包的安装程序并将其安装到以下文件夹中:

    /pdk_jacinto_08_00_00

    3.将 OTP Keywriter 固件`ti-fs-keywriter.bin` file 复制到  

    /pdk_jacinto_08_00_00/packages/ti/boot/keywriter/tifs_bin/j721e/ti-fs-keywriter.bin

    4.将 TIFEK 公钥`ti_FEK_public.pem`文件复制到  

    /pdk_jacinto_08_00_00/packages/ti/boot/keywriter/scripts/ti_FEK_public.pem

    3.如有任何疑问,请在 e2e.ti.com 上发布您的疑问

    BR

    zhangbo

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

    尊敬的 zhangbo:

    您是否也可以使用 RTOS 08_00_00 进行测试、因为它未针对 10.0 SDK 进行验证。

    此致  

    Diwakar  

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

    你(们)好

    这可能是不可行的、因为我们在 SDK 10.0 上进行了许多更改。 如果我们使用 SDK 8.0、则需要将所有更改移植到 SDK 8.0、这涉及大量更改。 如果不进行移植、电路板将无法启动。 我有一个问题要问、我的刻录过程是否正确?

    BR

    zhangbo

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

    嗨、 zhangbo

    您能否在 keywriter.mk 中进行以下更改并对 Keywriter 进行全新编译? 看看它是否起作用。

    diff --git a/ti/boot/keywriter/build/keywriter.mk b/ti/boot/keywriter/build/keywriter.mk
    index 3ca26d0..ab000b5 100755
    --- a/ti/boot/keywriter/build/keywriter.mk
    +++ b/ti/boot/keywriter/build/keywriter.mk
    @@ -102,7 +102,7 @@ endif
     include $(MAKERULEDIR)/platform.mk
     include $(MAKERULEDIR)/common.mk
     # Uncomment the below to auto-generate new "tifs_keywriter.h" 
    -#include $(PDK_KEYWR_COMP_PATH)/build/bin2c.mk
    +include $(PDK_KEYWR_COMP_PATH)/build/bin2c.mk
     
     # OBJs and libraries are built by using rule defined in rules_<target>.mk
     #     and need not be explicitly specified here
    

    此致
    Diwakar

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

    你(们)好

    现在、我没有板、需要等待几天。 我有一个问题想问。 根据文档、如果电路板未使用 Keywriter 进行刷写、则可使用 GP 映像(未签名)正常引导。 是这样吗?

    BR

    zhangbo

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

    嗨、 zhangbo  

    目前、我没有板、需要等待几天。 [/报价]

    肯定会等待您的结果。

    根据文档、如果电路板未使用 Keywriter 进行刷写、则可以使用 GP 映像(未签名)正常引导。 正确吗?

    是、 由于实际密钥未熔合到 effuses 上、因此没有用于验证映像的密钥。

    此致
    Diwakar

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

    你(们)好

    我点击此链接进行了更改(【常见问题解答】TDA4VM-Q1:SR2.0 update Keywriter process) 并添加了我自己的日志、但奇怪的是、只会打印出日志的中间部分。 我在开头和结尾添加的日志未打印、似乎 Keywriter 的状态也不正确。以下是包含添加日志和调试结果的图像。

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

    你(们)好

    我的意思是:在本票修改后,我添加的日志没有打印出来。 我不知道问题是什么。 添加 UART 串行端口的代码中是否有错误? 打印的日志与我添加的日志不匹配

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

    您好、张:

     Sciclient_loadFirmware 的返回值是多少? 它是通过吗?

    您是否也曾做过先前建议的更改: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1522456/tda4vm-q1-tda4vm-q1-tda4vm88t5balfq1-keywriter-programming-issues/5858575#5858575

    此致
    Diwakar

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

    你(们)好

    1. 目前,在测试过程中没有打印返回值,所以我们不知道发生了什么错误;它只是卡在Sciclient_loadFirmware函数中。
    2. 我已根据您的建议进行了修改。
    3. 目前、我们正在使用 SPL 进行引导、我不确定 SPL 引导过程是否会对 Keywriter 编程产生任何影响。
      Br zhangbo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、张:

    SPL 引导流是什么意思,您是指使用 SPL 引导流引导映像。

    请允许我有时间在我结束时测试,我会尝试安排 sr1.1 样品和测试出来。

    将通过 OOW 对此进行更新。

    此致
    Diwakar

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

    你(们)好

    抱歉、我们目前使用的是 TDA4VM88T5BALFQ1 芯片模型、但我认为原理是相同的;它只需要将 sr1.1 更改为 sr2.0。 我还进行了一些测试、发现可以对 SDK 8.6 的基准进行编程、但我们当前的基准是 SDK 10.0。 目前、我怀疑有两个潜在问题:
    1. 对于这两个基准、Keywriter 是否有任何修改?
    2. 可能是我在 Keywriter 编译过程中犯了一些错误。
    3. 您能否提供有关 Keywriter 编译和相关操作过程的文档?
      Br zhangbo
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、张:

    抱歉、我们当前使用的是 TDA4VM88T5BALFQ1 芯片模型、

    这是 SR1.1 器件  

    现在我的理解是、您想将其更改为 SR2.0 示例、并希望对其运行 Keywriter、如果我的理解有误、请纠正我。

    我也进行了一些测试、我发现 SDK 8.6 的基准可以编程、

    您正在使用哪个器件的芯片版本进行测试?

    您能否提供有关 Keywriter 编译和相关操作过程的文档?
    [/报价]

    您可以按照本 文档中提到的步骤 操作、对于较新的 SDK、步骤也是相同的。

    此致
    Diwakar

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

    尊敬的 Bo:

    我想您想在一个项目和相同的基准软件 (SDK10.0) 中使用 B 版本 (SR1.1) 和 C 版本、对吧?  根据我的理解、无论您的项目 SW SDK 版本如何、您都应该使用 SDK8.6 作为 Keywriter 基准、因为添加的 Keywriter 都是使用 SDK8.6 进行验证的。 因此、请使用 SDK8.6 作为 Keywriter 基线来编译 Keywriter bin。

    BR、

    Biao  

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

    您好、张:

     根据我的理解、无论您的项目是软件 SDK 版本、您都应该使用 SDK8.6 作为 Keywriter 基准、因为 Keywriter 添加项是使用 SDK8.6 进行验证的。 因此、请使用 SDK8.6 作为 Keywriter 基线来编译 Keywriter bin。

    KeyWriter 二进制文件在 SDK 8.6 和 SDK 10.0 之间不会更改、SR1.1(B 版本)和 SR2.0(C 版本)之间会存在差异。 唯一的区别是 所构建的 KeyWriter 应用程序、它  与 SDK 驱动程序更新一致。

    让 KeyWriter 与 SDK10.0 配合使用时应该不会出现问题。  

    此致

    Suman

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

    大家好、Zhang

    一个问题,一个建议,好奇地知道

    如果您标记“Sciclient_loadFirmware"函“函数、它是否可以打印 “SCICLIENT LOAD firmware end“?

    我们需要知道、加载 DMSC 固件是否确实导致了此问题。

    Gibbs

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

    你(们)好
    目前、我们已使用 SDK 8.6 成功将 Keywriter 烧录到电路板上

    BR

    zhangbo

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

    您好、张:

    目前、我们已使用 SDK 8.6
    成功将 Keywriter 烧录到电路板上

    感谢您的确认。 关闭此 TT。

    此致

    Suman