CCS 团队、 (您的意见已在其中的一些信息上得到证实)
我们的客户尝试从 v3.3迁移到 v11、并遇到各种构建问题。
我们建议了一种迭代方法-从 v3.3迁移到 v4、等等。
但是、无论"如何"、这都是需要一定程度关注的最新主题。
----
[客户]我们有一个使用 CCS V3.3开发的旧版代码。 现在、我们要将该代码迁移到 CCS V11.1、在此迁移过程中、我们面临一些问题。
可以帮帮你吗?
--
[TI] 的确、我们随时为您提供帮助。
但我不得不说、这是从 V3到 V11的一个相当大的跃点。 这是多年的修订。
尽管如此,我们在网上确实有一些很好的迁移指南来支持这种类型的练习。
具体而言、这一个可以将您从 v3迁移到 v9、然后您可以按照到 v11的相同常规步骤操作:
https://www.ti.com/lit/an/spracr4a/spracr4a.pdf
----
[客户]
TI DSP PN 是 TMS320F2803X。
我们已经完成了一些从 CCS V3.3到 CCS V9的代码迁移活动、 我们遵循了以下 TI 文档中提到的步骤。 共享
https://software-dl.ti.com/ccs/esd/documents/ccs_legacy-project-import.html
我们还在附加的文档中捕获了步骤。 即" import_TO_9.docx "。
e2e.ti.com/.../import_5F00_to_5F00_9.docx
我们收到了一些与迁移代码中的链接器文件相关的警告。 堆栈也有一些错误、但我们解决了这些错误。 我们在 随附的文档中捕获了警告、如 "警告.docx "。
我们需要您的帮助来解决这些警告。 感谢您的帮助。
----
[TI] 首先、我不得不说这是一项具有挑战性的工作。 从 CCS v3.x 升级到 V11.x 的更新时间将近15年。 在一个完美的世界中、人们会尝试从每个主要的版本(例如3.x 到4.x 等)前进。 但我理解您在这里进行全面跳跃的愿望和需要。
但是、对于我来说、对闪存 API 和此类 API 的引用意味着您所挖掘的内容要比 CCS 编译过程更深入。
总之、今晚早些时候在 TI 与我们的编译器团队进行了交谈、我们在此听取了一些意见:
关于无匹配部分诊断… 这是…行
-l2803x_FlashAPI_BootROMSymbols.lib (.text)
…μ A 与任何输入段不匹配。 该行应匹配主应用程序调用的该库中的所有函数。 该库中的任何函数都不会被调用、或者链接器命令文件中的某些早期规范与这些输入段匹配、并导致它们成为该早期输出段的一部分。 尝试将这个整个 UNION 设置为 SECTIONS 指令中的第一个内容。 这将是我们的第一项建议。
关于指令可能不安全的诊断… 问题是 asm 语句中包含.label 指令。 这是一种建立输入段加载地址的非常旧的方法。 也许这是在什么时候推荐的、但现在做的不同。 只需在链接器命令文件中删除它并依赖 load_start 和其他相关运算符即可。
我们的 TI 现场团队上周与团队进行了面对面交流。
我们希望确保您也了解以下内容:
- 通常、我们建议在产品版本方面取得如此大的飞跃的客户从可用的最高级别版本开始、并从该版本开始构建示例项目。 这意味着从框架 v11 CCS 项目(空项目)开始、然后从旧版本工作区中逐步添加各个源文件和头文件。 如果可以尝试执行此操作、则可能会减轻您到目前为止观察到的一些构建错误和警告。
- 或者、用户可以按顺序从每个版本更新、在本例中、从 v3.3升级到 V4。 然后成功验证构建。 然后从 v4继续到 v5、以此类推。
- 是否提供任何原始的 HW+SW 系统设置? 换言之、团队中是否有人可以访问安装了 v3.3软件的原始 PC/工作站?
- 最后、要在 TI 社区之外提供更广泛的网络、可能需要就此主题发起 E2E 咨询? 以下是一个示例:
在我们继续共同讨论时、请告诉我们您的想法。
[客户]
非常感谢您的快速回复,我们需要您在以下主题上提供来自前一邮件链的帮助。
参阅2022年10月18日发出的有关指令潜在不安全的诊断的电子邮件……
请您分享一些有关“如何使用链接器命令文件中的 Load_start 将下面的快照代码转换为单个语句”的示例。

出于我的好奇,将 Load_start 用于 “.label _MainSwitch”的单个语句将覆盖其余部分
将汇编代码从第1417行更改为第1425行、否则我们如何将汇编代码从第1417行链接到第1425行至第 Load_start。
下面是为“Flash28Funcs”分配的部分的快照

如果知道任何其他信息、请告知我。
[TI] 因此、我们假设函数 Class_flashupdate:::MainSwitch 是输入段 Flash28Funcs 中唯一的一个函数。 在这种情况下、注释掉.label 行并将其写入链接器命令文件…
Flash28Funcs:> FLASHA_1,load_start (_MainSwitch),page = 0
这执行相同的操作。
请注意、这假设其他地方有使用符号_MainSwitch 的代码。 代码似乎也需要知道运行地址和长度。 但是,在最初的实施中,我看不到这些细节是如何处理的,所以我在这里不是隐式地提及它们。
更广泛地说… 我认为最佳的长期答案是更好地查看链接器命令文件。 一个好的开始位置是文章 链接器命令文件入门。
[客户]
感谢您的支持!! 因此,继续前面的邮件查询,对于“Class_flashupdate:::MainSwitch”,有18种方法保留在下面的屏幕截图中所示的位置。

我们参考了之前邮件中提供的示例(即 汇编(_MainSwitch)的必要注释和这些新加载启动、结束和运行的外部注释)、并通过必要的方法在 RAM 上复制此部分。 并附加您共享快照的链接。 但它甚至不起作用。
我们在代码审阅中观察到的一点是、所有这些方法都涉及启动文件期间(或中)、请参阅下面的快照

请您分享一些专家意见、以帮助我们解决此迁移问题。
如有需要、请告知我们您的合适时间、以便我们可以安排一个团队会面、进一步讨论此主题。
如果需要更多信息、请告知我。
正如您在2022年10月24日通过此邮件链发送邮件时所建议的、我们已着手采用以下方法
“通常,我们建议客户在产品版本方面取得如此巨大的飞跃,从现有的最高级别版本开始,并从该版本开始构建示例项目。 这意味着从框架 v11 CCS 项目(空项目)开始、然后从旧版本工作区中逐步添加各个源文件和头文件。 如果可以尝试执行此操作,则可能会减轻您目前观察到的一些构建错误和警告。”
我们在 CCS V11中创建了一个新的工作区、并从 CCS V3.3工程中递增添加了该文件。 我们能够构建代码、但我们遇到了与前一封邮件中提到的警告相同的警告

此外、我们还尝试计算启动文件汇编代码、您能在下面提供帮助吗
- 请共享 CCS V3.3 IDE 的汇编器指令文档、其中介绍了如何使用以下快照汇编代码。

我们还需要介绍 “_c_int00”的文档或链接
[TI]
此时、我们认为、最好尽可能在 TI e2e 论坛上发帖。
部分原因是、我们离线处理此问题的主要 TI 编译器工程师现在已离开办公室、直到11月21日。 在论坛上,TI 编译器团队的其他人员将在该工程师缺席期间回答问题。 我们只需在这里铸造一个更大的网。
您是否愿意在这个问题上向我们的 e2e 发布一个线程? 我建议包括迄今所有的数据。
我也愿意在您允许的情况下发布、而不会将您识别为最终客户。
请告诉我、感谢您的耐心。
----
Ty、
是的