主题:C2000WARE 中讨论的其他器件
工具/软件:
您好!
我正在处理一个多核工程、并使用了 CPU 2子系统上的 CLA。 我构建项目的方式基本如下:
- core1 (main.c)
- core2 (main.c、cla.cla、cla.h -桥接内核和 CLA)
- lib/(一堆 c 和 h 文件)-这是 core1和 core2项目的链接文件夹
- mem.h
(使用 CCS v12和 C2000Ware 5.04.00)
基本上、lib 实现了我的许多功能、旨在供任一内核和 CLA 使用。 我通过使用预处理器指令检查是否定义了 CPU1/CPU2/CLA 和闪存/RAM 等符号来支持变化、以基本上在编译时更改定义。 同样- mem.h 基本上别名使用相同概念的不同消息 RAM 的名称。 这种方法对我来说非常有用、因为我可以更改 CCSv12中的工程属性、从而从几乎相同的源(lib)中编译所有内容。
我遇到了将此功能扩展到将在 CLA 上运行的代码部分的问题。 我基本上想在仅 cla.cla 编译到.obj 文件时设置一个预定义符号。 例如、
我想根据是否定义了名为 CLA/CPU1/CPU2的符号来确定 mem.h 中的 CPU-CLA 消息 RAM 地址的别名-以便为 CPU 和 CLA 创建.obj 文件、然后这些文件链接到.out 文件。 (使用 CLA 进行编译时调用 cla_read 缓冲区、使用 CPU 调用 cpu_write_buffer)
另一个用例是检查 CLA 符号、在某些情况下使用 CLAMAth 库、否则可以使用在 CPU 上工作的替代功能。
我已经了解了 CLA 软件开发指南、多核开发指南。 优化编译器指南并有一个问题-我是否有办法仅为编译 CLA 代码设置符号定义。 如果 CPU 和 CLA 共享一些通用源代码(mem.h)、则可以获得2个.objs (分别使用 CPU 和 CLA 符号编译)、然后链接到可执行文件的其余部分)。
我意识到、跨内核共享源要容易得多、因为每个子系统的构建和链路是独立的。 是否有办法可以实现与 CLA 类似的功能?