你好,恩智浦社区!
我正在尝试建立一个新的资源库,以便在 MCXN947 上编译代码。目标是建立一个支持 MCXN947 的多个板变体的单一存储库(在我的项目中被称为 " dcm "、dcm1212 " 和 " mcxn947-eval ")。最后一个(mcxn947-eval)以 MCXN947 的 FDR 板为基础,上面附有子板。目前只有它能编译,所以如果您正在研究这个问题,不用担心其他的。
在我当前的文件夹结构中,我希望有(见所附项目):
-我的应用程序层的应用程序文件夹
-ecu 文件夹,用于将不同的板变体抽象到应用程序中(根据通过 CMake 预设选择的变体编译一个子文件夹)
-我的部分库子模块的模块文件夹,包括用于抽象应用程序 sdk 的通用 HAL 层
-mcuxpresso-sdk 文件夹包含我的 sdk
对于 SDK 文件夹,我使用了 Github mcuxsdk-manifests 并对 yml 进行了自定义,使其仅提取 MCXN 系列和我感兴趣的元器件。对于查看所附项目的任何人来说,在 mcuxpresso-sdk 文件夹内进行简单的"west update" 就能得到我需要的东西。
我现在似乎很难弄明白如何设置 CMake 系统,让所有内容都能很好地编译在一起。我的大多数项目都使用 CMake 库的概念,以干净、漂亮的方式添加每个子文件夹。但是,我无法使用 SDK 做到这一点。
目前,我的最佳解决方案是手动添加 SDK .c我需要在 ecu\ sources\ mcxn947-eval\ 板 CMakeLists 里面的文件。老实说,这样做非常麻烦,而且不能完全奏效(例如,在 peripherals.c 中初始化 FlexComm硬件故障)。我看了恩智浦社区的一些帖子,但似乎都不适合我。我在使用它们时总是会遇到一些编译或配置问题。
注意:由于最终的生产版本(dcm 和 dcm1212)将在自定义板上运行,所以我正在尝试摆脱 " 板定义的 " 设置。这就是为什么 mcxn947-eval 目前不使用 SDK 中的 frdm 板设置的原因。
我认为你可以使用这种结构。
repo/
│
├─ app/ # 应用层(与主板无关)├─ ecu/ │ ├─ dcm/ │
├─ dcm1212/ │ └─ mcxn947-eval/ # 基于 FRDM 的自定义变体
│ ├─ 模块/ │ └─ hal_generic/
│ │ mcuxpresso-sdk/ # 从西部拉出
SDK CMake 系统已经知道哪些文件属于每个元器件。您不应手动列出这些内容。
BR
哈利
谢谢你,哈里。
我同意这是最适合我的项目的结构。我的问题是不知道如何在项目根目录下创建 CMake,以正确添加和编译 application/ecu/modules 文件夹和 sdk 文件夹。
对于我手动编写的 ony,我只需通过 CMake"add_subdirectory" 进行编译,其中每个子文件夹都将包含各自的 CMake,以创建 CMake 库。然后,我通过"traget_link_libraries" 在 CMake 根目录中将它们链接在一起。我举了这两个 CMake 的例子,就像我现在一样(稍微简化了一点,这样我们就不用担心不同的版本目标了)。
我缺少的是如何将SDK添加到这个整体版本系统中,并确保我的ecu文件夹可以访问它。
我刚测试过。
结构是
BR
哈利
我们采用了拖放功能,使用户更容易向项目中添加源代码。该功能目前是一项试验性功能,用户必须在分机设置中启用。用户只需将源代码放入项目,项目的 CMakeLists.txt 文件就会自动更新。
要启用该功能:
对于硬件故障,请检查时钟、引脚复用器等是否存在冲突。
BR
哈利
您能否分享该示例中 CMakeList.txt 根目录的内容?
事实上,@Harry_Zhang,您是否介意分享一下您在这里设置的整个项目?
感谢你们迄今为止提供的所有帮助!
我刚刚测试了我下载的这个示例。
您可以下载它。
BR
哈利