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.

[参考译文] CCS/PROCESSOR-SDK-AM437X:RTOS 编译依赖于工作区路径

Guru**** 2974890 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/676919/ccs-processor-sdk-am437x-rtos-build-dependency-on-workspace-path

器件型号:PROCESSOR-SDK-AM437X
Thread 中讨论的其他器件:SYSBIOS

工具/软件:Code Composer Studio

您好!

 我在不同的机器中再现了我的开发环境。

 当我´ve Release´ve 构建我的应用程序时、我会根据工作区路径获得不同的输出。

 我知道“.out”文件有符号,但二进制文件也不同。 二进制文件是使用 objcopy.exe 和 tiimage.exe 获得的。

 这些是 Release 配置的编译命令标志:

 -mcpu=cortex-A9 -mtune =cortex-A9 -March =armv7-a -marm -mfloat-abi=hard -Dam4378 -DSOC_AM437x -DSK_AM437x -D_USE_WDT_-i"C:/ALSTOM/CED2/Workspace/ced2_v1000_beta4 -i"C:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -O2 -Wall -std=+11

和

-mcpu=cortex-A9 -mtune =cortex-A9 -March =armv7-a -marm -mfloat-abi=hard -Dam4378 -DSOC_AM437x -DSK_AM437x -D_USE_WDT_-i"C:/Users/mborges/workspace_v7/ced2_v1000_beta4 -i"C:/ti/gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/include -O2 -Wall -std=+11

 

以下是链接命令标志:

 mtune = cortex-A9 -marm -Dam4378 -DSOC_AM437x -DSK_AM437X -D_USE_WDT_-O2 -Wall -std=c++11 -mfloat-abi=hard -WL、-Map、"ced2.map"-nodest文件-static -starl、-cwl、-c=c-c+-abi=-q-cyf、-cwl、-cyf、-cwl、-sywl、-sys-cum-cum-q-cyf、-cyf、-cwl、-c /ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu

 和

mtune = cortex-A9 -marm -Dam4378 -DSOC_AM437x -DSK_AM437X -D_USE_WDT_-O2 -Wall -std=c++11 -mfloat-abi=hard -WL、-Map、"ced2.map"-nodest文件-static -starl、-cwl、-c=c-c+-abi=-q-cyf、-cwl、-cyf、-cwl、-sywl、-sys-cum-cum-q-cyf、-cyf、-cwl、-c /ti/bios_6_46_05_55/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu

 

请查看随附的这2个地图文件。 "XDC.meta"的长度因工作区路径中字符的确切差异而异(5个字符)。 代码的其余部分被移位。

 e2e.ti.com/.../map.zip

是否有任何解释/原因?

已安装项目:

CCS 7.2

GCC ARM 编译器4.9.3

PROCESSOR_SDK_RTOS_AM437X 4.00.04

AM437x PDK v1.0.7

BIOS 6.46.05.55

xdctools 3.32.02.25_core

此致、

Marcio。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    转换后二进制文件有何不同? 不同的*。out 文件在运行时是否会导致任何问题?

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

    尊敬的 Eric:

    显然、两个二进制文件都运行正常。

    当测试团队尝试在另一台计算机中重新创建开发环境时、发现了二进制文件的差异。

    如果您查看映射文件、XDC.meta 段的大小会根据工作区路径而不同。

    例如、如果工作区的路径长5个字符、 则 XDC.meta 的大小也将长5个字符。 因此、.c_int00将以5个字节的形式移位。 我想链接器会将此差异传递给.out 文件、从而传递给二进制文件。

    我认为路径来自 SYSBIOS.aa9fg。 它有几个包含路径的字符串、即使我在 CCS 中执行 Release 编译也是如此。

    编辑日期:2018-04-04:
    附加 bin 文件。 我没有看到任何对 file.e2e.ti.com/.../ced2.zip 内路径的引用


    此致、
    Marcio。

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

    在.map 文件中、由于 XDC.meta 段与不同安装路径的关系、我看到了5个字节的移位。 您是否有用于 objcopy 和 tiimage 的命令、或者只使用 pdkAppImageCreate 批处理脚本?

    您附加的二进制文件只有一个 bin 文件、您能否同时附加这两个文件来查看差异? 如果您在 pdk_AM437X_1_0_x\packages\ti\starterware\tools\ti_image 下查看 ti_image.c、则可以添加一些头文件、这是一个简单的 C 文件。 可能导致二进制差异的 ARM objcopy。

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

    e2e.ti.com/.../6165.CED2.ZIP

    尊敬的 Eric:

    我使用批处理文件转换.out 文件:

    设置 buildName=ced2

    设置 projOutPath=%CD%\Release

    设置 tiPath=c:\ti

    设置 pdkPath=%tiPath%\pdk_AM437X_1_0_7

    设置 toolChainPath=%tiPath%\gcc-arm-none-eabi-4_9-2015q3\bin

    设置 tiimagePath=%pdkpath%\packages/ti\starterware\tools\ti_image

    %toolChainPath%\arm-none-eabi-objcopy.exe -O 二进制%projOutPath%\%buildName%.out %buildName%.bin

    %tiimagePath%\tiimage.exe 0x80000000无%buildName%.bin %buildName%_ti.bin

    我认为 objcopy 只翻译.out 文件、不会更改链接器的结果。

    我´ve 了所有文件集。

    此致、

    Marcio。

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

    我使用了 diff -y <(xxd ced2_1.bin)<(xxd ced2_2.bin)| colordiff 与两个二进制文件相比、差异主要是数据移位。 网址为 manned.org/arm-none-eabi-objcopy

    objcopy 可用于通过使用输出生成原始二进制文件
    二进制目标(例如、使用-O 二进制)。 当 objcopy 生成原始时
    二进制文件、它基本上会生成的内容的存储器转储
    输入目标文件。 所有符号和重定位信息都是
    已丢弃。 存储器转储将从最低的加载地址开始
    部分复制到输出文件中。

    因此符号不再存在、我不确定二进制文件有何不同。 但是、这个 objcopy 不是 TI 工具、链接器也来自 GNU ARM、对此我们可能没有明确的答案。

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

    尊敬的 Eric:

    我知道。 我希望链接器中n´t 有一个错误。

    目前、我将向我们的团队推荐使用标准路径创建工作区。 我认为这足以重新创建二进制文件并证明开发环境已正确安装。

    此致、
    Marcio。