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-AM335X:从 OUT 创建 bin

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/662187/ccs-processor-sdk-am335x-creating-bin-from-out

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Code Composer Studio

您好!

我有两个项目...  在 BeagleBoneBlack 上、使用 CCS 7.2   

当通过 XDSv2 JTAG 加载时、这两个项目都可以工作。  但是、当我将"app"放在 SD 卡上时、一个可以工作、一个不能工作。

工作的示例是"pdk_am335x_1_0_7" 文件夹直接输出的一个小型示例"GPIO_LedBlink_bbbAM335x_armTestProject"。

无法通过 SD 卡正常工作的是我创建的不使用 PDK 的插件。  脚本正在从输出文件中取出大量内容。  我认为这条路太大了。  但如果没有任何资源或文档、我就不知道。

工作的一个:

2018年2月5日08:07 PM 98、312  应用程序
2018年2月5日08:07 PM 98、304  GPIO_LedBlink_bbbAM335x_armTestProject.bin
2018年2月5日08:07 PM 751、583 GPIO_LedBlink_bbbAM335x_armTestProject.map
2018年2月5日08:07 PM 671,393 GPIO_LedBlink_bbbAM335x_armTestProject.out

您很容易看到"pdkAppImageCreate.bat"脚本创建了 bin 文件、然后创建了"app"文件(比预期大8字节)。

它将 bin 文件减少到原始 out 文件的一小部分、但我找不到任何描述其实际操作的内容。  "app"文件可以正常工作、因此我无法抱怨...

至于不起作用的那个...

2018年2月5日08:13 PM 98、292  应用程序
2018年2月5日08:13 PM 98、284  RNDIS.bin
2018年2月5日08:13 PM 599,894  RNDIS.MAP
2018年2月5日08:13 PM 1、419、500 RNDIS.OUT

该脚本再次创建了一个 bin、该 bin 是 out 文件的一小部分。  实际上、它实际上更小!  但我的节目却大得可以理解。

再说一次、由于我不知道它在该步骤中做了什么、我无法确定损坏的东西。

两个构建报告在 pdkAppImageCreate.bat 输出中均未显示任何错误:

调用:GNU Linker
“C:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc.exe”-mtune = cortex-A8 ........ -lnosys -LC -WL、--end-group
'finished building target:GPIO_LedBlink_bbbAM335x_armTestProject.out'
''
C:/ti/pdk_am335x_1_0_7/packages/pdkAppImageCreate.bat C:/ti/pdk_am335x_1_0_7/packages C:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update C:/Users/scott/workspace_v7/GPIO_LedBlink_bbbAM335x_armTestProject/Debug GPIO_LedBlink_bbbAM335x_armTestProject AM335x arm

“调用:GNU Linker”
“C:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc.exe”........ -lnosys -LC -WL,--结束组
'finished building target:RNDIS.out'
'''
C:/ti/pdk_am335x_1_0_7/packages/pdkAppImageCreate.bat C:/ti/pdk_am335x_1_0_7/packages C:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update C:/Users/scott/workspace_v7/RNDIS/Debug RNDIS AM335x arm

是否有人可以提供任何线索、以便我开始挖掘?  因为 CCS 只是隐藏了所有让我能够进行故障排除的内容。

-CSW

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

    好的、然后他们可以解释如何让这种环境停止向我开枪...

    我继续挖掘并检查了映射文件。  我发现示例项目和我的项目具有不同的入口点。

    具体而言、演示项目具有  

    c_int00 0x80000000 bb4 C:\ti\BIOS_6_46_05_55\packages/GNU\Targets\arm\rtsv7a\lib\boot.aa8fg (boot.oa8fg) 

    我的项目有的项目

    c_int00 0x800040e0 bb4 C:\ti\BIOS_6_46_05_55\packages/GNU\Targets\arm\rtsv7a\lib\boot.aa8fg (boot.oa8fg) 

    创建此代码的批处理脚本位于 C:\ti\pdk_am335x_1_0_7\packages 中、并使用的硬编码步骤

    %pdk_path%/ti/starterware/tools/ti_image/tiimage.exe 0x80000000无%app_name%.bin 应用程序) 

    我手动进入并更改入口点地址和小提琴!  它现在正在工作。

    换言之、入口点地址由脚本设置为8000:0000 、无法更改、因为此脚本用于所有项目。  我还没有找到任何方法强制告诉编译器将入口点地址设置为我所需的值。  CFG 正在生成链接器脚本、并使文件全部位于我的背面、超出我的控制范围。

    当然、整个环境都存在混淆和隐藏的情况、因此用户需要花费数天时间来尝试找出损坏的原因。  然后花更多的时间尝试了解如何"四处走动"环境正在做什么...

    所以...  我如何"解决"这个问题:脚本(由生成的演示项目自动调用)决定每个项目的入口点必须为8000:0000、但我创建的实际项目可能只使用任何位置作为入口点?  

    在链接器运行并检查映射文件之前、我甚至不知道真正的入口点、因为我实际上无法设置我选择的入口点、因为 CFG 构建系统会覆盖任何链接器脚本...??

    -CSW

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

    您好、Christopher、

    如果您看一看 CCS 项目属性、构建部分将调用 pdkAppImageCreate.bat。

    您能否创建自己的(pdkAppImageCreate_Christopher.bat)并通过如下所示调整编译后步骤参数、使用您希望从 CCS 获得的入口点调用此脚本?

    Lali

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我可以、我将继续进行这项工作。 但问题仍然在于、在不知道入口点的情况下、将什么值放入我自己的批处理文件中。 这意味着编译后处理步骤在我可以查看映射文件以查看入口点时已执行。

    随着开发过程的进行、不断地改变它。

    我想我必须编写自己的程序、以分离映射文件、找到入口点地址、修改批处理文件、然后将其调用。

    但这是一个巨大的漏洞、试图"在盖子下为您做"。

    我还没有打开蠕虫的 CAN 来使用 TI 编译器执行此操作。 "tiobj2bin.bat"脚本也不会创建作为 SD 卡运行的映像、这不是同一问题、因为该脚本仅创建*。bin 文件。 它绝不会调用"tiimage.exe"来安装长度和入口点(因此我自己使用映射文件中的入口点运行该入口点)。

    TI 编译器是现有团队使用的当前指定工具、不会发生更改。