CMSIS 库是否应该包含在版本控制中? [复制]

2023-12-04

通常,我曾经在版本控制中包含芯片供应商 (ST) 提供的设备特定标头和源以及 CMSIS-Core 标头。数量不多,也没有更新的习惯。我使用STM32微控制器,但我不使用立方体框架 or the 标准外设库.

最近,我需要使用CMSIS-DSP库。 CMSIS-DSP 库附带大量头文件和源文件。我决定使用预编译库 (libarm_cortexM4lf_math.a),大约 5.4 MB。但现在我开始质疑它们是否应该进入版本控制。

我知道在版本控制中管理二进制文件不是一个好主意。但据我所知,CMSIS更新并不频繁。所以我很困惑。这些是我能想到的选项:

  1. 在存储库中包含 CMSIS 标头和静态二进制文件:如果我决定不更新这些库,这可能是个好主意。 CMSIS本身并不经常发布新版本,即使发布了新版本,也可能不需要在项目中更新它。或者,在我的项目中更新它之前,我可能会跳过一些版本。
  2. 在存储库中包含 CMSIS 头文件和源文件:与选项 1 类似,但是git会更乐意使用文本文件而不是 5+ MB 的二进制文件。但我不确定让第 3 方代码更改来污染我的源历史记录是否是一个好主意(选项 1 遇到同样的问题,但仅限于头文件)。
  3. 不要在存储库中包含 CMSIS:这会产生一个干净的存储库,但是在克隆项目后我必须手动将库文件复制到项目目录中。我还可以为 CMSIS 指定系统范围的安装文件夹并将其添加到项目中,但这会导致“在我的机器上运行”情况。
  4. 找到一种自动获取库的方法:第一个想到的是git 子模块。但是,我不确定获取整个 CMSIS 存储库是否有效,因为我需要重组它,因为有很多不需要的文件,包括预编译的二进制文件。我想我需要某种后处理脚本?

这里最好的方法是什么?还能有其他选择吗?

这里有一个类似的问题:在源代码管理中存储第三方库看来人们对这个话题有不同的看法。但我相信在嵌入式 C 项目中使用 CMSIS 是一个具体案例,值得单独提出问题。


使用 CMSIS 的 IMO 嵌入式项目应包含所使用的版本。 CMSIS 不像 C 标准库那样标准化,而且新版本通常与旧版本不兼容。

链接的帖子已经有 12 年历史了,(IMO)回购协议的规模远不如当时那么重要。现在嵌入式程序员使用的计算机的存储、内存、计算能力和上行连接带宽都无法与12年前使用的计算机相比。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMSIS 库是否应该包含在版本控制中? [复制] 的相关文章

  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 为什么“git描述-dirty”在描述干净结帐时添加“-dirty”后缀?

    我刚刚发现 dirty选项git describe看起来它应该做一些非常有用的事情 即在输出中附加一个后缀git describe当工作树脏时 但是在我的一些存储库上似乎并非如此 git status On branch 8 30 noth
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • SSL 适用于浏览器、wget 和curl,但不适用于 git

    我有一个网站 用于托管 redmine 和几个 git 存储库 这非常适合 http 但我无法使用 https 进行克隆 即 git clone http mysite com git test git 工作正常 但是 git clone
  • 将 Visual Studio 在线 Git 存储库集成到 Android Studio 1.0.2

    我正在使用 Visual Studio Online 进行开发过程 我想将我的 Android Studio 1 0 2 代码集成到其中 但是 据我所知 Android Studio 没有 TFS 插件 这就是为什么我想使用 Git 进行源
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • 合并 BPM 图表的最佳实践

    我们在 Java 环境中使用 Alfresco 活动图 这些图是有版本的 我们确实使用 GIT 我们经常会遇到合并分支的合并冲突 解决这个问题确实很痛苦 因为我们必须比较文件的文本内容来检查差异 有时 重新应用更改比合并更轻松 是否有合并此
  • 使用 GitHub,在添加现有存储库时如何推送所有分支?

    我创建了一个新的 GitHub 存储库 我想将现有的存储库放在那里 我按照说明操作 cd existing git repo git remote add origin email protected cdn cgi l email pro
  • 如何恢复已删除的远程分支

    我们的远程主分支被删除 我有主存储库的本地副本 但它已经过时了 我可以通过将最后一个已知的提交哈希值插入 URL 来查看 github 中的分支 但未能成功恢复它 我尝试了几个步骤来恢复它 git reset hard 16deddc05c
  • 如何在 SVN 中分支单个文件?

    分支的颠覆概念似乎专注于创建整个存储库的 不稳定 分支 并在其上进行开发 是否有一种机制可以创建单个文件的分支 对于用例 请考虑具有多个特定于平台的源代码 c 实现的通用头文件 h 这种类型的分支是永久性的 所有这些分支都将不断发展 偶尔会
  • Lotus Notes/Domino 开发版本控制的最佳实践

    请分享您如何对 Lotus Notes Domino 开发进行版本控制 我想将所有脚本 视图 自定义表单 脚本库等放入我们的 SVN 存储库中 半自动方法也被接受 即 如果我找到一种方法来获取一个文件中表单的所有事件脚本 并能够将其作为整个
  • 合并后 Git 分支和提交历史记录

    我正在开发一个项目 单独 对于我开发的每个功能 我都会创建一个新分支 处理该功能 然后将其合并到 master 中 所以通常我不会同时在两个不同的分支上工作 也不会在一个分支上工作时接触master 当我合并一个分支时 我看到 使用gitx
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 在种子项目上构建时如何组织 git 存储库

    我正在基于从 github 克隆的种子项目 MEAN io 构建一个网站 如何将这些文件与我自己的文件分开 由于该种子提供了广泛的文件框架 因此我自己的文件分布在整个项目中 我希望能够从种子中提取更新 但不能将其与我添加的文件混合 我知道我
  • 如何在源代码管理中存储 Visual Studio 的调试配置

    Visual Studio 的调试配置存储在 user文件是用户特定的并且传统上被源代码管理忽略 我对工作目录参数感兴趣 我需要它在程序员的机器上保持一致 并且它具有以下价值 outDir而不是默认的 ProjectDir 我怎样才能解决这
  • Git撤销本地分支删除

    我刚刚删除了错误的分支 并进行了一些我需要的实验性更改git branch D branchName 如何恢复分支 您可以使用git reflog http git scm com docs git reflog查找分支最后一次提交的 SH
  • Git - 使用过滤器分支删除带有空变更集的提交

    如何使用 git filter branch 删除没有变更集的提交 我使用以下方法重写了我的 git 历史记录 git filter branch tree filter rm r f my folder f HEAD 效果很好 但现在我有
  • 如何使用 git 找到一个分支中但不在另一个分支中的所有提交?

    我有两个分行master and live Master是发展 分支并包含尚未准备好进入的提交live 如果在master需要进入的分支live树枝然后他们被樱桃采摘master to live 有时会做出承诺live分支然后是 樱桃摘入m
  • 如何在 git 中将我的功能分支变基到开发分支,尽可能减少冲突?

    我的功能分支已超过大约 30 次或更多提交 与此同时 在开发分支中 其他开发人员还推出了一些其他功能 因此 每次在开发中发布新功能时 我都会被要求 将开发分支重新建立到我的功能分支上 解决冲突 如有 继续在您的功能分支中开发 问题 第二步就

随机推荐

  • 在Java中如何在没有任何缓冲的情况下读取文件?

    我正在解决 Programming Pearls 第 2 版第 1 栏中的问题 其中一个问题涉及编写一个程序 该程序仅使用大约 1 MB 的内存来将文件的内容存储为位数组 其中每个位代表是否或文件中不存在 7 位数字 由于 Java 是我最
  • Octave - 内存不足或维度对于 Octave 的索引类型来说太大

    我知道有 3 个问题具有类似的异常消息 不幸的是 没有一个问题得到解答 评论也无法解决我的问题 我在 Windows 10 系统上使用 64 位版本的 Octave 4 2 1 总共有 16 GB RAM 运行时大约有 11 GB 可用空间
  • 如何在Android中检查wifi是否真正连接

    我希望我的 Android 设备连接到 WiFi 热点 我创建了一个新的wificonfiguration并将其添加到wifimanager this wificonfiguration has NetworkId 然后我调用该函数wifi
  • Object.assign(...as) 更改输入参数

    Object assign as 似乎改变了输入参数 例子 const as a 1 b 2 c 3 const aObj Object assign as 我解构一个对象文字数组作为分配函数的参数 我省略了console log声明 这是
  • cmd 提示符和 win32_process 上的 ERRORLEVEL 延迟扩展的差异

    cmd V ON c dir c
  • 为什么我的程序接受的整数太多而输入的整数太少?

    我想了解为什么当我将 SIZE 定义为 2 时 程序允许我输入 3 个整数 当它返回数组时 它只返回两个数字 而不是我输入的三个数字 感谢您的帮助 C How to Program Exercises 2 23 include
  • 我可以在 NDK 应用程序中使用本机库(安装在 Android 堆栈中)吗?

    从这篇文章 http marakana com forums android examples 49 html 我已经看到在 NDK 的帮助下构建的应用程序做了以下事情 1 gt 它编译所有c代码 在jni文件夹内 并制作保留在中的库lib
  • Laravel 雄辩查询相关表的总和

    我有一张桌子users and posts有柱子user id and 帖子浏览量 In 帖子浏览量我保留帖子显示次数的信息 现在 在查询中我想得到user总和为帖子浏览量他的所有帖子 我尝试做这样的事情 User where id gt
  • 正则表达式从字符串中提取电子邮件

    我想知道通过使用正则表达式是否可以从以下字符串中提取电子邮件 以下 RE 模式是 与所有字符串匹配 它对某些字符串效果很好 但不是全部 我想匹配与电子邮件模式匹配的所有字符串 包括所有域 例如 some url com 或 some url
  • 使用 findOne 更新 mongoDB 文档中的子字段并保存

    我正在尝试更新 mongoDB 文档中的特定子字段 并决定首先找到有问题的对象 然后保存更新的对象 由于某种原因 保存选项似乎忽略了我的更改 我的集合中有一个对象 它符合以下模式 var tschema mongoose Schema a
  • 将 mysql 查询从 php 网页保存到 excel 文件

    我在 mysql 数据库中有一个表 我想要做的是在 php 页面中 运行 select 语句并将结果输出到 excel 文件中 我看过很多教程并尝试过它们 但是这些教程将网页的内容输出到 Excel 文件中 我只想要 mysql 表数据和标
  • catch (...) 在 throw 上起作用吗?没有对象?

    当堆栈上方没有正在处理的未决异常时 C 标准规定以下代码应该发生什么 try throw catch cerr lt lt Caught exception lt lt endl 没有物体的投掷会被接住吗 来自 2003 C 标准 15 1
  • 谷歌地图显示:没有问题

    我正在尝试设置一个 Google 地图 该地图将在单击链接时显示 然后在单击另一个链接时隐藏 一切工作正常 除了当我从 display none 显示地图时 它无法正常显示 我读到有关使用 google maps event trigger
  • 字符串中的多个引号

    在Python中我将如何编写字符串 BOS 我尝试输入 BOS 但这给出了输出 BOS 在前面添加反斜杠 您可以使用三引号 BOS 你做了什么 BOS 也很好 您在输出中得到反斜杠 但它们不是字符串的一部分 gt gt gt a BOS g
  • JavaScript 日期函数在 Firefox 浏览器中返回“Date {Invalid Date}”

    面临一个问题JavaScript Date功能 returns Date Invalid Date 在 Firefox 浏览器中 但在 Google Chrome 中工作正常 My Input is new Date Sat Jan 01
  • 将velocityInView与UIPanGestureRecognizer结合使用

    我有一个自定义滑块类型的对象 我希望使其更有用 目前我使用UIPanGestureRecognizer and translationInView使其发挥作用 它工作得很好 但我想要某种速度 让它感觉更有用 我已经尝试了一些方法 但不太清楚
  • 测量线程的上下文切换时间

    我想计算上下文切换时间 并且我正在考虑使用互斥体和条件变量在两个线程之间发出信号 以便一次只有一个线程运行 我可以用CLOCK MONOTONIC测量整个执行时间和CLOCK THREAD CPUTIME ID测量每个线程运行的时间 那么上
  • 如何在 IBM MQ JMS 接口上使用 JMS 属性?

    我正在使用带有 MQ 6 0 2 的 MQ JMS 接口 似乎只支持预定义的属性 而不支持任意的属性 例如 我可以正确地getJMSCorrelationID getJMSPriority 等等 但是 当我在发件人上设置任意属性时 mess
  • 如何查看Google Play服务版本?

    在我的应用程序中 我需要检查 Google Play 服务版本 安装在用户设备中 是否可以 如果是的话 我该怎么做 我找到了简单的解决方案 int v getPackageManager getPackageInfo GoogleApiAv
  • CMSIS 库是否应该包含在版本控制中? [复制]

    这个问题在这里已经有答案了 通常 我曾经在版本控制中包含芯片供应商 ST 提供的设备特定标头和源以及 CMSIS Core 标头 数量不多 也没有更新的习惯 我使用STM32微控制器 但我不使用立方体框架 or the 标准外设库 最近 我