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.

[参考译文] AM6412:从 uboot 启动 LPDDR4 眼图工具

Guru**** 2933120 points

Other Parts Discussed in Thread: SYSCONFIG, SK-AM64B

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1638692/am6412-launching-lpddr4-eye-tool-from-uboot

器件型号: AM6412
Thread 中讨论的其他器件: SysConfigSK-AM64B

您好、
我尝试在定制电路板上启动 AM64x LPDDR4 Eye 工具。 出于安全原因、我没有 JTAG 测试点、因此我想尝试通过 u-boot 启动映像。
但是、u-boot 不接受提供或生成的任何映像 (.out、.rprc、.appimage)。 Eye 工具中的 readme.txt 也提到了 UART 引导、但我们的电路板没有*。tiimage 文件、只有 tiboot3.bin、tispl.bin 和 u-boot.img(包含用于我们电路板的 DRAM 初始化代码)。
是否可以通过 u-boot 命令行或使用 tiboot3.bin 和 tispl.bin 运行 Eye 工具?

 

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

    您好、Thomas、

    我们在启用这种特定子案例时遇到了挑战、u-boot 似乎无法轻松加载眼图工具。 它应该能够加载任何任意的 elf 文件、但 破坏这种支持的可能是内存映射阻塞(Eye 工具需要一个合适的 SRAM 和 DRAM 块、这些 SRAM 和 DRAM 块驻留在或使用)。

    此致、

    Lucas

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

    (忘记在我的初始回复中粘贴此器件)

    您当前如何通过 SD 卡/USB 引导/闪存引导定制电路板? 您可以使用哪些引导方法?  

    此致、

    Lucas

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

    您好、Lucas:

    默认情况下、我们从 SPI 闪存引导(128MBit、1 位 SPI 模式)、但对于测试和生产、我们可以轻松切换到 USB DFU 引导或 UART 引导。
    我已经尝试过 UART 引导、但我们没有*。tiimage 文件、其中包含特定的 DRAM 初始化数据(我们确实有 tiboot3.bin 和 tispl.bin)。

    此致

      Tom

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

    您好、Thomas、

    很高兴看到您有多个引导选项可用。 您是否可以访问 u-boot 编译中使用的任何源文件、特别是用于 DDR 配置的器件树文件? 这将是 SysConfig 的 DDR 配置工具的输出: https://dev.ti.com/sysconfig/#/config/?args=--product%20%2Fmnt%2Ftirex-content%2FProcessor_DDR_Config_0.10.32.0000%2F.metadata%2Fproduct.json%20--device%20AM6412%20--package%20%22FCBGA%20P$OPEN$ALVP$CLOSE$%22%20--variant%20AM6412-C%20--context%20system 

    此致、

    Lucas

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

    您好、Lucas:

    是的、我有 DDR 配置工具(包括 k3-am64-ddr-config.dtsi)的输出文件。 我们的软件人员具有访问 uboot 源文件的权限、如果他们知道如何获取必要的输出文件、可以对其进行编译。

    此致

      Tom

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

    您好、Thomas、

    如果您可以访问源(特别是针对 DDR 配置)、那么我们可以尝试改用 MCU+SDK 来引导器件。 您的团队是否也具有该器件树文件的原始 SysConfig 输入、或者他们是否只是保留了输出? 如果没有、也没关系、它需要从器件树文件中进行一些转换、除非您的团队拥有 SysConfig 原始源代码、但我可以自己手动操作并发布翻译版本。

    完成该操作后、您可以将 DDR 寄存器配置放置为编译以供 MCU+SDK 使用、而不是默认设置。 可以重新编译 MCU+映像以使用 DDR 配置、然后通过 UART 引导等程序加载该工具。  

    此致、

    Lucas

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

    您好、Lucas:

    我们还有电路板的 SysConfig 输入文件。 我的 (Linux) PC 上安装了 MCU+SDK V12.00.00.26。 是否有任何文档介绍了 DDR 配置文件的放置位置以及如何编译以获取 UART 引导所需的文件?

    此致

      Tom

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

    您好、Thomas、

    您应该能够替换 source/drivers/DDR/V0/DDR/am64x_am243x/board_lpddrReginit.h 中的 soc 配置文件、然后重新编译。 我希望获得 AM64 EVM、以便逐步演示并使用相同的 SDK 版本复制它。

    此致、

    Lucas

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

    您好、Thomas、

    我在为最新的 SDK 版本安装依赖项(某种 IT 问题)时遇到了一些问题、因此我最终使用了安装在我连接电路板的 PC 上的旧版本、  11.01.00.17.无论版本如何、步骤都应相同。

    1. 将 board_ddrReginit.h 从 SysConfig 重命名为 board_lpddrReginit.h
    2. 将 board_lpddrReginit.h 放在 source\drivers\ddr\v0\am64x_am243x 下 soc、这将替换已有的版本。
    3. 重新编译 SBL_UART 应用程序使用的驱动程序、其应为 r5f nortos 版本的驱动程序。 我使用的命令如下、但您的 SDK 的位置可能不同
      1. gmake -C C:\ti\mcu_plus_sdk_am64x_11_01_00_17\source\drivers --makefile C:\ti\mcu_plus_sdk_am64x_11_01_00_17\source\drivers\makefile.am64x.r5f.ti-arm-clang.nortos
    4. 重新编译驱动程序后、使用更新的驱动程序重新编译实际的 SBL_UART 应用程序
      1. gmake -C C:\ti\mcu_plus_sdk_am64x_11_01_00_17\examples\drivers\boot\sbl_uart\am64x-sk\r5fss0-0_nortos\ti-arm-clang\
    5. 如果您尚未完成、则需要将固件从 elf 文件转换为 appimage(可能还需要对其签名)。  
      1. 转换为 rprc
        1. node .\out2rprc\elf2rprc.js .\AM64X_TEye_A53_read.out 
      2. 转换为 appimage
        1. node .\multicoreImageGen\multicoreImageGen.js --devID 55 .\AM64X_TEye_A53_read.rprc@0 --out .\AM64X_TEye_A53_read_unsigned.appimage 
      3. 签署 appimage
        1. python ..\..\source\security\security_common\tools\boot\signing\appimage_x509_cert_gen.py --bin .\AM64X_TEye_A53_read_unsigned.appimage --authtype 1 --key ..\..\source\security\security_common\tools\boot\signing\app_degenerateKey.pem --output .\AM64X_TEye_A53_read_signed.appimage
    6. 在您获得签名的应用映像和重新编译的 UART SBL 后、您可以这样通过 UART 引导器件(我还将命令链接到该 PC 上安装的串行软件中以节省一些点击次数,但您的点击次数可能不同):
      1. python .\uart_bootloader.py -p COM21 --bootloader=..\..\examples\drivers\boot\sbl_uart\am64x-sk\r5fss0-0_nortos\ti-arm-clang\sbl_uart.release.hs_fs.tiimage --file=.\AM64X_TEye_A53_read_signed.appimage ; ttermpro.exe /C=21

    此致、

    Lucas

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

    您好、Lucas:
    感谢您的支持。 我在过去的三个星期都不在办公室,所以我无法检查这一点。 我将在接下来的几天尝试这样做、然后提供反馈。 很抱歉耽误你的时间。
    此致

     Tom

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

    您好、Lucas:
    我能够使用您的指令编译 SBL_UART。 但是、如果我使用生成的文件启动电路板、则 sbl_uart 被正确上传、然后 TEye 文件也被完全上传、但最后出现一条错误消息“[error] XMODEM recv failed、EVM 无响应或错误响应、或用户取消“。
    文件大小与预编译文件相同、但二进制文件不同、因此我假设编译确实可以正常工作。
    错误消息后、终端打开、显示“CCC“、看起来电路板已复位。
    是否有任何调试选项可以查看出了什么问题?
    这里还有一个 SK-AM64B、因此我将在从我的同事那里获得这些文件后立即使用此板检查文件。
    再次感谢您的帮助和此致
      Tom

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

    您好、Lucas:
    同时、我从同事那里获得了 SK-AM64B、但我甚至无法使用 UART 引导在 SK-AM64B 上运行预构建的映像。

    我可以使用 bootloader_uart.py 上传这两个文件、但最后会出现错误:

    Sending the UART bootloader sk64_prebuilt__sbl_uart.release.hs_fs.tiimage ...
    Sent bootloader sk64_prebuilt__sbl_uart.release.hs_fs.tiimage of size 299365 bytes in 28.57s.            
    
    Sending the application AM64X_TEye_A53_read_signed.appimage ...
    Sending AM64X_TEye_A53_read_signed.appimage: 186266bytes [00:18, 11184.36bytes/s]error_count reached 16, aborting.
    Sending AM64X_TEye_A53_read_signed.appimage: 186268bytes [00:18, 11184.36bytes/s]
    [ERROR] XMODEM recv failed, no response OR incorrect response from EVM OR cancelled by user,
            Power cycle EVM and run this script again !!!

    如果我使用有符号或无符号的应用映像文件、没有什么区别。 我还尝试使用 xmodem 通过终端手动传输 2 个文件。 使用此设置、我可以成功上传两个文件、但随后在终端窗口中不会再出现任何情况。 带_prebuilt 的引导加载程序是 MCU-SDK 12_00_26 中包含的引导加载程序

    是否可以对此进行调试?


    此致

      Tom

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

    您好、Tom、

    我们从一种更简单的方法开始、看看它是否是 SDK 之外的设置问题。 我设法克服了一些 IT 问题、并在我当前的 PC 上安装了最新的 SDK。 您是否可以尝试在 SK-EVM 上引导默认的 SBL_NULL? 它应位于如下路径下: “mcu_plus_sdk_am64x_12_00_00_27\tools\boot\sbl_prebuilt\am64x-sk\sbl_null.debug.hs_fs.tiimage“

    您需要发送此文件两次(第一次 SBL_NULL 将对器件进行热复位,第二次检测到热复位并继续)。 您应获得如下所示的输出:

    Starting NULL Bootloader ...
    
    DMSC Firmware Version 12.0.2--v12.00.02 (Clever Cat)
    DMSC Firmware revision 0xc
    DMSC ABI revision 4.0
    
    INFO: Bootloader_runCpu:307: CPU r5f1-0  is initialized to 800000000 Hz !!!
    INFO: Bootloader_runCpu:307: CPU r5f1-1 is initialized to 800000000 Hz !!!
    INFO: Bootloader_runCpu:307: CPU m4f0-0 is initialized to 400000000 Hz !!!
    INFO: Bootloader_runCpu:307: CPU a530-0 is initialized to 1000000000 Hz !!!
    INFO: Bootloader_runCpu:307: CPU a530-1 is initialized to 1000000000 Hz !!!
    INFO: Bootloader_runSelfCpu:318: All done, reseting self ...

    此致、

    Lucas

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

    您好、Lucas:

    我尝试使用终端程序发送 sbl_NULL 两次、结果是有效的。 我收到此回复:

    Starting NULL Bootloader ...                                                               
                                                                                               
    DMSC Firmware Version 12.0.2--v12.00.02 (Clever Cat)                                       
    DMSC Firmware revision 0xc                                                                 
    DMSC ABI revision 4.0                                                                      
                                                                                               
    INFO: Bootloader_runCpu:307: CPU r5f1-0  is initialized to 800000000 Hz !!!                
    INFO: Bootloader_runCpu:307: CPU r5f1-1 is initialized to 800000000 Hz !!!                 
    INFO: Bootloader_runCpu:307: CPU m4f0-0 is initialized to 400000000 Hz !!!                 
    INFO: Bootloader_runCpu:307: CPU a530-0 is initialized to 1000000000 Hz !!!                
    INFO: Bootloader_runCpu:307: CPU a530-1 is initialized to 1000000000 Hz !!!                
    INFO: Bootloader_runSelfCpu:318: All done, reseting self ...   

    如果我使用 uart_bootloader.py 脚本、我注意到引导加载程序仅发送一次、因此我无法使用 bootloader.py 脚本成功发送 sbl_NULL 两次以使其正常工作。 这不是问题、因为我可以使用终端和 xmodem 使其正常工作。 但是、如果我尝试发送两次预构建的 UART 引导加载程序、然后发送眼图 TOLL 映像、终端上也没有输出。

    此致

      Tom

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

    您好、Thomas、

    SBL_UART 不需要发送两次、该特定引导加载程序中没有用于热复位的代码(您可以在\examples\drivers\boot 下找到引导加载程序的源代码供参考)。

    我已经研究过这一点、由于最新的 AM64 SDK 版本弃用了 RPRC 支持(似乎仅适用于此器件)、此流程似乎不适用于此特定的 SDK 版本。  如果您使用的早期版本如 11.01.00.17(我使用的版本)或版本 11.02.00.24(似乎仍具有 RPRC 支持)、我概述的流程应该有效。 由于它只是用于初始化内核+ DDR 加载固件、因此新版本中没有任何东西在任何方面都至关重要。

    此致、

    Lucas

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

    您好、Lucas:

    使用 SDK 11.01.00.17 时、我能够使该工具在 SK-AM64 上运行、并在电路板上运行(使用我的配置进行编译)。

    再次感谢您的耐心和支持! :-)

    此致

      Tom