使用 git 管理自动生成的微控制器代码的编辑、修补和合并

问题描述 投票:0回答:1

我们使用的工具 (STM32CubeMx) 提供 GUI 来配置嵌入式微控制器,并根据该配置生成完整的 C 项目。这包括 C 文件、头文件和其他文件。这些文件非常复杂,大多数开发人员都使用 GUI 工具来生成。

这些文件生成后,有时您需要手动编辑某些部分。然而,这是一个例外:大多数时候,您要么使用 GUI,要么将代码放入未生成的新文件中。

我们的工作流程是:

  1. 手动创建项目
    project
  2. 在一个名为
    mx
    的单独文件夹中,使用 GUI 生成代码(一个新项目,我们从不构建)
  3. 选择性地将需要的文件从
    mx
    复制到
    project
    (我们只复制我们实际需要的文件)
  4. 根据需要编辑这些文件(在
    project
    下)
  5. 如果需要,请使用 GUI 更新
    mx
    ,并将 [*] 将新生成的文件合并到
    project

第 5 步很棘手,因为我们想要对这些文件进行任何更改,但不丢弃第 4 步中所做的更改。我们也不想复制我们选择不复制的文件。

我相信 git 可以用来做到这一点,因为这本质上是一个

git merge
。但是,
git merge
旨在处理同一树中的文件,而不是具有通用性的子目录。

我们如何使用git来支持这个过程?管理自动生成、选择、编辑和合并周期的最佳方式应该是什么?我愿意接受任何推荐的工作流程。

git merge embedded microcontroller auto-generate
1个回答
0
投票

虽然这不是您想要做的,但我仍然想告诉您经过多年的尝试和错误,我们最终是如何做到的:

  1. 启动项目时使用 CubeMX。生成您需要的驱动程序和 HAL 文件(目前)。例如,您可以在 CubeMX 文件夹中对生成的项目进行版本控制。这可以作为参考。
  2. 将生成的必要代码复制到您的项目中。将其保存在专用文件夹中,例如,您可以将其命名为
    bsp
    。拥有您愿意按照自己的方式做的任何事情的所有权,例如,编写您自己的 SPI 驱动程序。您仍然可以在后台使用 ST HAL。
  3. 如果您需要重新生成,请使用 CubeMX 重新创建项目并将结果修改带回您的项目。如果您保留第 1 步中的原始内容,将更容易找到更改的内容。

最终,它会得到回报。 ST提供的驱动程序通常比较臃肿,有时还包含错误。恩智浦也是如此。一旦设计完成,您也很少修改硬件功能,除非您使用开发套件并使用相同的硬件执行不同的项目。

我们按照你的方法尝试过,但是维护成本不值得。尝试修改自动生成的代码并仍然保留重新生成该代码的能力根本行不通。完全拥有您的驱动程序也是有益的,因为您可以更好地了解您的硬件。

© www.soinside.com 2019 - 2024. All rights reserved.