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.

[参考译文] TMS320F28P659DK-Q1:如何在 CLA 或 CPU 汇编代码中安全地使用 SysConfig 生成的宏(例如 EPWM_SYNC_BASE)?

Guru**** 2316200 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1518306/tms320f28p659dk-q1-how-to-safely-use-sysconfig-generated-macros-e-g-epwm_sync_base-in-cla-or-cpu-assembly-code

器件型号:TMS320F28P659DK-Q1
Thread 中讨论的其他器件:SysConfigC2000WARE

工具/软件:

尊敬的 TI 团队:

我正在使用 SysConfig 处理 C2000工程、并想board.h在 CLA 和 CPU/.asm.cla文件中引用由它生成的宏(例如、中的 EPWM_SYNC_BASE)。

目标是确保如果我在 SysConfig 中进行任何更新、这些更改都会正确传播到应用程序的所有部分(包括任何低级汇编代码)、而无需手动复制寄存器基地址等值。

但是、当我尝试使用时:

.cdecls C, LIST, "board.h"

...in 一个 CLA 源文件,我遇到解析错误,可能是由于board.h包含了其他driverlib.h与该.cdecls机制不兼容的标头(如)。 我知道.cdecls有严格的限制、只能包含简单的宏、而不能包含类型或复杂的 C 结构。

我的问题:

  1. 将 SysConfig 生成的宏(如 EPWM_SYNC_BASE )公开到 CLA 和/或 CPU 汇编文件的官方推荐方法是什么?

  2. 是否有 SysConfig 支持的机制 (或计划特性)来自动生成一个"CLA-SAFE (CLA 安全)"标头、#define地址和常量只有 s?

  3. 使用--preproc_only编译器选项board.h仅预处理和筛选出#define CLA 标头的是否被视为安全且受支持的权变措施?

非常感谢 TI 工具或 C2000团队提供的任何见解!

提前感谢、
Sebastia

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

    您好、Sebastia、  

    请查找您的问题的答案

    1. .cla 文件可以使用#include 包含与 C 类似的头文件。  C2000Ware 中提供了用于 CLA 的示例、其中包括.cla 文件中的头文件。  

    我不确定如何汇编文件。  

    2.没有计划这样的功能。  

    3.在尝试之前,您可以尝试选项1 ,看看它是否有效。

    此致

    Siddharth

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

    尊敬的 Siddharth:

    感谢您的答复。

    为了澄清一下、我使用的是汇编文件(.asm)、而不是.cla 文件。 因此、我无法#include直接使用该指令、这就是.cdecls通常使用该指令的原因。

    我尝试包括board.h,但它抛出了很多错误的汇编上下文。 到目前为止、我发现的唯一解决方案是手动将必要的宏从复制board.h到一个新文件中cla_shared.h、然后将它们打包在一个#ifdef __ASM_HEADER__块中。

    这种方法是可行的、但每当我在 SysConfig 中更改外设时、都需要手动更新。

    此致、
    Sebastian