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.

[参考译文] RTOS/PROCESSOR-SDK-AM57X:构建和链接问题

Guru**** 2555630 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/610427/rtos-processor-sdk-am57x-problems-building-and-linking

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

工具/软件:TI-RTOS

我正在研究一个在 IPU 内核上运行的基本应用、该内核处理 UART 通信、然后通过 IPC 将数据传递到主 Linux OS。 IPU 将运行 SYS/BIOS。 我已经在 CCS 7.1.0中设置了以下 RTSC 软件包(全部来自 RTOS SDK 4.0.0.1):

  • EDMA3 v2.12.4
  • IPC 3.46.0.02
  • SYS/BIOS 6.46.5.55
  • am57xx PDK v1.0.7

我已根据 SDK 随附的示例设置了 app.cfg、config.Bld 等。

我还按如下方式设置了 RTSC 选项:

  • 目标:TI.targets.arm.elf.M4
  • 平台:ti.platforms.evmDRA7XX:ipu1

如果我使用 XDCtools 3.32.1.22、编译会进入链接步骤、然后失败:

"configPkg/linker.cmd"、第246行:错误#10099-D:程序将无法装入可用内存。 对齐方式运行对齐方式对".data"大小为0x100138e 的放置失败。 可用存储器范围:
EXT_DATA 大小:0x200000未使用:0x1fedb7最大孔:0x1fedb7

我不知道为什么链接器会出现如此大的段大小;我尝试查看生成的.map 文件、但它不提供任何帮助。 我看到.data.1段的长度为0x01000018个字节、但我不知道链接器尝试在那里放置什么;我得到的只是一条"分配失败"消息、这显然不是很有帮助。 映射文件中的模块摘要同样不有用;它报告的"总计"代码大小为87978字节、ro 数据大小为21159字节、RW 数据大小为484963字节、其中任何一个甚至都不接近于报告的数据段大小。

如需更多信息、此处是"段分配图"的违规部分

运行 origin load origin length init length atts members
------ ------ ------ ------ ---- ----

00000000  00000000  01000018 00000000  rw-.data.1

和我的存储器配置:

    名称       使用       的原始长度未使用  属性 填充
------------  ----  ------  ----  ----  --------  

 L2_ROM         00000000 00004000 000005d0 00003a30 RWIX
 EXT_CODE        00004000 000fc000 00000000 000fc000 RW X
 L2_RAM         20000000 00010000 00000000 00010000 RFIX
 OCMC_RAM1       40300000 00080000 00000000 00080000 RWIX
 OCMC_RAM2       40400000 00100000 00000000 00100000 RWIX
 OCMC_RAM3       40500000 00100000 00000000 00100000 RWIX
 EXT_DATA        8000000 00200000 00088972 0017768e RW  
 EXT_HEAP        80200000 00300000 00000000 00300000 RW  
 跟踪_BUF       9f000000 00060000 00008000 00058000 RW  
 EXC_DATA        9f060000 00010000 00000200 0000fe00 rw  
 PM_DATA        9f070000 00020000 00000000 00020000 RW X
 
是否有人能就如何确定哪些人试图占用如此多的内存提供任何建议?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    进一步调查表明、我显然在 app.cfg 中包含了过多的"东西"。 因此、XDCtools 显然尝试将大量额外代码链接到我的可执行文件。 我发现的值得注意的事情是:

    VAR 板= XDC.loadPackage ('ti.board');
    board.Settings.boardName ="evmAM572x";
    VAR Utils = XDC.loadPackage ('ti.utils.profiling');
    VAR 邮箱= XDC.loadPackage ('ti.sysbios.knl.mailbox');

    我之所以包含这些内容、只是因为我在某个地方看到了一个包含这些内容的示例。 我不知道大多数 XDCtools 的作用是什么(它生成的错误消息通常不是很有用)、但我的经验是、与示例的任何偏离、无论是代码还是封装版本、都会导致失败、因此我选择包含示例所做的一切。

    考虑到我的应用程序代码的作用和我要链接的 BIOS 软件包小、我仍然有点担心映射文件报告超过100KB 的代码使用情况和大约19KB 的 RO 使用情况、 但现在、我更清楚地了解了我可以在哪里尝试减小占用空间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们能否关闭此主题、或者您是否需要其他信息?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、请随意关闭它。 也就是说、如果您有任何其他想要提供的信息、我当然欢迎您提供。