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.

Linux/DRA75: Load IPU2 firmware and kernel crash

Part Number: DRA75


Tool/software: Linux

Hi TI:

I have downloaded vision sdk and build IPU2 firmware with EVE

And copy this firmware into filesystem, path /lib/firmware and boot, kernel crash after IPU2 power up

My platform is DRA75 J6 EX, 512MB ram, dts is include dra7_evm.dts

BSP is PROCESSOR_SDK_03_02_00_03

I try to modify memory reserved section to fit IPU2 requirement, as below:

 reserved_mem: reserved-memory {
  #address-cells = <2>;
  #size-cells = <2>;
  ranges;

  ipu2_cma_pool: ipu2_cma@99000000 {
   compatible = "shared-dma-pool";
   reg = <0x0 0x99000000 0x0 0x5000000>;
   reusable;
   status = "okay";
  };
 };

but this can't fix problem

I even build only IPU2(no EVE), but problem still exist

Any suggestion?

Thank you

Kenny

  • Kenny
    The default VSDK Linux memory map is 1GB, when you built IPU2 with EVE, EVE cores are placed outside 512MB, this will create memory corruption.
    you may need to modify VSDK memory map to 512MB, There is a patch in VisionSDK_UserGuide_MemoryMap.pdf to modify for 512MB

    Regards, Shiju
  • Hi Shiju:
    Thank you so much.
    I will find out this patch and test
    But before this, i also have done another test, change settings as below:
    PROC_IPU1_0_INCLUDE=no
    PROC_IPU1_1_INCLUDE=no
    PROC_IPU2_INCLUDE=yes
    PROC_A15_0_INCLUDE=yes
    PROC_DSP1_INCLUDE=no
    PROC_DSP2_INCLUDE=no
    PROC_EVE1_INCLUDE=no
    PROC_EVE2_INCLUDE=no
    PROC_EVE3_INCLUDE=no
    PROC_EVE4_INCLUDE=no

    and build, replace IPU2 firmware again, and kernel crash again
    Is this has the same reason with memory allocation?? (1G -> 512MB)
    Thanks

    Kenny
  • Kenny

    If you build VSDK Linux with above mentioned config and test using binaries only built from VSDK, it should work, no issues as memory map of A15 and IPU2 are already taken care and no overlaps etc.

    But when you build VSDK and copy the IPU2 binary from VSDK and use with some other A15 binary (built from some other code base) can create issues.  The crave out sections for IPU2 may not match with another A15 memory map, again the today memory requirements of VSDK and other build may not match etc.

    Can you please explain why do you copy IPU2 firmware from VSDK and using with an A15 binary which is not built from VSDK framework?

    regards, Shiju

  • Hi Shiju:
    Thank you for reply
    We develop some interface test programs by using PROCESSOR SDK_03_02_00_03
    But customer ask us to enable EVE
    After research, we found this is a non supported function in PROCESSOR SDK
    So we download new bsp called vision sdk
    My idea is build new IPU firmware which can bring up EVE by using vision sdk, and copy this firmware into filesystem to replace original one
    And the filesystem is build from PROCESSOR SDK
    We don't have plan to migrate bsp from PROCESSOR SDK to vision sdk because we do many modification in PROCESSOR SDK
    So I think the easier way is to replace IPU firmware
    But I forget memory allocation is different between these two BSP

    Actually today i have already done the patch(1GB->512MB) into vision sdk you mentioned, and i also do the same memory allocation in the PROCESSOR SDK, after replace IPU firmware, kernel can work and no crash again

    But now i have a new problem, after i enable two EVE cores, the build have errors
    The patch is disable all EVE cores originally
    Is this 512MB mem patch can't support EVE?
    What build step to do is correct after i do the patch?
    Thanks

    Kenny
  • Kenny
    In 512MB patch EVE cores are disabled, you need to enable EVE cores in /apps/configs/tda2xx_evm_linux_all/cfg.mk
    b/apps/configs/tda2xx_evm_linux_all/cfg.mk
    Also modify apps/build/tda2xx/mem_segment_definition_linux.xs file to allocate enough memory for EVE vecs/data/code sections. reduce some other sections and add to EVE cores. You need to modify links_fw/include/link_api/system_vring_config.h and /arch/arm/boot/dts/dra7-evm-infoadas.dts if any section start address changes

    regards, Shiju
  • Hi Shiju:
    Do i need to set IPUMM_INCLUDE=yes ?

    Kenny
  • Hi Kenny
    You do not need to set IPUMM_INCLUDE=yes if no video playback feature is required from A15 Linux

    regards, Shiju
  • Hi Shiju:

    Understood.

    I use omapconf tool to check my core status after replace new IPU2 firmware, show as below

    It seems EVE still not enable, right?

    Who will set clk for EVE? Is IPU2 ?

    Kenny

  • Hi Shiju:

    Do i need reserve the same SR0, SR1, cmem region in the PSDKLA ?

    I only reserve IPU2 & EVE memory section now

    Thank you

    Kenny

  • Kenny
    IPU2 does the CLK, PRCM of EVE cores, so Linux omapconf tool will not show EVE core related details
    yes, at the minimum you need reserve memory for
    1. IPU2 code/data
    2. EVE cores Vec/Code/data
    3. SR1
    4. SR0

    regards, Shiju
  • Hi Shiju:
    Thanks, i will try to set these reserved mem area
    If i can't use omapconf, how do I know the status of EVE on my platform?
    Because i want to verify EVE status is running or not
    Thanks again

    Kenny
  • Hi Shiju:
    In the vision sdk document, VisionSDK_Linux_DevelopmentGuide.pdf
    There is a section 9. to describe how EVE can build as a part of IPU firmware
    I found it is "IPU1" load EVE, not IPU2
    I am a little confused, which one can bring up EVE?

    Kenny