Thread 中讨论的其他器件: C2000WARE
工具与软件:
当现有的.lib 文件是 SAFETI-DIAGNOSTICS-LIB ABI 时、如何在 EABI 工程中使用 C2000-COFF?
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.
工具与软件:
当现有的.lib 文件是 SAFETI-DIAGNOSTICS-LIB ABI 时、如何在 EABI 工程中使用 C2000-COFF?
目前没有、如果您希望 在 EABI 工程中使用 C2000-EABI、则目前您需要采取一些步骤自行将库迁移到 SAFETI-DIAGNOSTICS-LIB、因为目前没有正式发布的 EABI 版本
首先、请注意 C2000-F2807x 仅适用于 SAFETI-DIAGNOSTICS-LIB 和 F2837x 器件。 C2000Ware 中的库/诊断/下已提供了对 F2800x、F2838x 和 F28Px 器件的支持、供 EABI 使用。
它还将有助于熟悉 COFF 到 EABI 迁移的一般性知识。 有关详细信息、请参阅 C2000从 COFF 迁移到 EABI 页面。 这些步骤还假设您熟悉 C2000Ware 和 SDL 的结构。
步骤1. 在 SDL 目录的根目录中、有一个 CCS 文件夹(例如\libraries\diagnostic\f2837xd\ccs)、其中包含静态库工程的.projectspec、可用于重建 SDL .lib 文件。 首先将该工程导入到 CCS 中、并更新工程属性以将输出格式设置为 EABI。
请注意、工程有4个不同的编译配置、所有这些配置都需要更新为 EABI。 或者、如果您希望保留编译 COFF 库的功能、也可以为 EABI 添加新的构建配置、但您会希望更新归档器设置以为输出文件指定唯一的名称(例如 F2837xD_Diagnostic_STL_CPU1_DEBUG) _EABI .lib)
步骤2. SDL 依赖于 Driverlib 和 SFO (HRPWM 校准)库。 您同样需要这些库的 EABI 版本。 要做到这一点、最简单的方法是从已迁移对象的较新版本 C2000Ware 中获取这些对象。 高于 C2000Ware 3.00.00的版本应支持该功能。
步骤3. 移植库需要进行的大部分更改都与汇编代码相关。 上述迁移指南在"汇编代码更改"部分介绍了这些更新。 在库源文件夹中的.asm 文件中、您需要从函数标签中删除 COFF 下划线。 您可以将其彻底删除(例如、查找 _STL_CRC_COMPUTE 并替换为" STL_CRC_COMPUTE )或使用编译器的条件名称映射 __ TI_EABI___ 预定义符号。 这是一个看起来的示例 STL_CRC_s.asm :
.if __TI_EABI__ .asg STL_CRC_calculate, _STL_CRC_calculate .asg STL_CRC_calculateLowBytes, _STL_CRC_calculateLowBytes .asg STL_CRC_init, _STL_CRC_init .asg STL_CRC_reset, _STL_CRC_reset .endif .global _STL_CRC_calculate .global _STL_CRC_calculateLowBytes .global _STL_CRC_init .global _STL_CRC_reset
#ifdef __TI_EABI__ #pragma RETAIN(STL_HWBIST_restoreContext); #endif #pragma CODE_SECTION(STL_HWBIST_restoreContext, "hwbist"); void STL_HWBIST_restoreContext(void) { ... }
#ifdef __TI_EABI__ #define STL_HWBIST_REF_HANDLE_RESET_FXN __asm(" .ref STL_HWBIST_handleReset") #define STL_HWBIST_LCR_HANDLE_RESET_FXN __asm(" LCR STL_HWBIST_handleReset") #else #define STL_HWBIST_REF_HANDLE_RESET_FXN __asm(" .ref _STL_HWBIST_handleReset") #define STL_HWBIST_LCR_HANDLE_RESET_FXN __asm(" LCR _STL_HWBIST_handleReset") #endif
#ifndef __TI_EABI__ STA_User_spObj.startAddress = (uint32_t)_symval(&_stack); STA_User_spObj.endAddress = (uint32_t)_symval(&_STACK_END); #else STA_User_spObj.startAddress = (uint32_t)_symval(&__stack); STA_User_spObj.endAddress = (uint32_t)_symval(&__TI_STACK_END); #endif