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.

[FAQ] [参考译文] [常见问题解答]如何通过在 AM6x 上对扩展 OTP 进行编程来更新 ID (USB &PCIe PID/VID、MAC ID)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1235880/faq-how-to-update-ids-usb-pcie-pid-vid-mac-id-by-programming-extended-otp-on-am6x

如 TRM 中所列、USB、PCIe、MAC 的 ID 寄存器有默认 ID 值:
PCIe 连接
CTRLMMR_PCI_DEVICE_ID0、CTRLMMR_PCI_DEVICE_ID1
- USB
CTRLMMR_USB_DEVICE_ID0、CTRLMMR_USB_DEVICE_ID1
- MAC
CTRLMMR_MAC_ID0、CTRLMMR_MAC_ID1

可以选择通过对扩展 OTP 电子保险丝进行编程来更新默认 ID 值。 如果 ID 更新魔术字由用户编程、并由 ROM 从扩展 OTP 区域找到、则 ROM 将处理并使用扩展 OTP 区域中编程的 ID 值更新 ID 寄存器值。

常见问题解答介绍了如何通过对扩展 OTP efuse 进行编程来更新默认 ID (USB 和 PCIe PID/VID、MAC ID)。OTP Keywriter 或 SYSFW 支持通过对扩展 OTP 区域进行编程来更新 ID 值。 常见问题解答中的测试在 AM62A SoC HS-FS 上使用 SYSFW、这适用于 HS-SE。 AM64x、AM62x 也支持相同的功能。

建议您首先阅读此相关的常见问题解答 "如何在 AM6x SoC 上对扩展 OTP 电子保险丝进行编程"
e2e.ti.com/.../faq-how-to-program-the-extended-otp-efuse-on-am6x-soc

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

    下图显示了 ROM 对 ID 的扩展 OTP 区域的解释。 SoC 复位时、ROM 从末端读取扩展 OTP 阵列、以确定是否将各种器件 ID (USB VID/PID、PCIe VID/PID、MAC ID)编程到扩展 OTP 电子保险丝中。 如果扩展 OTP 数据与 ID 更新魔术字匹配、则 ROM 将处理来自扩展 OTP 电子保险丝的值、并将这些值更新到控制 MMR (有关 USB、PCIe、MAC ID 的控制 MMR、请参阅 TRM)。

    图1具有1024位扩展 OTP 电子保险丝的 AM62x/AM62A

    图2采用384位扩展 OTP 电子保险丝的 AM64x

    我使用 AM62A HS-FS 上的 AM62A MCU+SDK 8.6对 USB VID/PID 编程至扩展 OTP 区域进行了测试、并捕获了相关日志、其中显示了 USB VID/PID 通过 ROM 更新的基于编程为扩展 OTP 区域的 USB VID/PID。
    - am62a_fs#3_extotp_test#1_rd.log:在 USB VID/PID 编程后读取扩展 OTP MMR
    OTP MMR 30:0x45a0e047
    OTP MMR 31:0xebc80021
    USB VID:0x45a0
    USB PID:0xe047
    - am62a_fs#3_USB_vid_pid_pipe_post.log:在 HS-FS 上显示 USB-DFU 引导日志、其中已编程 USB VID/PID
    找到 DFU:[45a0e047] ver=0200、devnum=67、cfg=1、intf=0、alt=1、 name="SockId"、serial="01.00.00.00.00.00.0"
    找到 DFU:[45a0e047] ver=0200、devnum=67、cfg=1、intf=0、alt=0、 name="bootloader"、serial="01.00.00.00
    - am62a_fs#3_ID_MMR_rd.log:CTRLMMR_USB_DEVICE_ID0/CTRLMMR_USB_DEVICE_ID1读取@u-boot。 其中 ID0="e04745a0"是已编程的 USB VID/PID,ID1="61650451"是默认值。
    => md.l 0x43000220 2.
    43000220:e04745a0 61650451

    e2e.ti.com/.../am62a_5F00_fs_2300_3_5F00_extotp_5F00_test_2300_1_5F00_rd.log

    e2e.ti.com/.../am62a_5F00_fs_2300_3_5F00_usb_5F00_vid_5F00_pid_5F00_post.log

    e2e.ti.com/.../am62a_5F00_fs_2300_3_5F00_ID_5F00_MMR_5F00_rd.log