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.

TDA2EVM5777: the difference between xearp32F and out file

Part Number: TDA2EVM5777

Hi

     I am try to use the "MulticoreImageGen_tda2xx.bat" to generate the Appimage with A15 and EVE.

     I have tested the "SBL multicore mailbox example", and the result is good.

     From the "MulticoreImageGen_tda2xx.bat", i found that the A15's bin file "sbl_multicore_mbx_a15_0_release.xa15fg" and EVE's bin file "sbl_multicore_mbx_arp32_1_release.xearp32F" have been merged into the final AppImage file.

     Now, i am try to generate the AppImage with "sbl_multicore_mbx_a15_0_release.xa15fg" and a EVE standalone app "test_eveMedianFilter.eve.out" (in the "eve_sw_01_17_00_00\apps\median_filter\test\elf_out folder" ). My question is that could i combine the A15' xa15fg file with EVE out file with the "MulticoreImageGen_tda2xx.bat" directly? What's the difference between EVE xearp32F and out binaray file?

     By the way, what's the difference between A15 (xa15fg and out)? DSP (xe66 and out)? M4(xem4 and out)?

Thanks

xuanbo

  • Hi,

    There is no difference between .out and .xearp32F file except for the name. The build system uses different extensions depending on the core while creating an executable. This is needed to distinguish between binaries for different cores present in same location. You can modify multicore_image_gen.bat file to use .out directly.

    Regards,
    Rishabh
  • Hi Rishabh

    Thank you for your reply, i will test the "test_eveMedianFilter.eve.out" with "MulticoreImageGen_tda2xx.bat".

    Thanks
    xuanbo
  • Hi Rishabh

    I have another problem when test "test_eveMedianFilter.eve.out" on TDA2X EVM.
    First, I generated the AppImage with "sbl_multicore_mbx_a15_0_release.xa15fg" and "test_eveMedianFilter.eve.out" by "MulticoreImageGen_tda2xx.bat";
    Then, I run the AppImage on the TDA2x EVM, but only log from A15 is printed, no logs from "test_eveMedianFilter.eve.out".
    I checked the src file "median_filter_tb.c" (eve_sw_01_17_00_00\apps\median_filter\test\src\), and found that it use TEST_PRINTF() function from "eve_profile.c" (eve_sw_01_17_00_00\common) to print. And the definition of TEST_PRINTF() is as follows:

    /* Used only for printfs in standalone test files */
    void TEST_PRINTF(const char * text, ...)
    {
    #ifndef EN_ZEBU_TEST
    #if TEST_PRINTF_TYPE == TEST_PRINTF_TYPE_DUMMY
    #else
    va_list argptr;
    va_start(argptr, text);
    vfprintf(stdout, text, argptr);
    va_end(argptr);
    fflush(stdout);
    #endif
    #else
    va_list argptr;
    va_start(argptr, text);
    vuart1_write_formated(text, argptr);
    va_end(argptr);
    #endif
    }

    My question is that does "vuart1_write_formated" function above can be used to send logs to UART by EVE? I have changed the eve_sw_01_17_00_00\makerules\makerules_eve.mk to uncomment the "CFLAGS += -DEN_ZEBU_TEST" to compile the vuart1_write_formated part of TEST_PRINTF function. But, still nothing print to UART from EVE yet.

    So, If i want to see the logs from the "test_eveMedianFilter.eve.out" on the UART, what i should do?

    Thanks
    xuanbo
  • Hi,

    You can use CSL UART Utils library for having UART prints from EVE. The API you have shared sends prints to CIO Console (CCS has one).

    It is always better to have implementation in such a way that one core only uses UART prints as both binaries run independently and UART data corruption might occur with both cores sending UART prints. Otherwise there should be some kind of inter processor communication where only core pumps UART data at a time.

    Regards,
    Rishabh
  • Actually, when i uncomment the "CFLAGS += -DEN_ZEBU_TEST" to compile the eve_profile.c, i got a error:
    .\..\..\..\common\eve_profile.c(128) : error C3861: “vuart1_write_formated”:Can not find the identifier
    So, there is no real definition of vuart1_write_formated function in the Vision SDK?
  • Hi Xuanbo,

    Zebu is pre silicon development platform.
    This might be some old code used at the time of pre silicon development.

    Regards,
    Rishabh
  • Also Vision SDK uses Vps_printf for UART prints.

    Regards,
    Rishabh
  • Hi Rishabh

    I modified the src file "median_filter_tb.c" (eve_sw_01_17_00_00\apps\median_filter\test\src) to import the CSL UART Utils library (pdk_01_08_00_16\packages\ti\csl\example\utils\uart_console), then i can use UARTConfigPuts function in the "median_filter_tb" main function.
    And I generated a AppImage with "sbl_multicore_mbx_a15_0_release.xa15fg" and a EVE standalone app "test_eveMedianFilter.eve.out" (in the "eve_sw_01_17_00_00\apps\median_filter\test\elf_out folder" ).
    But when i run this AppImage, i can't get any log output from EVE on UART. And the "test_eveMedianFilter.eve.out" seems do not work too, as the output image do not created in the testvecs\output folder.
    I think the use of UARTConfigPuts function is OK, because i have tested it in the "sbl_multicore_mbx_arp32_1_release.xearp32F". So may be the "test_eveMedianFilter.eve.out" did not run at all?
    I have debugged this problem for a long time, please help me out.

    Thanks
    xuanbo

  • Hi Xuanbo,

    Can you put a while loop in the EVE main and connect to EVE using CCS to check if the EVE binary is getting loaded correctly.
    Most likely EVE binary will be getting loaded and you need to do a single step and check what exactly is happening.

    Regards,
    Rishabh
  • Hi Rishabh

         I do not have the JTAG connector right now, so i can not use the CCS to debug. But i have found that it may be not the problem of source file, it should be the compile environment problem (makefile problem). Let me explain this in detail:

        1 Firstly, do you remember the "SBL multicore mailbox EVE UART output issues" thread ( https://e2e.ti.com/support/arm/automotive_processors/f/1021/t/658380?tisearch=e2e-sitesearch&keymatch=%20user%3A340760

    int main(void) {

    padConfig_prcmEnable();

    UARTConfigPuts(uartBaseAddr,"\r\nMulticore Mailbox app - MPU-Core0 Master core \r\n ", -1);

    while (1) {}

    return 0;

    }

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    "sbl_mbx_eve1.c":

    void main(void) {

    //delay about 2 second
    uint32_t m = 0x05000000U;
    uint32_t n = 0x0F000000U;
    uint32_t i = 0;
    uint32_t j = 0;
    for (; i < m; ++i)
    {
    for (; j < n; ++j)
    {
    }
    }

    UARTConfigPuts(uartBaseAddr,"\r\nEVE1 main UARTConfigPuts 0\r\n ", -1);

    while (1) ;
    }

    The above code is worked, and after generated the AppImage, i can see the log from both A15 and EVE on the UART console:

     Multicore Mailbox app - MPU-Core0 Master core

    EVE1 main UARTConfigPuts 0

    2 Then, i copied the "sbl_mbx_eve1.c": above to the "eve_sw_01_17_00_00\apps\median_filter\test\s" folder. And modified the "eve_sw_01_17_00_00\apps\median_filter\test\makefile" as follows:

    EVEALGORITHMS = "../../../apps"


    ALGINCPATH= $(EVEALGORITHMS)/median_filter/algo/inc
    ALGLIBPATH= $(EVEALGORITHMS)/median_filter/algo/lib/$(TARGET_BUILD)
    ##############################################################


    ##############################################################
    SUBDIRS= ./inc
    # SUBDIRS+= ./src
    SUBDIRS+= ./s
    SUBDIRS+= ../../../common

    CFILES= $(foreach dir,$(SUBDIRS),$(wildcard $(dir)/*.c))
    CFILES+= $(foreach dir,$(SUBDIRS),$(wildcard $(dir)/*.k))
    # CFILES+= $(foreach dir,$(SUBDIRS),$(wildcard $(dir)/*.asm))

    HFILES = $(foreach dir,$(SUBDIRS),$(wildcard $(dir)/*.h))

    OUTFILE=./elf_out/test_eveMedianFilter.eve.out

    ifndef EVE_SW_ROOT
    $(error You must define EVE_SW_ROOT!)
    endif
    include $(EVE_SW_ROOT)/makerules/makerules_eve.mk

    #used inside makerules, but okay to define it afterwards
    CFLAGS+= -I inc
    CFLAGS+= -I ../algo/inc
    CFLAGS+= -I ../../../common


    CFLAGS+= -I ../../../vlib/vcop_median_filter_mxn_u8/inc

    #PDK SBL
    CFLAGS+= -I D:/PROCESSOR_SDK_VISION_03_01_00_00/ti_components/drivers/pdk_01_08_00_16/packages
    CFLAGS += -DSOC_TDA2XX
    CFLAGS += -DBUILD_ARP32
    ##############################################################


    ##############################################################

    LDFLAGS+= $(ALGLIBPATH)/libeveMedianFilter.eve.lib

    LDFLAGS+= -l "./linker.cmd"

    #
    CSL_PATH = "D:/PROCESSOR_SDK_VISION_03_01_00_00/ti_components/drivers/pdk_01_08_00_16/packages/ti/csl/example/utils/uart_console/lib/tda2xx/arp32/release"
    LDFLAGS+= $(CSL_PATH)/csl_uart_console.aearp32F
    CSL_LIB_PATH = D:\PROCESSOR_SDK_VISION_03_01_00_00\ti_components\drivers\pdk_01_08_00_16\packages\ti\csl\lib\tda2xx\arp32\release
    LDFLAGS+= $(CSL_LIB_PATH)/ti.csl.aearp32F
    ##############################################################


    ##############################################################
    OUTDIR = "./elf_out"

    $(OUTFILE) : outfile
    ##############################################################

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    The red color are the parts that i changed:

    1)  # SUBDIRS+= ./src     SUBDIRS+= ./s

        to compile the "sbl_mbx_eve1.c", not the "median_filter_tb.c" etc under the src folder.

    2) # CFILES+= $(foreach dir,$(SUBDIRS),$(wildcard $(dir)/*.asm))

       uncomment to solve the error :

    error #10056: symbol "_vec_table" redefined: first defined in

    "D:\PROCESSOR_SDK_VISION_03_01_00_00\ti_components\algorithms\eve_sw_01_17_0
    0_00\out\vayu\eve\release\apps\median_filter\test\..\..\..\common\boot_arp32
    .obj"; redefined in
    "D:\PROCESSOR_SDK_VISION_03_01_00_00\ti_components\drivers\pdk_01_08_00_16\p
    ackages\ti\csl\lib\tda2xx\arp32\release/ti.csl.aearp32F<boot_arp32.oearp32F>

    3) CFLAGS+= -I D:/PROCESSOR_SDK_VISION_03_01_00_00/ti_components/drivers/pdk_01_08_00_16/packages
    CFLAGS += -DSOC_TDA2XX
    CFLAGS += -DBUILD_ARP32

    to include the PDK inc files and necessary marco definition.

    4) CSL_PATH = "D:/PROCESSOR_SDK_VISION_03_01_00_00/ti_components/drivers/pdk_01_08_00_16/packages/ti/csl/example/utils/uart_console/lib/tda2xx/arp32/release"
    LDFLAGS+= $(CSL_PATH)/csl_uart_console.aearp32F
    CSL_LIB_PATH = D:\PROCESSOR_SDK_VISION_03_01_00_00\ti_components\drivers\pdk_01_08_00_16\packages\ti\csl\lib\tda2xx\arp32\release
    LDFLAGS+= $(CSL_LIB_PATH)/ti.csl.aearp32F

    to add the CSL uart Lib.

    The compile and link is finished with no error. But the out file generated can not output the log "EVE1 main UARTConfigPuts 0". So i think is the problem of my makefiles, not the problem of median_filter src code. As you see the code "sbl_mbx_eve1.c" are the same, but the results are not the same as the makefile environment are not the same.

    So, please me find where the problem is, thank you~

    Thanks

    xuanbo

     

  • Hi Xuanbo,

    I think the issue here is that you are trying to use EVE binary from EVE SW package along with CSL's example.
    It is possible that EVE binary expect certain environment which is not being set by A15 mbx binary you are trying.
    I am not an expert on EVE SW package that you are referring here.
    I would suggest you to post a new question where EVE SW experts can help.
    Thanks.

    Regards,
    Rishabh
  • Hi Rishabh

         Thank you for your suggestion. I will post this question as a new thread.

    Thanks

    xuanbo