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.

[参考译文] PROCESSOR-SDK-AM64X:基于以太网/BOOTP 的 OTP Keywriter

Guru**** 2540720 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1560780/processor-sdk-am64x-otp-keywriter-over-ethernet-bootp

器件型号:PROCESSOR-SDK-AM64X
主题:SysConfig 中讨论的其他器件

工具/软件:

您好、

我有一个定制板、并尝试让 OTP Keywriter v10.00.08 (mcu_plus_sdk_am64x_10_00_00_20) 通过以太网/BOOTP 工作。

 tiboot3.bin 二进制文件似乎已正确上传到器件、但串行控制台上没有输出(应用程序似乎根本没有启动)。

根据用户指南、已验证 Keywriter 应用可在 UART、OSPI、USB-DFU、JTAG 中正常工作。

以太网/BOOTP 不包括在已验证的列表中、但使用 OTP Keywriter v09_00_00 (MCU_PLUS_SDK_am64x_09_00_00_31)、我可以成功通过 以太网/BOOTP 运行 Keywriter 应用程序。

我们更喜欢使用版本 10、因为它允许更大的证书。

基于 以太网/BOOTP 运行的 v10.00.08 版本不应该工作、而是在 v09_00_00 中工作、是否有任何原因?

此致、

Mathias

 

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

    您好:

    是否有任何原因导致通过 以太网/BOOTP 运行的 v10.00.08 版本不应该工作、而是在 v09_00_00 中工作?

    v10 在 SysConfig 中启用了 eMMC。 因此、如果您的定制电路板上没有 eMMC、则预计会出现故障、因为执行会卡在 eMMC 初始化中。 如果是这种情况、请使用以下补丁移除 eMMC

    diff --git a/source/security/sbl_keywriter/am64x-evm/r5fss0-0_nortos/example.syscfg b/source/security/sbl_keywriter/am64x-evm/r5fss0-0_nortos/example.syscfg
    index 68aec3367..b66360e40 100644
    --- a/source/security/sbl_keywriter/am64x-evm/r5fss0-0_nortos/example.syscfg
    +++ b/source/security/sbl_keywriter/am64x-evm/r5fss0-0_nortos/example.syscfg
    @@ -8,8 +8,6 @@
     /**
      * Import the modules used in this configuration.
      */
    -const bootloader      = scripting.addModule("/drivers/bootloader/bootloader", {}, false);
    -const bootloader1     = bootloader.addInstance();
     const ddr             = scripting.addModule("/drivers/ddr/ddr", {}, false);
     const ddr1            = ddr.addInstance();
     const gtc             = scripting.addModule("/drivers/gtc/gtc");
    @@ -41,22 +39,11 @@ const section5        = section.addInstance();
     /**
      * Write custom configuration values to the imported modules.
      */
    -bootloader1.appImageOffset      = "0x800000";
    -bootloader1.appImageBaseAddress = "0";
    -bootloader1.bootMedia           = "EMMC";
    -bootloader1.$name               = "CONFIG_BOOTLOADER_EMMC0";
    -bootloader1.EMMCAppImageOffset  = "0x800000";
    -
     ddr1.$name = "CONFIG_DDR0";
     
     i2c1.$name           = "CONFIG_I2C0";
     i2c1.I2C_child.$name = "drivers_i2c_v0_i2c_v0_template0";
     
    -const mmcsd             = scripting.addModule("/drivers/mmcsd/mmcsd", {}, false);
    -const mmcsd1            = mmcsd.addInstance({}, false);
    -mmcsd1.$name            = "CONFIG_MMCSD0";
    -bootloader1.MMCSDDriver = mmcsd1;
    -
     uart2.$name      = "CONFIG_UART1";
     uart2.intrEnable = "DISABLE";
     
    @@ -216,7 +203,6 @@ section5.output_section[0].alignment = 0;
     i2c1.I2C.$suggestSolution                   = "I2C1";
     i2c1.I2C.SCL.$suggestSolution               = "I2C1_SCL";
     i2c1.I2C.SDA.$suggestSolution               = "I2C1_SDA";
    -mmcsd1.MMC0.$suggestSolution                = "MMC0";
     uart2.UART.$suggestSolution                 = "USART1";
     uart2.UART.RXD.$suggestSolution             = "UART1_RXD";
     uart2.UART.TXD.$suggestSolution             = "UART1_TXD";
    diff --git a/source/security/sbl_keywriter/am64x-evm/r5fss0-0_nortos/main.c b/source/security/sbl_keywriter/am64x-evm/r5fss0-0_nortos/main.c
    index f8591ee78..93e1a37f6 100644
    --- a/source/security/sbl_keywriter/am64x-evm/r5fss0-0_nortos/main.c
    +++ b/source/security/sbl_keywriter/am64x-evm/r5fss0-0_nortos/main.c
    @@ -34,6 +34,7 @@
     #include <stdlib.h>
     #include <ti_drivers_config.h>
     #include <ti_drivers_open_close.h>
    +#include <drivers/bootloader.h>
     
     /* We add a delay to avoid partial UART logs */
     #define WAIT_FOR_R5_UART_LOGS (1U)
    

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

    您好 Prashant

    eMMC 和 i2c 已从配置中删除。 我们使用 GPIO 来设置 VPP。 目前、用于设置 GPIO 和写入密钥的代码已被注释掉:

    // keywriter_processKeyConfig ();

    我只是想让串行 uartLog 正常工作。

    我的更改:

    /**
     * Import the modules used in this configuration.
     */
    -const bootloader      = scripting.addModule("/drivers/bootloader/bootloader", {}, false);
    -const bootloader1     = bootloader.addInstance();
    const ddr             = scripting.addModule("/drivers/ddr/ddr", {}, false);
    const ddr1            = ddr.addInstance();
    const gtc             = scripting.addModule("/drivers/gtc/gtc");
    -const i2c             = scripting.addModule("/drivers/i2c/i2c", {}, false);
    -const i2c1            = i2c.addInstance();
    const uart            = scripting.addModule("/drivers/uart/uart", {}, false);
    const uart2           = uart.addInstance();
    const debug_log       = scripting.addModule("/kernel/dpl/debug_log");
    @@ -41,22 +37,9 @@ const section5        = section.addInstance();
    /**
     * Write custom configuration values to the imported modules.
     */
    -bootloader1.appImageOffset      = "0x800000";
    -bootloader1.appImageBaseAddress = "0";
    -bootloader1.bootMedia           = "EMMC";
    -bootloader1.$name               = "CONFIG_BOOTLOADER_EMMC0";
    -bootloader1.EMMCAppImageOffset  = "0x800000";
     
    ddr1.$name = "CONFIG_DDR0";
     
    -i2c1.$name           = "CONFIG_I2C0";
    -i2c1.I2C_child.$name = "drivers_i2c_v0_i2c_v0_template0";
    -
    -const mmcsd             = scripting.addModule("/drivers/mmcsd/mmcsd", {}, false);
    -const mmcsd1            = mmcsd.addInstance({}, false);
    -mmcsd1.$name            = "CONFIG_MMCSD0";
    -bootloader1.MMCSDDriver = mmcsd1;
    -
    uart2.$name      = "CONFIG_UART1";
    uart2.intrEnable = "DISABLE";
     
    @@ -213,10 +196,6 @@ section5.output_section[0].alignment = 0;
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    -i2c1.I2C.$suggestSolution                   = "I2C1";
    -i2c1.I2C.SCL.$suggestSolution               = "I2C1_SCL";
    -i2c1.I2C.SDA.$suggestSolution               = "I2C1_SDA";
    -mmcsd1.MMC0.$suggestSolution                = "MMC0";
    uart2.UART.$suggestSolution                 = "USART1";
    uart2.UART.RXD.$suggestSolution             = "UART1_RXD";
    uart2.UART.TXD.$suggestSolution             = "UART1_TXD";

    我还尝试使用 V9 Keywriter 中的旧 syscfg。 然后我不得不补充:

    const CacheP_Config gCacheConfig = {};
    进行编译。

    此外、在此版本中、串行 uartLog 完全无提示。

    与 V9 版本相比、example.syscfg 中包含许多内存初始化。

    是否需要所有这些功能?

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

    此 syscfg 与默认的 v10 syscfg 确实不匹配。 我希望您使用默认的 Keywriter v10 并应用我之前分享的补丁。 您是否也做过从您身边的改变?

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

    您好 Prashant

    您是正确的、我意外地覆盖了 V10 中的一个文件。 它现在正在工作。

    感谢你的帮助。