主题中讨论的其他器件: SFRA、 C2000WARE
您好!
我正在使用 `C2000_SFRA_SDK_5_00_00_00 TIDM-02010 0013x`解决方案、目前正在尝试项目的 Ware_Motor 模块、根据编译定义启用 SFRA 后、会出现一些错误和警告。
我修复了错误、但 无法解决警告问题、这让我担心 SFRA 模块未正确启用并且可能损坏。
我为启用 SFRA 模块所做的工作:
编译定义(预定义符号)更改:
```
DAC128S_ENABLE -> DAC128S_ENABLE_N
SFRA_ENABLE_N -> SFRA_ENABLE
```
I 禁用了 DAC128S、因为它与 SFRA 共享 GPIO 引脚
为修复编译错误而进行的代码更改:
这两个错误在 更改编译定义后发生:
```
#20标识符"GPIO_28_SCIRXDA"未定义
#20标识符"GPIO_29_SCITXDA"未定义
```
为了解决这些问题、我在文件`sfra_settings.h`中进行了这些更改
```
diff --git a/src_control/drivers/include/sfra_settings.h b/src_control/drivers/include/drivers/include/sfra_settings.h
索引18d410c..c3d5d06 100644
--a/src_control/drivers/include/sfra_settings.h
++ b/src_control/drivers/include/sfra_settings.h
@@-119,8+119,8k @@Ω extern void configureSFRA (uint16_t plotOption、float32_t sfraISRFreq);
#define SFRA_GUI_SCIRX_GPIO 28
#define SFRA_GUI_SCITX_GPIO 29
-#define SFRA_GUI_SCIRX_GPIO_PIN_CONFIG GPIO_28_SCIRXDA
-#define SFRA_GUI_SCITX_GPIO_PIN_CONFIG GPIO_29_SCITXDA
+#define SFRA_GUI_SCIRX_GPIO_PIN_CONFIG GPIO_28_SCIA_RX
+#define SFRA_GUI_SCITX_GPIO_PIN_CONFIG GPIO_29_SCIA_TX
```
警告
通过 这些更改、可以正确编译项目。
但是、仍然存在三个警告
```
#10247-D 在没有段规范的情况下创建输出段"SFRA_F32_Data" tidm_02010_dmpfc_0013x C/C++问题
#827-D 指定符号'_SFRA_F32_collect'未定义 sfra_settings.h /tidm_02010_dmpfc_0013x/src_control/drivers/include 行60 C/C++问题
#827-D 指定符号'_SFRA_F32_Inject'未定义 sfra_settings.h /tidm_02010_dmpfc_0013x/src_control/drivers/include 第59行 C/C++问题
```
链接器文件问题
在尝试解决这些警告时、我发现链接器文件`sRC_DEVICE/f280013x_FLASH_lib.cmd`存在一些奇怪的问题。
在 其`.TI.ramfunc`中、要链接的第一个库是`est_trajstate_coff.lib`、它不是项目的一部分、但不会导致任何错误。
然后`sFRA_F32_TMU_COFF.lib`也已链接、但它也不是项目的一部分、并且不会引起任何错误。
在删除周围的`#if defined (SFRA_enable)`条件后、链接器现在最终抱怨 在链接期间无法找到文件。
但是 即使使用`#if defined (SFRA_enable)`、链接器也不应该已经在链接文件吗?
文件`sFRA_F32_TMU_eabi.lib`实际上是项目的一部分、因此我将链接文件从`x_coff.lib`更改为`x_eabi.lib`。
现在该工程再次编译而不会出现错误、但警告仍然存在。
拆解
此时我决定尝试使用调试器来实际运行它。
在调试器的帮助下、我能够在调用站点`__ SFRA_F32_collect`分解并步入函数。
函数 Δ 函数`__ SFRA_F32_collect ()`实际上位于地址0x0000A000`μ s 处。根据 TSM320F2800137数据表、该地址应为 LS1 RAM 的开头。
这是否意味着一切都好? SFRA 应该能够正常工作?
但是、这些警告实际上意味着什么呢?
我还注意到`了`_SFRA_F32_xxx `、而不是具有两个前导下划线的 Δ t__SFRA_F32_xxx`。
此时我处于完全损耗状态。 请帮助 澄清以下问题:
1) 1)我启用 SFRA 的方法是否正确?
2) 2)我修复编译错误的方法是否正确?
3) 3)为什么链接器文件.lib 文件名与项目中包含的.lib 文件不匹配? 链接器文件实际上是否重要、因为即使文件名不正确也会编译。
4) 4)如何修复这些警告?
非常感谢您的帮助、提前表示感谢。