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.

[参考译文] TDA4VEN-Q1:当 Primary=OSPI、Backup=UART(回退到 UART)时、OSPI 未选为主引导

Guru**** 2874300 points

Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1636603/tda4ven-q1-ospi-not-selected-as-primary-boot-when-primary-ospi-backup-uart-falls-back-to-uart

器件型号: TDA4VEN-Q1
Thread 中讨论的其他器件: UNIFLASH

我们使用基于 TDA4VEN (J722S SoC) 的定制板、并将软件编程到 OSPI 闪存中。

存在许多风险

  • SoC:TDA4VEN
  • SDK:
    • ti-processor-sdk-linux-adas-j722s-evm-11_01_00_03
    • ti-processor-sdk-rtos-j722s-evm-11_01_00_04

编程程序

我们使用 Uniflash 的 UART 引导模式对 OSPI 进行编程。

  • 引导模式 (UART):
    • SW3: 11011100
    • SW4: 00000000
  • 已使用的图像:
    • sbl_uart_uniflash.release.hs_fs.tiimage

以下元件写入 OSPI:

  • flash-phy-tuning-data
  • hsm-demo-firmware-j722s-hs-fs.bin
  • linux.appimage.hs_fs
  • u-boot.img
  • sbl_ospi_hlos.release.hs_fs.tiimage

观察到的行为

  1. 仅在 OSPI 引导模式下引导时:

    • SW3: 11001110
    • SW4: 01000000
      →系统引导成功、来自 OSPI 的 SBL 正常运行。
  2. 当在 Primary = OSPI 下引导时、Backup = UART:

    • SW3: 11010000
    • SW4: 00110000
      →器件不会从 OSPI 引导、而是始终回退 UART 引导模式。

这种行为不仅在我们的定制电路板上、在 J722S EVM 上也可重现。

问题

在我们的生产板上、 将不安装引导模式开关。
我们的预期流程为:

  • 应用 备用 UART 引导以对 OSPI 进行编程
  • 下次上电时、器件应自动从主 OSPI 引导

但是、在当前行为下、当 Primary=OSPI & Backup=UART 时、不选择 OSPI。

  • J722S/TDA4VEN 的这种预期行为是不是?
  • 是否存在任何已知限制、配置要求或建议的解决方案?
  • 我们是否需要为 ROM/SBL 进行任何额外的 OSPI 接头/签名配置、以便在此模式下接受 OSPI 作为有效的主引导源?

请提供任何指导。

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

    嗨、Toshiki、

    您能否分享一下您所参考的主/备份引导模式设置的文档、正如我在 TRM 中看到的、OSPI 和 UART 的主引导模式设置与您共享的设置不同。



    共享了 J722S TRM 的屏幕截图。

    还要检查“primary boot mode config switch [6](主引导模式配置开关[6])是否有任何区别。

    请和我分享说“ OSPI 引导模式、 主引导模式和备用引导“引脚设置的部分。

    仅在 OSPI 引导模式下引导时:
    在主要模式= OSPI 引导时、备份= UART

    此致、

    Anil

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

    尊敬的 Anil:

    这适用于 J722S、对于 OSPI 和 UART 引导模式引脚、我们提到了以下文档。

    J722S MCU+ SDK:EVM 设置
    J722SXH01EVM:[J722S][EVM]ブートモードをeMMCに設定する方法は? — 处理器 フォーラム — 处理器- TI E2Eサポートフォーラム μ V

    根据之前分享的表、“主引导模式配置开关[6]“是否会影响 J722S 的引导模式行为?

    此致、

    Toshiki

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

    嗨、Toshiki、

    我想了解它与之有何不同  

    正常引导设置(如 OSPI 或 UART)

    主引导和次级引导设置。

    应有一些交换机设置、指示处理器从主引导设置和辅助引导设置引导。

    我已经介绍了 TRM 中的主开关和辅助开关设置:这只是正确的。 (我对 B7 位有混淆、但这是“CSEL")“)。

    此致、

    Anil

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

    此外、在切换到“主要和次级“引导模式设置后、您是否已将所需的 tiimage 刷写到 ospi?

    此致、

    Anil

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

    尊敬的  Anil:

    我的理解是、在 ROM 引导期间(如果是) tiimage 存在于主引导源 (OSPI) 中、器件从主 OSPI 引导;否则、它返回到备用引导模式 (UART)。
    这种理解是否可能不正确?

    >此外、在切换到“主要和次要“引导模式设置后、是否已将所需的 tiimage 刷写到 ospi?

    当 OSPI 中未对 tiimage 进行编程时、器件进入 UART 引导模式、此时我进行编程 sbl_ospi_hlos.release.hs_fs.tiimage UART 连接到 OSPI。
    由于 tiimage 随后显示在 OSPI 中、因此我预计下一次重新启动将从 OSPI 引导。

    此致、

    Toshiki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的理解是、在 ROM 引导期间、如果 tiimage 存在于主引导源 (OSPI) 中、器件从主 OSPI 引导;如果不是、则返回到备用引导模式 (UART)。

    是的、正确。

    并且、当您尝试正常 UART 和 OSPI 引导模式时、您需要刷写相同的映像。

    即您尝试从正常引导模式刷新以下内容:  

    • sbl_uart_uniflash.release.hs_fs.tiimage, 
    • flash-phy-tuning-data
    • hsm-demo-firmware-j722s-hs-fs.bin
    • linux.appimage.hs_fs
    • u-boot.img
    • sbl_ospi_hlos.release.hs_fs.tiimage

    so same images we need to flash when trying from primary & secondary boot mode.

    Regards.

    Anil

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

    尊敬的 Anil:

    我们将针对正常引导模式以及主引导和次级引导模式刷写相同的映像。

    此致、

    Toshiki

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

    您能否通过 UART 共享要刷写的图像?

    从软件包构建二进制文件需要一些时间。

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

    尊敬的 Anil:

    我们将共享 UART Uniflash 和 SBL OSPI TI 映像。
    两个图像按原样使用、来自以下路径:

    /ti-processor-sdk-rtos-j722s-evm-11_01_00_04/mcu_plus_sdk_j722s_11_01_00_15/tools/boot/sbl_prebuilt/j722s-evm/

    e2e.ti.com/.../8372.tiimage.zip

    此外、为了便于参考、我们还将共享所用 cfg 文件的内容
    /ti-processor-sdk-rtos-j722s-evm-11_01_00_04/mcu_plus_sdk_j722s_11_01_00_15/tools/boot/uart_uniflash.py
    --flash-writer=/home/kozai/cms_proj/uniflash_img/sbl_uart_uniflash.release.hs_fs.tiimage
    
    # Program the OSPI PHY tuning attack vector
    --operation=flash-phy-tuning-data
    
    # Now send one or more files to flash or flashverify as needed. The order of sending files does not matter
    # Hsm binary
    --file=/home/kozai/ti/ti-processor-sdk-rtos-j722s-evm-11_01_00_04/mcu_plus_sdk_j722s_11_01_00_15/tools/boot/hsm_bin/hsm-demo-firmware-j722s-hs-fs.bin --operation=flash --flash-offset=0x80000
    
    # MulticoreApp
    --file=/home/kozai/cms_proj/linuxAppimageGen_tr/board/j722s-evm/linux.appimage.hs_fs --operation=flash --flash-offset=0xC0000
    
    # Flash U-Boot.img
    --file=/home/kozai/ti/ti-processor-sdk-rtos-j722s-evm-11_01_00_04/mcu_plus_sdk_j722s_11_01_00_15/tools/boot/hlos_prebuilt/j722s-evm/linux/u-boot.img --operation=flash --flash-offset=0x280000
    
    # When sending bootloader make sure to flash at offset 0x0. ROM expects bootloader at offset 0x0
    --file=/home/kozai/cms_proj/sbl_ospi_hlos/j722s-evm/wkup-r5fss0-0_nortos/ti-arm-clang/sbl_ospi_hlos.release.hs_fs.tiimage --operation=flash --flash-offset=0x0


    此致、
    Toshiki

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

    是的、我也遇到了类似的问题(但尝试使用简单的 UART 示例、而不是 linux.appimage)

    附上了 我 用于将 UART 映像刷写到 ospi 的.cfg 文件。
    e2e.ti.com/.../default_5F00_sbl_5F00_null_5F00_nor_5F00_hs_5F00_fs.cfg

    但要确保“主引导模式和次级引导模式“在 EVM 上正常工作、请执行以下操作:

    尝试使用:

       主要 — I2C
       辅助器件 —  UART  

      以确保没有其他开关设置导致此问题。

    -如果遇到同样的问题,请尝试使用任何其他 J7 平台:( J784S4、J721S2 )

    此致、

    Anil

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

    尊敬的 Anil:

    我们尝试将 xSPI 设置为主引导源、将 UART 设置为备份、并确认 OSPI 引导已正确执行。
    在此模式下、为了检查当 OSPI 中未对任何内容进行编程时系统是否返回到备用 UART、我们在 U-Boot 中初始化 OSPI、然后重新启动系统。 结果、我们确认它进入了 UART 引导模式。
    • SW3:  11001110
    • SW4:  01110000
    U-Boot 上的 OSPI 初始化是使用以下命令执行的:=>sf probe和=>sf erase 0 0x4000000

    但是、当我们尝试在备用 UART 引导模式下对器件进行编程时、尽管写入操作似乎正在进行、但它最终会导致错误。 之后、尝试使用 OSPI 进行引导不再执行任何操作。
    当 UART 引导模式配置为备份时、是否无法对 OSPI 执行写入操作?
    此致、
    Toshiki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Toshiki、

    您能尝试使用我刚才提到的 xSPI 引导模式共享的上述映像吗?

    (想尝试使用简单示例,即不使用 Linux 映像)  

    此致、

    Anil

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

    尊敬的 Anil:

    您是否建议我们尝试 Primary: xSPI boot and Backup: UART boot?
    在此配置中、我们在省略 Linux 映像的情况下尝试编程、但仍导致错误。
    这是 UniFlash 运行期间的编程日志。
    kozai@VMUbuntu:~/cms_proj$ ./uart_uniflash_mcucoreSolo.sh 
    
    Parsing config file ...
    Parsing config file ... SUCCESS. Found 3 command(s) !!!
    
    Executing command 1 of 3 ...
    Found flash writer ... sending /home/kozai/cms_proj/uniflash_img/sbl_uart_uniflash.release.hs_fs.tiimage
    Sent flashwriter /home/kozai/cms_proj/uniflash_img/sbl_uart_uniflash.release.hs_fs.tiimage of size 329295 bytes in 33.24s.
    
    Executing command 2 of 3 ...
    Command arguments : --operation=flash-phy-tuning-data
    Sent flash phy tuning data in 1.63s.                                                                                                                                       
    [STATUS] SUCCESS !!!
    
    Executing command 3 of 3 ...
    Command arguments : --file=/home/kozai/cms_proj/mcu_core/j722s-evm/mcu-r5fss0-0_freertos/ti-arm-clang/mcu_core.release.appimage.hs_fs --operation=flash --flash-offset=0xC0000
    Sent /home/kozai/cms_proj/mcu_core/j722s-evm/mcu-r5fss0-0_freertos/ti-arm-clang/mcu_core.release.appimage.hs_fs of size 1091070 bytes in 108.4s.                           
    [STATUS] ERROR: Flash verify failed !!!
    
    All commands from config file are executed !!!
    

    使用 Primary:UART 进行编程时、写入操作成功、但启动时不会输出日志。
    此致、
    Toshiki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否建议我们试用主存储器:xSPI 引导和备份:UART 引导?

    是的、Toshiki、

    您能否从您的角度尝试以下内容、如果仍面临问题、我们将致电进行讨论。

    尝试使用 xSPI 引导模式设置 (Primary = ospi & Backup = UART)

    • SW3:  11001110
    • SW4:  01110000

    from above boot setting, try flashing simple uart example binary from the following .cfg file. (No linux image/No Uniflash tool is required)

    Attached the steps to run the .cfg file

    附上了用于刷写映像的.cfg 文件。  

    e2e.ti.com/.../default_5F00_sbl_5F00_ospi_5F00_hlos_5F00_hs_5F00_fs.cfg

    Regards,

    Anil

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

    尊敬的 Anil:

    使用 Primary:UART 进行编程后、引导时没有日志的问题已得到解决。
    原因是数据大小过大、并溢出到已偏移的地址。

    但是、当 Primary = OSPI 且 Backup = UART 时编程导致错误的问题仍无法解决。

    抱歉、我们无法访问并接收 default_sbl_ospi_hlos_hs_fs.cfg。

    此致、

    Toshiki

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

    运行.cfg 文件的步骤:

    -将电路板设置为 UART 引导模式(主要= OSPI 和备份= UART ,通过从 ospi 擦除旧映像)

    -运行“default_sbl_ospi_hlos_hs_fs.cfg"从“从以下目录(如上图所示)

       cd{SDK_INSTALL_PATH}/tools/boot

    在 Linux 中:

    python -p uart_uniflash.py -p /dev/ttyUSB --cfg=default_sbl_hlos_hs_fs.cfg

    从窗口:

    python -p uart_uniflash.py -p COM* --cfg=default_sbl_hlos_hs_fs.cfg

    (应根据“CCCCCCCC..."选择“选择 ttyUSB*或 COM* 终端仿真器上的字符)。

    成功刷写映像后、我们将从 OSPI 获取输出。  

    (首先尝试正常引导模式,然后尝试主要和备用引导模式。)

    此致、

    Anil

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

    尊敬的 Anil:

    我试图执行这项工作,但我被告知,这是default_sbl_hlos_hs_fs.cfg不能做到的,因为不存在。
    这就是为什么我假设您共享了 CFG 文件的原因。

    另外、请注意、此环境没有python、因此我使用的python3是。

    kozai@VMUbuntu:~/ti/ti-processor-sdk-rtos-j722s-evm-11_01_00_04/mcu_plus_sdk_j722s_11_01_00_15/tools/boot$ python3 uart_uniflash.py -p /dev/ttyUSB2 --cfg=default_sbl_hlos_hs_fs.cfg
    [ERROR] Configuration file [default_sbl_hlos_hs_fs.cfg] not found !!!

    此致、

    Toshiki

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

    嗨、Toshiki、

    很抱歉晚才回复。

    您是否可以使用以下命令来刷写 SBL。

    python3 uart_uniflash.py -p /dev/ttyUSB2 --cfg=sbl_prebuilt/j722s-evm/default_sbl_ospi_hlos_hs_fs.cfg

    此致、

    Anil

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

    是的、Toshiki、

    我能够在主引导模式和辅助引导模式下运行上述命令!!

    我尝试了以下操作:  

    i.运行 以下 命令来刷写任何示例(我以简单 UART 示例为例)、并保留为 (Primary = ospi & Backup = UART)

    • SW3:  11001110
    • SW4:  01110000

    python3 uart_uniflash.py -p /dev/ttyUSB2 --cfg=sbl_prebuilt/j722s-evm/default_sbl_ospi_hlos_hs_fs.cfg

    II 。  但在运行上述命令时、请确保断开/dev/ttyUSB2(我们在其中观察 CCCCC 字符的 COM 端口)

    ii.我们将能够在 UART0 端口上看到控制台日志。

    正在启动 HSM 内核...
    调用 Sciclient_procBootGetProcessorState、ProcID 0x80...
    正在调用 Sciclient_procBootRequestProcessor、ProcID 0x80...
    正在为 ProcID 0x80...设置暂停...
    正在调用 Sciclient_procBootAuthAndStart ...
    错误:app_loadAndAuthHsmBinary:268:Sciclient_procBootAuthAndStart...失败
    正在清除 ProcID 0x80...的暂停...
    正在调用 Sciclient_procBootReleaseProcessor、ProcID 0x80...
    HSM 内核已成功启动
    一些测试失败!!
    断言:0.104395s:../main.c:main:350:0 失败!!!

    尽管它失败、但我们可以说主引导模式和次级引导模式正常工作。

    为此,我尝试了擦除整个 OSPI 闪存,然后我就能在 ttyUSB2 上得到 CCCCC 字符,这意味着作为主引导模式的 UART 正在工作,  

    如果我再次尝试刷写 OSPI、则会获得上述日志。 这表示主引导和次级引导正在工作。

    此致、

    Anil

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

    尊敬的 Anil:

    非常感谢。
    很抱歉、‑延长一周的假期、我的确认和结果回复将被延迟。 请耐心等待我一会儿。

    此致、

    Toshiki