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.

[参考译文] TDA4VH-Q1:如何在 SBL 中使用 Hyperflash

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1517311/tda4vh-q1-how-to-use-the-hyperflash-in-the-sbl

器件型号:TDA4VH-Q1
Thread 中讨论的其他器件:TDA4VHTDA4VM

工具/软件:

到目前为止、我们仅使用 hyperflash 作为 TDA4VH (j784s4)的 MCU 岛的引导介质、但当我们仅使用 sbl_hyperflash.c int 主 PDK 进行集成时、intization 函数中有 dataAbortion、就像所示  

sbl_hyperflashInit 功能,我们不知道为什么,你有任何可用的演示用例针对这种情况.
 
由于我们只是停留在 hyperflash 初始阶段从 hyperflash 加载 sysfw bin 文件,我们的 hyperflash 是 Cyclepress S26KS128。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Zhen:

    Unknown 说:
    ]到目前为止、我们只使用 Hyperflash 作为 TDA4VH MCU 岛(j784s4)的引导介质、但当我们仅使用 主 PDK 的 sbl_dhyperflash.c 作为集成时、intilization 函数中有 dataAbortion、就像
    一样  

    TDA4VH 器件不支持 Hyperflash。

    [报价 userid="653806" url="~/support/processors-group/processors/f/processors-forum/1517311/tda4vh-q1-how-to-use-the-hyperflash-in-the-sbl
    sbl_hyperflashInit 功能,我们不知道为什么,你有任何可用的演示用例针对这种情况.
    [/报价]


    TDA4VM 器件支持 HyperFlash、您能否请参阅 J721E SDK 中随附的 CSL HyperBus 示例。

    e2e.ti.com/.../hyperbus.zip

    此致、

    Karthik  

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

    您好 

    感谢您的快速答复。

    对于 hyperflash 示例、有一些关于附件的问题。

    1.在 Stuct Board_Pinmux Config_t 中没有像 fsscfg 这样的成员,如下图所示:

     项目是否存在任何不匹配的地方?

    2.我想在加载系统固件或 CM4中的 tifs.bin 之前,您不能执行 Board_Init。 因为我们的系统固件已使用 Lauterbach 工具刷写到外部超闪存中。

    3.我们首先需要在 Lauterbach 刷写后在 SBL 初始阶段加载系统固件、然后您可以使用 sciclient 相关功能来执行 Board_Init、如下所示:

    所以在从 hyperflash 加载系统固件之前、我们需要在不使用 scient 相关函数的情况下执行 OSPI 初始操作、此后我们可以使用 Board_init、我是不是常设的吗?

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

     尊敬的 Zhen:

    1.  如下图所示、Stuct Board_Pinmux Config_t 中没有与 fsscfg 类似的成员:

    我分享的示例特定于 J721e 平台、您提到的结构成员会有变化。 作为参考、我在这里添加了 Board_Pinmux 配置结构。 为了进行进一步更改和移植、我建议下载 J721E SDK

     71 /* Structure to set the board pinmux configuration */
     72 typedef struct Board_PinmuxConfig_s
     73 {
     74     /**
     75      * Pinmux auto config control
     76      *  BOARD_PINMUX_CUSTOM(0) - Pinmux is based on other add-on card
     77      *  settings of the pinmux config.
     78      *  BOARD_PINMUX_AUTO(1) - Pinmux is based on board detection by
     79      *  reading the board ID info from EEPROM.
     80      *  When auto mode is enabled, all other below fields of
     81      *  pinmux config will be ignored.
     82      */
     83     uint8_t autoCfg;
     84 
     85     /**
     86      * Pinmux config control for GESI/Infotainment expansion connector
     87      *  BOARD_PINMUX_GESI_ICSSG(0) - GESI Board (ICSSG RGMII)
     88      *  BOARD_PINMUX_GESI_CPSW(1) - GESI Board (CPSW9G RGMII)
     89      *  BOARD_PINMUX_INFOTAINMENT(2) - Infotainment Board
     90      */
     91     uint8_t gesiExp;
     92 
     93     /**
     94      * Pinmux config control for CSI expansion connector
     95      *  BOARD_PINMUX_CSI_FUSION(0) - Fusion-2 board
     96      *  BOARD_PINMUX_CSI_MV(1) - MV capture board
     97      *  BOARD_PINMUX_CSI_LI(2) - LI capture board
     98      */
     99     uint8_t csiExp;
    100 
    101     /**
    102      * Pinmux config control for ENET expansion connector
    103      *  BOARD_PINMUX_ENET_QSGMII(0) - ENET QSGMII board
    104      */
    105      uint8_t enetExp;
    106 
    107     /**
    108      * Pinmux config control for OSPI/Hyperflash mux
    109      *  BOARD_PINMUX_FSS_OSPI(0) - OSPI
    110      *  BOARD_PINMUX_FSS_HPB (1) - Hyperbus
    111      */
    112      uint8_t fssCfg;
    113 
    114 } Board_PinmuxConfig_t;
    

    2. 我想在加载系统固件或 CM4中的 tifs.bin 之前、您无法执行 Board_Init。 因为我们的系统固件已使用 Lauterbach 工具刷写到外部 Hyperflash 中。

    是的、不能在 tifs.bin 之前调用 board_init。 J721E 器件引导流程与 J784S4不同。 在移植示例期间、我们还必须处理引导流程更改。

    所以我们需要在不使用 scient 相关函数的情况下执行 OSPI 初始操作、然后再从 hyperflash 加载系统固件、之后我们可以使用 Board_init、我的永久权利是吗?

    否、首先必须从 Hyperflash 加载系统固件、然后调用 Board_init。

    您能否解释一下 OSPI 初始操作?  

    此致、

    Karthik

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

    OSPI 初始操作是指超闪存初始化。 因此、首先需要确保在不使用 sciclient 函数的情况下进行超闪存初始化、然后从超闪存中读取 tifs.bin 并加载到 CM4中、最后可以使用 board_init 函数。

    这就是为什么我说 J721e 的超闪存初始化示例也 不是 corrret。 因为在使用 board_init 函数之前、我没有看到任何加载 tifs.bin 等系统固件的过程。

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

     尊敬的 Zhen:

    感谢您的澄清。 您共享的器件型号需要与"hyperbus"连接。 我相信你也做过同样的事情。 如果它与 Hyperbus 连接、则不需要 OSPI 初始化。 但是、如果您想知道 OSPI 初始化将在 SBL OSPI 引导期间何时完成、其 步骤如下、初始化将在 SciClient_init ()之后进行。

    sbl_main.c - > SBL_BootImage () - >   sbl_slave_core_boot.c - > SBL_OSPIBootImage () ->  sbl_ospi.c - > sbl_OSPI_Initialize ()  

    在 Hyperflash 初始化的情况下、它在 SciClient_init ()内部发生、如下所示。  

    sbl_main.c - > SBL_SciClientInit ()->  sbl_sci_client.c - > SBL_ReadSysfwImage ()->  sbl_hyperflash.c  -> sbl_hyperflashInit()

    因此、首先您需要确保在不使用 sciclient 函数的情况下进行 hyperflash 初始化、然后从 hyperflash 读取 tifs.bin 并加载到 CM4中、最后您可以使用 board_init 函数。

    该语句适用于 J721e 平台。 但这未在 J784s4上验证。  

    是否可以在 SciClient 初始化后尝试初始化 Hyperflash?

    此致、

    Karthik

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

    您好 

    您可以在 SDK html 中看到以下说明:

    问题是 这样 在从外部 Hyperflash 加载系统固件之前、不能使用 SBL_SciClientInit。

    这意味着你需要首先手动初始化 hyperflash 驱动程序、第二次 从外部 hyperflash 获取系统固件与此驱动程序,最后调用 sbl_hyperflashInit()将是可以的。

    因为它会在  sbl_hyperflashInit()中调用 Board_init;

    但初始超闪存过程是获取系统固件的前提条件,我认为这是缺失的。

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

    尊敬的 Zhen:

    问题是 这样 在从外部 Hyperflash 加载系统固件之前、不能使用 SBL_SciClientInit。 [/报价]

    您所提到的文档是关于  Sciclient_init ()的、它在中调用  SBL_SciClientInit。  

    请参阅文件 sbl_sci_client.c

    就像您提到的  sbl_hyperflashInit()  在  Sciclient_init()之前调用。

    但初始超闪存过程是获取系统固件的前提条件、我认为该过程缺失。

    是的、这是正确的。 如果您请遵循 SBL_SciClientInit() 函数在 sbl_sci_client.c 文件中、可以观察到 sbl_hyperflashInit()是在加载系统固件之前调用的。 加载固件后、 将调用 Sciclient_init ()。

    希望这能回答您的问题。

    此致、

    Karthik

    [/quote]