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.

[参考译文] AM2634-Q1:具有锁步的双仪表组的 FreeRTOS 工程结构。

Guru**** 2796425 points

Other Parts Discussed in Thread: AM2634-Q1, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1621679/am2634-q1-freertos-project-structure-for-dual-cluster-with-lock-step

器件型号: AM2634-Q1
主题: SysConfig 中讨论的其他器件

查看包含 4 个内核的 AM2634-Q1 的 FreeRTOS 使用示例。
我的工程要求是将控制器配置为具有两个集群的锁步模式。

因此,为什么项目结构如此复杂? 需要构建两个工程、重复的 syscfg 文件、生成的文件是重复的。

多个链接器文件。 在 SDK 和 FreeRTOS 构建过程中链接的动态文件太多。

使用 CMake 这种方法很难获得构建结构。

是否有更好的方法来管理项目结构而不重复?  

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

    尊敬的 Vijay:

    很抱歉我在出差时反应迟缓、无法早点回来。 让我帮你解决这里的困惑。

    SBL 用于将器件配置为锁步模式。 SBL 的 SysConfig 文件将包含相关参数、如下所示

    SBL 将在引导应用程序之前处理所有锁步配置。

    2.不需要维护 core_0-0 和 core0-1 或 core1-0 和 core1-1 工程的重复副本。 您只需维护/构建 core-0-0 和 core1-0 工程(每个集群 1 个)。

    SDK 为每个集群使用单独的 syscfg 文件和单独的链接器文件、因为不同的内核将有自己的存储器映射和自己的复位矢量。

    除此之外、这些库是静态预编译库、仅在最终应用程序构建期间链接。 由于 SDK 本身并不依赖于 CMAKE 基础架构、因此可能需要进行文件夹/子文件夹级别的更改。 SDK 使用以下默认 makefile、并且不能直接用于 CMAKE 基础架构。 这将需要在您的构建流水线中对 SDK 文件进行额外的重新结构化和移动。

    此致、
    Shaunak

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

    感谢您的回复!

    因此、基本上这意味着、总共有三个项目:

    • SBL
    • 集群 0
    • 组别 1

    以及用于管理组合群集应用程序的另一个总括项目。

    上述所有项目都有各自的项目 SYSCFG 间隔。

    1. 所有 syscfg 文件中是否应该有任何通用的 cfg?(clk、mem 等?)
    2. 能否在两个集群中配置相同的外设?

    是否有迁移到 CMake 样式构建的指南?

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

    是、通常设置将涉及以下工程:

    1.SBL(次级引导加载程序)

    • 负责配置器件引导流程并为 R5F 集群启用锁步模式。
    • 在加载应用程序映像之前执行系统初始化。

    2.集群 0 应用程序 — 为 R5FSS0-0(集群 0 主内核)构建。
    3.群集 1 应用程序 — 为 R5FSS1-0(群集 1 主内核)构建。

    [引述 userid=“687527" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1621679/am2634-q1-freertos-project-structure-for-dual-cluster-with-lock-step/6259255

    上述所有项目都有各自的项目 SYSCFG 间隔。

    1. 所有 syscfg 文件中是否应该有任何通用的 cfg?(clk、mem 等?)
    [/报价]

    在锁步模式下、辅助内核 (R5FSS0-1 和 R5FSS1-1) 作为锁步配套运行、不会运行独立的软件。 因此、每个群集只需要构建一个应用程序。 SBL 在启动期间为两个集群加载应用程序映像。
    不严格要求额外的“伞式工程“、除非构建系统需要一个来协调构建多个映像。


    每个项目 (SBL、Cluster0、Cluster1) 通常都有自己的 SysConfig 文件、因为配置范围不同。

    但是、某些配置应在各个工程之间保持一致:

    可匹配的通用配置

    • 器件时钟配置(除非 SBL 特意修改)
    • Pinmux 配置(如果共享)
    • 链接器使用的存储器区域定义
    • 外设实例使用假设

    不同的 USB 配置

    • CPU/仪表组选择
    • 中断路由
    • 外围设备所有权
    • 链接器存储器分配
    • RTOS 配置
    是否可以在两个集群中配置相同的外设?

    一般而言:

    • 外设应仅由一个集群拥有和配置。
    • 两个集群不应独立配置同一个外设实例、因为这可能会导致寄存器冲突。
      但是、如果需要、另一个仪表组仍可通过 IPC 或共享存储器机制访问数据

    典型的方法包括:

    • 为每个集群分配特定外设
    • 使用共享存储器或 IPC 实现集群之间的协调
    迁移到 CMake 样式构建的任何指南?

    目前、MCU+ SDK 构建系统基于 GNU make、并且 SDK 示例围绕该基础设施构建。 目前、SDK 中没有提供基于 CMake 的官方构建框架。 但是、想要与 CMake 工作流集成的客户通常会执行以下操作之一:

    1.使用 CMake 作为顶层构建编排程序,并为每个项目调用 SDK makefile 文件。
    2.将示例 makefile 中的包含路径、编译器标志和库链接复制到自己的 CMake 脚本中。

    SDK 示例可用作以下内容的参考:
    •所需的编译器标志
    •库依赖项
    •包含路径
    •链接器命令文件

    此致、
    Shaunak