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/TMS320C6713B:升级传统设计的 DSP/BIOS

Guru**** 2564390 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/589862/ccs-tms320c6713b-upgrading-dsp-bios-on-legacy-design

器件型号:TMS320C6713B

工具/软件:Code Composer Studio

大家好、

我从承包商/供应商那里继承了 DSP 项目和代码库、我正在维护它、并尽可能地尝试更新它。  要添加起皱,该项目基于 Telelogic (现为 IBM) Rhapsody v7.1.1。  我的供应商有一个定制适配器、用于将 Rhapsody OXF 框架调整为 TI DSP/BIOS。

我们目前正在使用 CCSv3.3与 Blackhawk USB560M 仿真器/调试器配合使用。  CCSv3.3的 Blackhawk 驱动程序限制为32位 Windows。  CCSv3.3还需要管理员权限才能在现代 Windows 7计算机上运行(兼容模式问题???)、这在企业网络环境中不会发生。  我们可以在独立的机器上完成操作、但我们希望升级设置。  我们还可以在用于 Stellaris 和 Tiva 开发的另一台计算机上访问 CCSv5.3。  我知道 CCS 的较新版本更倾向于 DSP/BIOS 的较新版本。  我们目前在 CCSv5.3设置中有 DSP/BIOS v5.42.01.09。

遗憾的是、Rhapsody OXF 适配器似乎可能与旧版 DSP/BIOS 的某些功能绑定。  我尝试根据较新的 BIOS 版本重建库、但这没有帮助。  Rhapsody 库在 Rhapsody 生成的代码库中的 timain()函数启动主任务线程时提供实际的 main()函数。  我们在 TCF 文件中使用的一些功能包括1个硬件中断、1个用户初始化函数、多个计时器中断和一个定制存储器布局: 片上 RAM、片外闪存(代码)、片外 SRAM (堆空间以及代码/数据)、片外 NVRAM (数据)以及配置为显示为存储器映射 IO 的 FPGA。

遗憾的是、由于项目的性质(国防)、我无法发布.tcf 和.TCI 文件。

当我们首次尝试将设置传输到实验练习时、解析/编译.tcf 文件时出错。  事实证明、这是我们的 CCS 设置附带的 DSP/BIOS 5.31中的一个错误。  接下来我尝试了5.33.06、它已经编译但没有运行。  我与供应商的开发人员交谈、他告诉我他们使用了5.32.04、此后我一直在使用它。  我已经尝试重建 Rhapsody 库、但仍然遇到较新的 DSP/BIOS 版本的运行时问题。  尝试5.42.01.09也会导致类似问题。

在编译器方面、不太敏感。  我在 CCSv3.3上使用过 v6.0和 v6.1编译器、在安装 DSP/BIOS 5.32后、7.4.4和7.4.6都在 CCSv5.3上工作。

我想我的问题是:为了更好地与 CCSv5.3兼容、是否值得更新到较新的 DSP/BIOS 版本?  是否有任何常见的缺陷或缺陷?  我不知道 BIOS 有什么变化?

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

    如果您的公司有一名 TI 销售人员、请与他们联系。 如果需要、他们可能能够促进文件传输。 由于无法查看您的工作、因此很难在特定调试问题上为您提供帮助。

    通常、对任何新程序最好的做法是使用最新的工具、这意味着 TI-RTOS 和 CCSv7。 TI-RTOS 是 SYS/BIOS 的新名称、SYS/BIOS 是对 DSP/BIOS 的更新、其函数名称有所更改、但基本功能相同。

    但是、您使用的是较旧的处理器、更重要的是与非 TI 操作系统绑定。 我不确定 Rhapsody 为您做了什么、但听起来好像是在这条路上发生了一次碰撞。 CCSv7不需要许可、但您需要仔细检查仿真器是否可以使用它。 CCSv7可能只支持 EABI 目标文件格式、而 CCSv3.3使用 COFF、因此您的所有库都必须重新编译。

    "是否值得更新..." 这是一个非常主观的问题、当然不会让您感到意外。 老实说,我的第一个想法是,如果您放弃更新到网络环境的想法,您的工作将会更加轻松; 保持脱机并使用 USB 记忆棒传输文件-不应存在这么多文件、您永远不需要将任何文件从独立计算机移动到联网计算机、而只需要另一种方法。 在任何情况下、您都必须进行一些搜索、以确定是否可以让 CSv3.3在较新的 Windows 版本上运行、这对于64位 PC 上的仿真器驱动程序而言是一个大问题。

    您已经遇到了一些困难和陷阱、而且还会遇到更多。 我们可能会在这个论坛上提供一些可供您搜索的经验。 并尝试在 TI.com 上进行类似搜索、其中将找到 E2E 主题以及有关迁移到64位和 CCS 版本的文档或论文。

    这里没有很多可靠的帮助、但我想从我的两分钱开始。

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

    感谢您回复 Randy。

    我想、Rhapsody 框架为原始开发人员提供了一个独立于操作系统的框架、用于构建一个状态机和事件处理系统、以实现所需的功能。  最初在 Windows 上使用 Rhapsody 动画进行原型设计、然后在 DSK6713 (第1阶段)上完成、最后迁移到我们现在使用的定制板(第2阶段)。  当他们复制具有已知行为和已知接口(为16位芯片重写旧的汇编语言代码库)的系统时、它可能有助于快速进行原型设计。  对于我来说、它确实具有一个陡峭的学习曲线、试图了解不同类型的 statechart 类和同步与异步事件。  此外、它们的电路板实现方案还具有一种机制、在该机制下、电路板上的 MCU 可以触发 DSP 上的硬件中断、但它们尚未在 DSP 软件中实现硬件中断。  我花了一些时间才知道 HWI enable 函数需要位于 main()和 main()中,实际上是在 Rhapsody OXF 库中,所以我必须修改它们并重新构建。  我的主线程以"timain()"开头、该函数由库主函数调用。

    网络与独立。  Rhapsody 安装已获得网络许可,因此需要安装在联网计算机上。  虽然 CCSv3.3无法在该计算机上运行、但命令行编译器工具可与 Rhapsody 生成的 Makefile 配合使用。  然后、我可以通过 CD-RW/DVD-RW (此处不能使用 USB 记忆棒)将其用于 JTAG 或闪存编程。  我要做的是整合独立机器、而不是使用 CCSv3维护一台32位机器、使用 CCSv5维护一台64位机器。

    我们错误地放置了 JTAG 接头、因此我目前无法调试设置。  我只能通过串行端口对闪存进行编程。  但是、在我获得一个新的头文件(main、主任务线程、用户初始化)后、是否有战略位置我可以/应该添加调试信息来查找这个运行时错误?  

    在生成的*。cmd 文件中是否有任何我可以检查的内容。  我注意到每个 BIOS 版本生成的.cmd 文件之间存在差异。  我们的.tcf 也会调用 utils.loadPlatform ("ti.platforms.generic"、params"); 在5.32.04的 BIOS 文件夹中、packages/ti/.../generic 文件夹中有多个文件、包括 Platform.tcp。  但在5.33及更高版本上、只有 TCP 文件。  这很重要吗?

    *=正确吗?  Hwi 使能应该在 main()中(在 BIOS_init()和 BIOS_start()之前调用)?  如果我在 timain()或用户 init 函数中调用它,它将不起作用。  它现在可以工作、但有更好的方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我只是想对这一问题作出答复,以分享该决议并结束这一问题。 找到 JTAG 接头后、我对560M、CCSv5.3和 DSP/BIOS 5.4x 进行了一些调试。 某些地方确实存在内存损坏、从而阻止了正确的回扫并导致跳转到无效代码段。 以下方法2有助于(processors.wiki.ti.com/.../DSP_BIOS_Debugging_Tips ),因为它会导致我最终进入故障 ISR,但没有回扫。


    第一个问题是在 GBL_setL2cacheMode 中、因此我暂时禁用了 L2缓存。 我稍后通过将.tcf 中的操作系统堆栈从0x1024增加到0x2000来修复此问题。

    第二个问题是 Rhapsody 初始化、将主线程的堆栈大小从0x8000更改为0xA000足以让事情再次发生。