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:vision_app mcu1_0编译和链接问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1449989/tda4vm-vision_app-mcu1_0-compilation-and-linking-problems

器件型号:TDA4VM

工具与软件:

SDK:0902 0806
电路板:tda4vm_evm

尊敬的 TI 专家:

sdk_builder/

编译 vision_app 时、我需要先编译:

Fullscreen
1
make sdk -j2
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

然后、我编译 vision_app mcu1_0:

Fullscreen
1
make vision_apps -j 1 PROFILE=release BUILD_CPU_MCU1_0=yes BUILD_CPU_MPU1=no BUILD_CPU_MCU2_0=no BUILD_CPU_MCU2_1=no BUILD_CPU_MCU3_0=no BUILD_CPU_MCU3_1=no BUILD_CPU_C6x_1=no BUILD_CPU_C6x_2=no BUILD_CPU_C7x_1=no
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但我看到在实际编译的.out.map 文件中也编译了许多无用的库文件。 这将大大增加我的代码:的数量

这是因为我首先要编译静态库、然后编译应用、再在链接时链接中的所有静态库。 我应该在哪里修改哪些链接参数来避免此问题?

此致
伊森

 

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

    因为我要将 vison_app_mcu1_0.out 更改为 vision_app_mcu1_0.bin、 如果上述问题未解决、这会导致编译的.bin 文件非常大。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想问另一个问题:
    vision_app 编译的.out 文件和 mcus 编译的.xer5f 文件的文件格式是否相同? 如果它们不相同、如何将.out 文件转换为.xer5f 文件? 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    C7x 的所有静态库都在 vision_apps/platform/j721e/rtos/concerto _c7x_inc.mak 中链接、对于 R5、它为  vision_apps/platform/j721e/rtos/concerto r5f_inc.mak。
    您可以从此处删除不需要的库及其依赖项。

    是的、.out 和.xer5f 是相同的。

    此致、

    Nikhil

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

    您好、Nikhil  

    我删除了许多库文件、但转换为 bin 后、这些文件都很大。



    祝你一切顺利
    伊森

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

    您好、 Nikhil:

    您可以查看上面 visionapp 的映射文件。 实际上、代码量并不大、但转换为 bin 后的 bin 文件大小也非常大。 


    此致
    伊森

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

    您好、

    有什么建议吗? 

    此致
    伊森

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

    尊敬的 EASON:

    我可以知道您如何转换为 bin 吗?

    您是否在这里剥离符号?

    此致、

    Nikhil

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

    嗨、Nikhil

    我转换为 bin 文件的命令是:μ F

    Fullscreen
    1
    gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/aarch64-none-elf-objcopy vision_apps/out/J721E/R5F/FREERTOS/release/vx_app_rtos_linux_mcu1_0.out -O binary app_xip_bin
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    如何去除符号?  使用哪些命令?

    我看到文件信息以_mcu1_0_release_strip.xer5f 结尾。 这是不是 elf 文件、可剥离符号?


    此致
    伊森

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

    您好!

    是、

    您可以在 sdk_builder/makerules/makefile_linux_arm.mak 中查看 tiarmstrip 在 vx_app_rtos_linux_mcu1_0.out 文件中的使用情况。

    您可以同样尝试吗?

    此致、

    Nikhil

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

    您好、Nikhil
    我使用此工具删除了无效的部分、但结果仍然相同


    现在、我提到此问题来设计链接文件:

    https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_an_introduction_to_binary_files.html

    但 bin 文件比 elf 文件大得多。

    此致
    伊森

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

    嗨、Nikhil

    存储器映射中可能有一个很大的空洞。  在二进制文件中、表示这样的空洞的唯一方法是填充它。  

    我需要 ocmc 中的一些地址以及 ospi 中的一些地址。 那么、我应该如何设计该链接文件?

    这是我在看到:https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_an_introduction_to_binary_files.html 后的链接文件

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /*----------------------------------------------------------------------------*/
    /* File: k3m4_r5f_linker.cmd */
    /* Description: */
    /* Link command file for j721e M4 MCU 0 view */
    /* TI ARM Compiler version 15.12.3 LTS or later */
    /* */
    /* Platform: QT */
    /* (c) Texas Instruments 2017, All rights reserved. */
    /*----------------------------------------------------------------------------*/
    /* History: */
    /* Aug 26th, 2016 Original version .......................... Loc Truong */
    /* Aug 01th, 2017 new TCM mem map .......................... Loc Truong */
    /* Nov 07th, 2017 Changes for R5F Init Code.................. Vivek Dhande */
    /*----------------------------------------------------------------------------*/
    /* Linker Settings */
    /* Standard linker options */
    --retain="*(.bootCode)"
    --retain="*(.startupCode)"
    --retain="*(.startupData)"
    --retain="*(.irqStack)"
    --retain="*(.fiqStack)"
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


    但 bin 文件仍然有很大的空穴。

    祝你一切顺利
    伊森

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

    您好、Nikhil
    有任何建议吗?

    此致
    伊森

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

    尊敬的 EASON:

    关于这一点、我向编译器团队进行核实。 由于 SDK 提供了一个符号被剥离时尺寸较小的剥离 elf 文件。  

    但是、由于您所要求的是一个.bin 文件、因此我需要从编译器团队那里进行检查并返回给大家。

    此致、

    Nikhil

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

    您好、Nikil
    感谢您的答复。

    请将上诉的链接文件转发给编译器团队。 我将基于上述链接文件生成的 elf 文件转换为 bin 文件。
    如果 TI 编译器团队对此有任何建议、敬请告知


    此致
    伊森

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

    为什么是的规格 .data 输出段已写入...

    Fullscreen
    1
    2
    3
    .data : {
    *(.data)
    } palign(128) load = XIP_RUNNING_SPACE, run = OCMC_RAM_SCISERVER, table(_text_data)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我希望它也是类似的东西...

    Fullscreen
    1
    .data palign(128), run = OCMC_RAM_SCISERVER
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    当您执行此操作时、链接器会生成 .data 未经初始化的段。  它会创建初始化段 .cinit .  来自编译器 RTS 库进程的启动代码 .cinit 初始化的内容 .data .   

    是的影响之一 表(_TEXT_DATA) 指令是输出段 太棒了 会自动创建。  它是位于地址0的已初始化段。  我想这不是你想要的。

    谢谢。此致、

    -George.

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

    您好、George

    我提到了 XIP 文档、它需要我来编写 .data 部分中所示的代码、并在程序中运行时复制代码


    因为在 XIP 中、只有 RO/RX 属性段可以在 ospi 地址中运行、而其他属性段可以在 ocmc 中运行、所以我编写了 .data 并且可以在演示中成功运行。 但是、当我将成功运行演示的链接文件应用于 vision_app 时、如果该 bin 文件被转换为 bin 文件、该 bin 文件的大小比 elf 文件大得多。

    你有什么建议吗? 为 XIP 编写一个新的链接文件  

    此致
    伊森

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

    请忽略我在上一篇文章中所说的话。  请遵循 SDK 专家的说明。 但有一个细节您不关注。  注意这一行从你上一篇文章的第一个屏幕截图...

    Fullscreen
    1
    .ovly : {} palign(128) load = XIP_FLASH
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    向链接器命令文件中添加一个非常类似的行。  部分 太棒了 包含使用时创建的复制表 表() 指令。  如果没有这样的线路 太棒了 段默认分配、这几乎可以肯定是错误的。   

    谢谢。此致、

    -George.

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

    您好、George

    我会尝试它。 谢谢

    最好的爬坡
    伊森

x 出现错误。请重试或与管理员联系。