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.

[参考译文] AM6411:从 Keywriter 二进制写入扩展 OTP

Guru**** 2862200 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1638553/am6411-writing-extended-otp-from-keywriter-binary

器件型号: AM6411
主题: SysConfig 中讨论的其他器件

您好、

使用 TI OTP 密钥写入器二进制文件、我通过传递参数使用扩展 OTP 数据创建了证书:

-- ext-otp ./ ext_otp_data.bin - ext-otp-indx 0 - ext-otp-size 1024

其中 ext_otp_data.bin 是包含 1024 位 OTP 数据的简单二进制文件。  当我使用扩展 OTP 数据字节从 tiboot3.bin 启动处理器时、Keywriter 会以负响应停止:

已启用 VPP
找到的密钥证书:0x70045100
Keywriter 调试响应:0x20000000

如果编译时没有采用二进制(或证书)显式扩展 OTP 数据信息、则 Keywriter 二进制可正常工作。

我认为 ERROR 是 KEYWR_ERR_PROGR_MSV、但两种情况下的 MSV 详细信息是相同的。

Keywriter SDK:09.00.00.31

TI ARM LLVM:2.1.3.LTS

SysConfig:1.17.0.3128

CCS:12.4.0

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

    您好:

    Keywriter Debug Response:0x20000000

    根据以下指南、错误为“KEYWR_ERR_PROGR_EXT_OTP 29 编程 EXT OTP 扩展字段时的错误“

    https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/keywriter.html#otp-key-writer-error-codes

    请分享以下内容

    此外、这是第一次使用 Keywriter 编写扩展 OTP 吗?

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    --ext-oTp ./ext_otp_data.bin --ext-otp-indx 0 --ext-otp-size 1024

    此处使用 1024 的原因是什么?

    AM64/243 器件上扩展 OTP 的大小仅为 384 位。

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

    Prashant、Keywriter 证书 二进制文件 通过 mailchain 在 TI 驱动器中共享

    此致、

    Yasir

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

    我在证书中没有看到任何问题。 我想获得上一个问题的答案吗?

    只有 384 位、因此客户只能尝试对这些位进行编程。 如果能在会议之前对其进行测试、将会有所帮助。

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

    您好、Prashant、

    附加 SYSFW 日志 (ExtOTPUpdateFail.txt) 和 Keywriter 证书二进制文件 (final_certificate.txt) 以供参考。  请将 final_certifiate.txt 重命名为 final_certificate.cer 以查看其内容。

    用于生成证书的命令:

    ./ gen_keywr_cert_auto.sh - tifek “$PUB_TIFEK"\“\
    --smpk “$pub_key_to_fuse"\“\
    --键盘 1 \
    -- keyrev 1 \
    --cert “$CERT_NAME_PATH"\“\
    -- ext-oTp ext_otp_data.bin \
    -- ext-otp-indx 0 \
    -- ext-otp-size 1024 \
    PUB_TIFEK = ti_FEK_public.pem  
    PUB_KEY_TO_FUSE = rsa.key(自定义生成)
    cert_name_path = final_certificate.bin 的路径
    这不是首次使用 OTP 写入器、而是首次启用扩展 OTP 选项。

    e2e.ti.com/.../ExtOTPUpdateFail.txte2e.ti.com/.../final_5F00_certificate.txt

    此致、

    Harsha

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

    如 SYSFW 日志中所示

    *外部 OTP:

                                                                               无法编程、电子保险丝行为 WP:0x80

                                                                                                  无法编程、电子保险丝行为 WP:0x81

                                                                                                                    无法编程、电子保险丝行为 WP:0x82

    无法在此器件上对扩展 OTP 行进行编程、因为所有行都受写保护 (WP)、您必须在此器件上的某个时刻完成该操作。

    请在其他器件上测试编程。

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

    附加 384 位更新日志。  从日志中可以看到相同的故障。  请将 final_certificate.txt 重命名为 final_certificate.cer。

    e2e.ti.com/.../ExtOTPUpdateFail_5F00_384bits.txte2e.ti.com/.../1385.final_5F00_certificate.txt

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

    在这些电路板上绝不会尝试扩展 OTP。  我们是第一次尝试。

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

    请在其他设备上进行测试。 无法在此器件上对扩展 OTP 进行编程、因为您必须在某一点设置 WP 标志、但可能在不知不觉中设置了该标志。

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

    任何配置都无法在该器件上启用扩展 OTP 编程。 请在其他器件上进行测试、并告诉我结果。

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

    在我们的应用(包括 OPTEE、UBoot 和 Linux 应用)中、我们从未实现 TISCI 消息来更新扩展 OTP、因此从未设置过这些字节

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

    e2e.ti.com/.../keywr_5F00_defaultBoardcfg_5F00_security_5F00_hex.h

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

    使用 LDO 实现电子保险丝编程、LDO 将 3.3V 下变频为 1.8V、并使用 GPIO U9 启用或禁用 LDO。  更新 TI OTP 写入器以将 GPIO 的方向设置为输出、并在 Keywriter_setVpp () 函数中将 GPIO 驱动为高电平

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

    在这种情况下、您是否仅像我提到的那样生成 384 位的扩展 OTP 数据、因为日志显示“成功编程的 16/41 行“、这相当于 1024 位、每行仅给定 25 位?

    如果生成 1024 位的扩展 OTP 大小的证书、我可能会重现问题。

    但是、如果我使用预期的 384、则不会出现问题

    示例日志

    ❯ dd if=/dev/zero of=ext_otp_data.bin count=48 bs=1
    48+0 records in
    48+0 records out
    48 bytes copied, 0.000123959 s, 387 kB/s
    ❯ ./gen_keywr_cert.sh -t tifek/ti_fek_public.pem --ext-otp ext_otp_data.bin --ext-otp-indx 0 --ext-otp-size 384
    Generating Single signed certificate!!
    INFO: Using default key(s) for signing certificate(s)
    GEN: AES256 key generated, since not provided
    # encrypt aes256 key with tifek public part
    # encrypt SMPK-priv signed aes256 key(hash) with tifek public part
    # encrypt smpk-pub hash using aes256 key
    writing RSA key
    # encrypt smek (sym key) using aes256 key
    # encrypt ext_otp using aes256 key
    3946    primary_cert.bin
    3946    ../../x509cert/final_certificate.bin
    # SHA512 Hashes of keys are stored in verify_hash.csv for reference..

    #
    # Decrypting extensions..
    #
    MPK Options:  0x0
    MEK Options:  0x0
    MPK Opt P1:  0x0
    MPK Opt P2:  0x0
    MEK Opt   :  0x0
    SMPKH extension programming disabled
    SMEK extension programming disabled
    * EXT OTP Hash: c5cbd411721419d5b0f7d41c36899284723a06e1d0d32dea6e0a69fdcadac4fd63eb1d19c268268dbc060a68f1f207243da8781e8d95776a788a3d699dc52d85
    
    MSV extension programming disabled
    
    KEY CNT extension programming disabled
    
    KEY REV extension programming disabled
    
    SWREV extension programming disabled
    
    FW CFG REV extension programming disabled
    
    * KEYWR VERSION:  0x20000
    
    #
    # Programming Keys..
    #
    
    * MSV:
    [u32] bch + msv:  0x0
    MSV extension programming disabled
    [u32] bch + msv:  0x0
    
    * SWREV:
    [u32] SWREV-SBL:  0x1
    [u32] SWREV-SYSFW  :  0x1
    SWREV extension programming disabled
    [u32] SWREV-SBL:  0x1
    [u32] SWREV-SYSFW  :  0x1
    
    * FW CFG REV:
    [u32] SWREV-FW-CFG-REV:  0x1
    SWREV SEC BCFG extension programming disabled
    [u32] SWREV-FW-CFG-REV:  0x1
    
    * EXT OTP:
    Programmed 16/16 rows successfully
    
    * BMPKH, BMEK:
    BMPKH extension programming disabled
    BMEK extension programming disabled
    
    * SMPKH, SMEK:
    SMPKH extension programming disabled
    SMEK extension programming disabled
    
    * KEYCNT:
    [u32] keycnt:  0x0
    KEY CNT extension programming disabled
    [u32] keycnt:  0x0
    
    * KEYREV:
    [u32] keyrev:  0x0
    KEY REV extension programming disabled
    [u32] keyrev:  0x0