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.

[参考译文] CCSTUDIO:为不同的内核构建通用 PRU 代码

Guru**** 2943030 points

Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1655442/ccstudio-build-common-pru-code-for-different-cores

部件号: CCSTUDIO
Thread 中讨论的其他器件: TMDS64EVM

我正在使用 CCS 版本 12.8.1.00005 进行开发、编写在 TMDS64EVM 上运行的代码。

我有一个工作的 PRU C 和汇编代码、它充当以太网驱动程序、在 ICSSG1 PRU0 上运行、可通过 R5F Arm 内核来回传递数据。 我想添加一个具有或多或少相同 PRU 功能、但接下来部署在 ICSSG1 PRU1 内核上的第二个通道。 实际上、代码中的唯一区别是对特定于内核的寄存器偏移量和我将用于与 R5F 内核交换数据的共享存储器位置偏移量的引用。

我想添加特定于构建的预处理器指令、该指令除了对寄存器和共享内存偏移的引用外、允许我的 C 和汇编代码相同、类似于以下类似内容:

#ifdef PRU0

#define SHARED_MEM_LOC PRU0_SHARED_MEM_LOC

#else // PRU1

#define SHARED_MEM_LOC PRU1_SHARED_MEM_LOC

#endif

...

void main()

  *(int *) shared_MEM_LOC = 1;

}

 

我的问题是:

1) 如何 在 CCS 12 构建设置中创建“PRU0“或“PRU1“预处理器定义

2) 如何从 CCS 执行一次“右键点击并重新编译工程“命令、但如何执行两次构建工具链、一次用于“PRU0“预处理器定义、一次用于“PRU1“预处理器定义、这样最后我会创建两个唯一的.out 文件和 HEX2BIN 输出文件、每个 PRU 一次?

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

    您好、Seth。

    在这一边的 Crunchtime — 我将离开办公室七月和八月。 因此、回答会很简短。 像 JC 这样的人将继续存在、但他们的工作不包括公共 e2e 支持、因此当他们有空闲时间时、他们会提供任何意见。

    可以使用 rpmsg_echo_linux 作为在 C:
    https://github.com/TexasInstruments/open-pru/blob/main/examples/rpmsg_echo_linux/firmware/main.c

    makefile 使用 DFLAGS 传递:
    https://github.com/TexasInstruments/open-pru/blob/main/examples/rpmsg_echo_linux/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/makefile

    在 CCS 中、compilerBuildOptions -dprU0 可以这样做。 效果
    https://github.com/TexasInstruments/open-pru/blob/main/examples/rpmsg_echo_linux/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/example.projectspec

    若要对我的操作方式进行逆向工程、请尝试将 rpmsg_echo 工程导入 CCS。 我怀疑 CCS 会在导入 2 个单独的工程时创建同一源文件的 2 个副本、而不是使用共享的源文件。 也许可以在 CCS 中使用共享源文件并链接到 2 个不同的工程、如果需要、我可以将您发送给 CCS 团队进行注释。

    此致、

    Nick

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

    是的、请让 CCS 团队称重。 我考虑将代码拆分为两个单独的项目、但除了初始设置之外还有足够的通用性、这不是理想的方法。 现在、我只是在 2 或 3 个位置手动更新 PRU 编译器和链接器设置以构建适当的目标、还有一些“ifdef PRU0“宏洒在 C 和汇编语言中。 到目前为止一切顺利、但对于长期解决方案、理想的做法是使用内置/自动方法来简化两个 PRU 的构建 — 也许在命令行批处理脚本中复制 CCS 构建工具链是 唯一真正的长期解决方案?

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

    实际上、您可以将文件添加到特定工程中。 可以选择将文件复制到中、或直接链接到文件。 您能否尝试使用另一个 PRU 工程(每个 PRU 内核一个工程)、并将源文件作为第二个工程的链接添加?

    另一种选择是总是像我在 OpenPRU 存储库中那样使用 makefile(无需实际复制/粘贴完整的 OpenPRU 基础结构,但可以将其用作您自己工作的模板)。

    会将您发送到 CCS。

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1) 如何 在 CCS 12 构建设置中创建“PRU0“或“PRU1“预处理器定义

    我假设您正在使用 CCS 工程? 假设是这样、您可以在工程编译属性中的“Predefined Symbols“下执行此操作:

    2) 如何从 CCS 执行一次“右键点击并重新编译工程“命令、但让编译工具链执行两次、每次执行一次为“PRU0“预处理器定义、然后再次执行一次为“PRU1“预处理器定义、这样、最后我有两个唯一的.out 文件和每个 HEX2BIN[为每个 PRU]输出文件创建一次?

    我建议 为该工程为每个 PRU 创建单独的构建配置。 一个可以定义“PRU0“、另一个可以定义“PRU1“。 然后、只需点击一下、即可使用选项构建所有配置。 这将背对背构建两种配置。

    https://software-dl.ti.com/ccs/esd/documents/users_guide_12.8.0/ccs_project-management.html#build-configurations

    谢谢

    Ki