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.

TDA4VM: Linux cannot reboot when using SBL

Part Number: TDA4VM


Hi experts,

I'm working on a custom board of TDA4VM and the boot flow is SBL -> SPL(Main R5) -> U-Boot - > Linux. 

Everything works well except that kernel hangs during reboot and I have no idea with it.

Below is the log.

Thanks
  • Hi Jianyu Huo,

    Apologies for delay here.

    Can you please add more details like what SDK version are you using and what are the steps you followed?

    Regards,

    Karan

  • Also, I see issue with the flow you have mentioned: SBL -> SPL(Main R5) -> U-Boot - > Linux. SPL can not run on MAIN R5F.

    Regards,

    Karan

  • I tried to do a "reboot" on SDK7.3 and it works fine for me. See attached logs.

    Although it took a couple of seconds for it to happen.

    Regards,

    Karan

    Logs: reboot_sbl_linux.log

  • Hi Karan,

    I'm using SDK 7.2 and this problem is resolved by local support team with a patch for SBL.

    Thanks.

  • Thanks for the confirmation.

    Please do post the patch here, I tested on SDK7.3 so things might have been fixed there.

    Regards,

    Karan

  • Content is attached.

    From dcb80815bd2fec01845401b4ea42befb4d3c1116 Mon Sep 17 00:00:00 2001
    From: joe <joe.shen@ti.com>
    Date: Fri, 22 Jan 2021 18:16:35 +0800
    Subject: [PATCH] [sbl]it can not bypss DDR PLL after warm reset
    
    Signed-off-by: joe <joe.shen@ti.com>
    ---
     packages/ti/boot/sbl/board/k3/sbl_main.c | 55 ++++++++++++++++++++++--
     1 file changed, 51 insertions(+), 4 deletions(-)
    
    diff --git a/packages/ti/boot/sbl/board/k3/sbl_main.c b/packages/ti/boot/sbl/board/k3/sbl_main.c
    index ebcb272..80faab4 100644
    --- a/packages/ti/boot/sbl/board/k3/sbl_main.c
    +++ b/packages/ti/boot/sbl/board/k3/sbl_main.c
    @@ -46,6 +46,8 @@
     /**********************************************************************
      ************************** Macros ************************************
      **********************************************************************/
    +#define PLL12_LOCKKEY0  0x0068C010
    +#define PLL12_LOCKKEY1  0x0068C014
     
     /**********************************************************************
      ************************** Internal functions ************************
    @@ -510,14 +531,25 @@ int main()
     
         SBL_log(SBL_LOG_MAX, "done.\n");
     #endif
    
     #if defined(SBL_ENABLE_DDR) && defined(SBL_ENABLE_PLL) && defined(SBL_ENABLE_CLOCKS)  && !defined(SBL_SKIP_SYSFW_INIT)
         SBL_log(SBL_LOG_MAX, "Initlialzing DDR ...");
    +
    +    CSL_REG32_WR(PLL12_LOCKKEY0, 0x68EF3490);
    +    CSL_REG32_WR(PLL12_LOCKKEY1, 0xD172BC5A);
    +
    +    if(!(CSL_REG32_RD(PLL12_LOCKKEY0) & 0x01))
    +    {
    +        SBL_log(SBL_LOG_MIN, "DDR PLL unlock failed \n");
    +    }
    +
         SBL_ADD_PROFILE_POINT;
         Board_init(BOARD_INIT_DDR);
         SBL_log(SBL_LOG_MAX, "done.\n");
     #endif
     
    -- 
    2.17.1
    
    

  • Hi Karan,

    I‘m meeting a almost problem. Just my psdk is 7.00 and I boot from emmc.  It also hangs when reboot.

    I want to try the resolution of jianyu. But How do I compile the file what jianyu mention? And which image is the output of this compile?

    Regards

  • Hi,

    You can apply this patch and re-compile the SBL you are using.

    For example if you are using MMCSD SBL then do the below:

    1. Apply the patch on SBL.

    2. Clean the SBL

    make sbl_mmcsd_img_clean

    make sbl_lib_mmcsd_clean

    3. Re-build the SBL

    make sbl_lib_mmcsd

    make sbl_mmcsd_img

    4. Use the new SBL image generated.

    Regards,

    Karan

  • Hi Karan,

    Thanks for your reply. It's my customer board's problem. No related to the sbl.

    Regards

  • Thanks for the confirmation.

    Regards,

    Karan