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:xearp32F 和输出文件之间的差异

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/658747/tda2evm5777-the-difference-between-xearp32f-and-out-file

器件型号:TDA2EVM5777

你(们)好

   我尝试使用"MultoreImageGen_tda2xx.bat"通过 A15和 EVE 生成 Appimage。

   我已经测试了"SBL 多核邮箱示例"、结果很好。

    从"MultoreImageGen_tda2xx.bat"中、我发现 A15的 bin 文件"SBL_multicore_mbx_a15_0_release.xa15fg"和 EVE 的 bin 文件"SBL_multicore_mbx_arp32_1_release.xearp32F"已合并到最终的 AppImage 文件中。

   现在,我将尝试使用 "SBL_multicore_mbx_a15_0_release.xa15fg"和 EVE 独立应用"test_eveMedianFilter.eve.out"(在"eve_sw_01_17_00_00\apps\median_filter\test\elf_out 文件夹中)生成 AppImage。 我的问题是、我能否直接将 A15' xa15fg 文件与 EVE OUT 文件和"MultoreImageGen_tda2xx.bat"组合在一起? EVE xearp32F 和 Out binaray 文件之间有何区别?

   顺便说一下、A15 (xa15fg 和 OUT)之间的区别是什么? DSP (xe66和输出)? M4 (xem4和 out)?

谢谢

Xuanbo

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

    除了名称外、.out 和.xearp32F 文件之间没有区别。 在创建可执行文件时、编译系统会根据内核使用不同的扩展名。 这是区分位于同一位置的不同内核的二进制文件所必需的。 您可以修改 multicore_image_gen.bat 文件以直接使用.out。

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

    感谢您的回复、我将使用"MulticoreImageGen_tda2xx.bat"测试"test_eveMedianFilter.eve.out"。

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

    在 TDA2X EVM 上测试"test_eveMedianFilter.eve.out"时、我遇到另一个问题。
    首先、我使用"SBL_multicore_mbx_a15_0_release.xa15fg"和"MulticoreImageGen_tda2xx.bat"生成了 AppImage;
    然后、我在 TDA2x EVM 上运行 AppImage、但仅打印来自 A15的日志、不打印来自"test_eveMedianFilter.eve.out"的日志。
    我检查了 src 文件"median_filter_tb.c"(eve_sw_01_17_00_00\apps\median_filter\test\src\)、并发现它使用"eve_profile.c"(eve_sw_01_17_00_00\common)中的 test_printf ()函数进行打印。 test_printf()的定义如下:

    /*仅用于独立测试文件中的 printf */
    void test_printf (const char * text、...)

    #ifndef EN_zebu_test
    #if test_printf_type =test_printf_type_dummy
    其他
    va_list argptr;
    va_start (argptr、text);
    vfprintf (stdout、text、argptr);
    va_end (argptr);
    fflush (stdout);
    #endif
    其他
    va_list argptr;
    va_start (argptr、text);
    vuart1_write_formated (文本、argptr);
    va_end (argptr);
    #endif


    我的问题是上面的"vuart1_write_formated "函数是否可用于通过 EVE 将日志发送到 UART? 我已将 EVE_SW_01_17_00_00\makerules\makerules_eve.mk 更改为取消注释"CFLAGS +=-den_zebu_test"、以编译 test_printf 函数的 vuart1_write_formated 部分。 但是、从 EVE 到 UART 的打印仍然没有任何内容。

    那么、如果我想查看 UART 上"test_eveMedianFilter.eve.out"的日志、我应该怎么做?

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

    您可以使用 CSL UART 实用程序库从 EVE 打印 UART。 您共享的 API 将打印件发送到 CIO 控制台(CCS 有一个)。

    最好的实现方式是一个内核只使用 UART 打印、因为两个二进制文件都独立运行、并且两个内核发送 UART 打印时可能会发生 UART 数据损坏。 否则、应存在某种处理器间通信、其中一次仅内核泵入 UART 数据。

    此致、
    Rishabh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上、当我取消注释"CFLAGS +=-den_zebu_test"以编译 eve_profile.c 时、我遇到错误:
    ..\..\..\..\common\eve_profile.c (128):错误 C3861:“vuart1_write_formated”:找不到标识符
    那么、Vision SDK 中没有 vuart1_write_formated 函数的真正定义?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Xuanbo、

    zebu 是芯片开发平台。
    这可能是在芯片预开发时使用的一些旧代码。

    此致、
    Rishabh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、Vision SDK 使用 VPS_printf 进行 UART 打印。

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

    你好、Rishabh

    我修改了 src 文件"median_filter_tb.c"(eve_sw_01_17_00_00\apps\median_filter\test\src)以导入 CSL UART 实用程序库(pdk_01_08_00_16\packages/ti\cSL\examples\utils\uart_console)、然后可以在"median_filter"函数中使用 UARTb"中位元函数。
    我使用"SBL_multicore_mbx_a15_0_release.xa15fg"和 EVE 独立应用"test_eveMedianFilter.eve.out"(在"eve_sw_01_17_00_00\apps\median_filter\test\elf_out 文件夹"中)生成了 AppImage。
    但是、当我运行此 AppImage 时、我无法从 UART 上的 EVE 获取任何日志输出。 "test_eveMedianFilter.eve.out"似乎也不起作用、因为输出映像不会在 testvecs\output 文件夹中创建。
    我认为 UARTConfigPuts 函数的使用是可以的、因为我已经在"SBL_multicore_mbx_arp32_1_release.xearp32F"中对其进行了测试。 "test_eveMedianFilter.eve.out"可能根本没有运行?
    我已经调试了这个问题很长时间、请帮我解决。

    谢谢
    Xuanbo

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

    您能否在 EVE 主系统中放置一个 while 循环并使用 CCS 连接到 EVE、以检查 EVE 二进制文件是否已正确加载。
    很可能会加载 EVE 二进制文件、您需要执行一个步骤并检查具体情况。

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

    你好、Rishabh

       我现在没有 JTAG 连接器、因此无法使用 CCS 进行调试。 但我发现它可能不是源文件的问题、它应该是编译环境问题(makefile 问题)。 让我详细解释一下:

      1首先、您是否记得"SBL 多核邮箱 EVE UART 输出问题"主题( 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\n 多核邮箱应用程序- MPU-Core0主内核\r\n "、-1);

    while (1){}

    返回0;

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~μ A

    "SBL_mbx_eve1.c":

    void main (void){

    //延迟约2秒
    uint32_t m = 0x05000000U;
    uint32_t n = 0x0F000000U;
    uint32_t i = 0;
    uint32_t j = 0;
    对于(;i < m;+i)

    对于(;j < n;+j)


    UARTConfigPuts (uartBaseAddr、"\r\n EVE1主 UARTConfigPuts 0\r\n "、-1);

    while (1);

    上述代码正常工作、生成 AppImage 后、我可以在 UART 控制台上看到来自 A15和 EVE 的日志:

     多核邮箱应用- MPU-Core0主内核

    EVE1主 UARTConfigPuts 0

    2然后、我将 上面的"SBL_mbx_eve1.c"复制到"EVE_SW_01_17_00_00\apps\Medial_filter\test"文件夹。 并修改了"eve_sw_01_17_00_00\apps\median_filter\test\makefile"、如下所示:

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


    ALGINCPATH=$(EVEALGORITHMS)/中位滤波器/algo/inc
    ALGLIBPATH=$(EVEALGORITHMS)/MEDIATE_FILTER/ALGO/lib/$(TARGET_Build)
    ################################################


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

    CFILES=$(foreach dir、$(subdirs)、$(通配符$(dir)/*。c)
    CFILES+=$(foreach dir、$(subdirs)、$(通配符$(dir)/*。k)
    # CFILES+=$(foreach dir、$(subdirs)、$(通配符$(dir)/*。asm)

    HFILES =$(foreach dir、$(subdirs)、$(通配符$(dir)/*。h)

    OUTFILE=./elf_out/test_eveMedianFilter.eve.out

    ifndef EVE_SW_ROOT
    $(错误您必须定义 EVE_SW_ROOT!)
    字节序
    包括$(EVE_SW_ROOT)/makerules/makerules_eve.mk

    #used 在 makerules 内部使用、但可以在之后定义它
    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_compons/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_compons/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_componats\drivers\pdk_01_08_00_16\packages/ti\csl\lib\tda2xx\arp32\release
    LDFLAGS+=$(CSL_LIB_PATH)/ti.CSL.aearp32F
    ################################################


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

    $(OUTFILE):输出文件
    ################################################

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~μ A

    红色是我更改的部件:

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

      要编译 src 文件夹下的"SBL_mbx_eve1.c"、而不是"median_filter_tb.c"等。

    2) # CFILES+=$(foreach dir、$(subdirs)、$(通配符$(dir)/*。asm)

      取消注释以解决错误:

    错误#10056:重新定义符号"_vec_table":首先在中定义

    " D:\processor_sdk_vision_03_01_00_00\ti_compons\Algorithms\eve_sw_01_17_0
    0_00\out\vayu\eve\release\apps\median_filter\test\..\..\common\boot_arp32
    .obj";在中重新定义
    " D:\processor_sdk_vision_03_01_00_00\ti_componels\drivers\pdk_01_08_00_16\p
    封装\ti\cSL\lib\tda2xx\arp32\release/ti.csl.aearp32F

    3) CFLAGS+=-I D:/processor_sdk_vision_03_01_00_00/ti_compons/drivers/pdk_01_08_00_16/packages
    CFLAGS +=-DSOC_TDA2XX
    CFLAGS +=-DBUILD_ARP32

    以包含 PDK inc 文件和必要的 Marco 定义。

    4) CSL_path ="D:/processor_sdk_vision_03_01_00_00/ti_compons/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_componats\drivers\pdk_01_08_00_16\packages/ti\csl\lib\tda2xx\arp32\release
    LDFLAGS+=$(CSL_LIB_PATH)/ti.CSL.aearp32F

    添加 CSL UART 库。

    编译和链接完成时没有错误。 但生成的输出文件无法输出日志"EVE1主 UARTConfigPuts 0"。 我认为是 makefile 的问题、而不是 MEDIAND_FILTER src 代码的问题。 正如您看到的、代码"SBL_mbx_eve1.c"是相同的、但结果与 makefile 环境不同。

    所以,请我找出问题所在,谢谢~

    谢谢

    Xuanbo

     

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

    我想这里的问题是、您尝试使用 EVE 软件包中的 EVE 二进制文件以及 CSL 的示例。
    EVE 二进制文件可能需要某些环境、而这些环境不是由您正在尝试的 A15 MBx 二进制文件设置的。
    我不是您在此处所提到的 EVE 软件包专家。
    我建议您发布一个新问题、让 EVE 软件专家提供帮助。
    谢谢。

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

    你好、 Rishabh

       感谢您的建议。 我将把这个问题发布为新主题。

    谢谢

    Xuanbo