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.

TDA2SX: Error when loading EVE program in CCS

Part Number: TDA2SX

Hi sirs,

When I load program to EVE in CCS, it was failed:

The error message is:

ARP32_EVE_1: Trouble Reading Memory Block at 0xb5000000 on Page 1 of Length 0x4: (Error -1065 @ 0xB5000000) Unable to access device memory. Verify that the memory address is in valid memory. If error persists, confirm configuration, power-cycle board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 9.4.0.00129) 
ARP32_EVE_1: File Loader: Verification failed: Target failed to read 0xB5000000@Data
ARP32_EVE_1: GEL: File: C:\Tim_TestEMIFX2OnEVM\PROCESSOR_SDK_VISION_03_05_00_00\vision_sdk\binaries\apps\tda2xx_evm_bios_all\vision_sdk\bin\tda2xx-evm\vision_sdk_arp32_1_release.xearp32F: Load failed.

My GEL file setting is:

VISION_SDK_CONFIG -> 0

EVE_SW_CONFIG -> 1

Could you please suggest how to solve this problem?

Thank you,

JM

  • Hi JM,

       Can you make sure you have closed all the open memory, variable, expression windows before connecting to the ARP32 core?


    Regards,

    Anshu

  • Hi Anshu,

      I closed all the windows you mentioned and reloaded the program, but the error still occurs.

    In addition, I tried to modify the TDA2xx_multicore_reset.gel file and add the following settings:

    SetupEveMmuEntry(cpu_num, mmu_num, 15, 0xb5000000, 0xb5000000, EVE_MMU_PAGESIZE_16M);
    SetupEveMmuEntry(cpu_num, mmu_num, 16, 0xb6000000, 0xb6000000, EVE_MMU_PAGESIZE_16M);
    SetupEveMmuEntry(cpu_num, mmu_num, 17, 0xb7000000, 0xb7000000, EVE_MMU_PAGESIZE_16M);
    SetupEveMmuEntry(cpu_num, mmu_num, 18, 0xb8000000, 0xb8000000, EVE_MMU_PAGESIZE_16M);

    EVE_MMU0_Config(uint32_t cpu_num)
    {
        uint32_t mmu_num = 0;
        uint32_t vec_base = 0;
    
        /* Reset the MMU */
        GEL_TextOut("DEBUG: Resetting EVE MMU ... \n",,,,,,);
        WR_MEM_32(EVE_MMU_SYSCONFIG, 2);
    
        /* Wait until MMU reset finished */
        while((RD_MEM_32(EVE_MMU_SYSSTATUS) & 1) == 0);
    
        if(VISION_SDK_CONFIG == 1)
        {
            if(cpu_num == 1)
            {
                vec_base = 0x80000000;
            }
            if(cpu_num == 2)
            {
                vec_base = 0x81000000;
            }
            if(cpu_num == 3)
            {
                vec_base = 0x82000000;
            }
            if(cpu_num == 4)
            {
                vec_base = 0x83000000;
            }
            add_while1_at_resetVector(vec_base);
            SetupEveMmuEntry(cpu_num, mmu_num,  1, 0x00000000,   vec_base, EVE_MMU_PAGESIZE_4K);
            SetupEveMmuEntry(cpu_num, mmu_num,  2,   vec_base,   vec_base, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  3, 0x40000000, 0x40000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  4, 0x48000000, 0x48000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  5, 0x42000000, 0x42000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  6, 0x4A000000, 0x4A000000, EVE_MMU_PAGESIZE_16M);
        }
        else
        {
            if(EVE_SW_CONFIG == 1)
            {
                vec_base = 0x80000000;
            }
            else
            {
                vec_base = 0x40500000;
            }
    
            /* Add while(1) loop at vector base address to avoid random code execution */
            add_while1_at_resetVector(vec_base);
            SetupEveMmuEntry(cpu_num, mmu_num,  1, 0x00000000,   vec_base, EVE_MMU_PAGESIZE_4K);
    
            /* Enable access to entire DDR */
            SetupEveMmuEntry(cpu_num, mmu_num,  2, 0x80000000, 0x80000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  3, 0x81000000, 0x81000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  4, 0x82000000, 0x82000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  5, 0x83000000, 0x83000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  6, 0x84000000, 0x84000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  7, 0x85000000, 0x85000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  8, 0x86000000, 0x86000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num,  9, 0x87000000, 0x87000000, EVE_MMU_PAGESIZE_16M);
    
            /* Enable access to some of configuration space and OCMC memories */
            SetupEveMmuEntry(cpu_num, mmu_num, 10, 0x40000000, 0x40000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num, 11, 0x4A000000, 0x4A000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num, 12, 0x45000000, 0x45000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num, 13, 0x48000000, 0x48000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num, 14, 0x42000000, 0x42000000, EVE_MMU_PAGESIZE_16M);
    		
    		/* test here */
            SetupEveMmuEntry(cpu_num, mmu_num, 15, 0xb5000000, 0xb5000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num, 16, 0xb6000000, 0xb6000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num, 17, 0xb7000000, 0xb7000000, EVE_MMU_PAGESIZE_16M);
            SetupEveMmuEntry(cpu_num, mmu_num, 18, 0xb8000000, 0xb8000000, EVE_MMU_PAGESIZE_16M);		
        }
    
        /* Enable MMU */
        WR_MEM_32(EVE_MMU_CNTL, ((RD_MEM_32(EVE_MMU_CNTL)) & 0xFFFFFFFD) | 0x2);
    
        /********************/
        if(EVE_SW_CONFIG == 1)
        {
            GEL_TextOut("DEBUG: EVE%d MMU0 configured as per EVE_SW_LIBRARY requirements!!!!\n",,,,,, cpu_num);
        }
        if(VISION_SDK_CONFIG == 1)
        {
            GEL_TextOut("DEBUG: EVE%d MMU0 configured as per VisionSDK requirements!!!!\n",,,,,, cpu_num);
        }
    }

    Then the error message no longer occurs. But I’m not sure if it is right, the system isn't working.

    Regards,

    JM

  • Hi Anshu,

    Try to add some setting into TDA2xx_multicore_reset.gel

    SetupEveMmuEntry(cpu_num, mmu_num, 15, 0xb5000000, 0xb5000000, EVE_MMU_PAGESIZE_16M);

    SetupEveMmuEntry(cpu_num, mmu_num, 16, 0xb6000000, 0xb6000000, EVE_MMU_PAGESIZE_16M);

    SetupEveMmuEntry(cpu_num, mmu_num, 17, 0xb7000000, 0xb7000000, EVE_MMU_PAGESIZE_16M);

    SetupEveMmuEntry(cpu_num, mmu_num, 18, 0xb8000000, 0xb8000000, EVE_MMU_PAGESIZE_16M);

    and run Scripts->TDA2xx MULTICORE Initialization->TDA2xx_MULTICORE_EnableAllCores

    It can solve the issue "Trouble Reading Memory Block at 0xb5000000 on Page 1 of Length 0x4: (Error -1065 @ 0xB5000000) Unable to access device memory."

    But there are no any response after Load Program.

    Could you give some suggestions?

    Thanks

    Daniel

  • Hi Daniel,

         Before loading the program can you do CPU reset on EVE core and then try?

    Regards,

    Anshu

  • Hi Anshu,

        We did CPU reset on EVE core and other cores before loading the program.

    Regards,

    JM

  • Hi JM,

          Can you also confirm whether you are able to run any other application which comes as part of EVE SW release as it is (i.e. without any changes from your side)?

    Regards,

    Anshu

  • Hi Anshu,

        I used TDA2x EVM to run the application you mentioned, and the system cannot work. What steps need to be followed?

    Regards,

    JM

  • Hi Anshu

    Could you provide sop or any suggestions for this issue?

    Thanks

    Daniel

  • Hi Daniel,

        Can you confirm if you followed all the below steps : 

    TDA2X :

    1. Goto /ccs_base/emulation/TDA2X and set EVE_SW_CONFIG macro to 1 in TDA2xx_multicore_reset.gel file

    2. In CCS, launch the Target Configuration for TDA2X.

    3. Select the 'CortexA15_0' Target -> Do a 'System Reset' -> Select 'Connect Target'.

    4. Select the 'CortexA15_0. Goto ‘Scripts’ menu -> ‘TDA2XX MULTICORE Initialization’ -> EVExSSClkEnable_API

    5. Select 'ARP32_EVE_x' Target -> Do a 'Connect Target' -> Do a 'CPU Reset'.

    6. Any binary can now be loaded to ARP32_EVE_x and executed.

    7. To execute EVE starterware mailbox example – additional steps will be required for interrupt mapping – please refer starter ware documentation for the details 


    Regards,

    Anshu

  • Hi Anshu,

    JM follow the steps but it is still not available.

    He can not see any response after Load Program.

    Is there any response that you follow the steps?

    Thanks

    Daniel