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 存储库”

    我已经在我的服务器上使用适当文件夹中的以下内容设置了 GIT 存储库 我的子域的根目录 git mydomain com mkdir foo git cd foo git git init bare shared 这将使存储库可通过 URL
  • 切换 git 分支时如何处理 vim 缓冲区?

    因此 我在 vim 缓冲区中打开了大量文件 并且正在使用 git 处理功能分支 突然 我意识到我需要恢复到主分支来进行快速修复 提交后 我将 vim 会话保持打开状态并切换回 master 分支 但是 当我尝试从缓冲区加载我需要的文件时 我
  • 为什么 i2c_smbus 函数不可用? (I2C——嵌入式Linux)

    有很多参考使用i2c smbus 开发嵌入式 Linux 软件时在 I2C 总线上进行通信的函数 什么时候i2c smbus函数如i2c smbus read word data在软件项目中引用了 ARM8 处理器错误 例如 i2c smb
  • 作曲家转储自动加载和 git

    为了部署实用性 我们决定将供应商目录提交到 git 存储库中 一切正常 但是每次我们运行 Composer dump autoload 时 它都会修改以下文件 这非常烦人 因为它似乎并不代表文件的特定状态 每次重新运行它时它看起来都像一个随
  • 2017 年在 OS X 上从源代码构建 Apache Hadoop

    到目前为止 我已经分叉了 Git 存储库 https github com apache hadoop 我一直在寻找有关如何从源代码构建的信息 我尝试过以下命令 mvn package Pdist Dtar DskipTests 这导致了以
  • eGit 合并解决方案 - 使用您的副本

    我对 eGit 还是新手 我正在尝试弄清楚到底如何让 eGit 使用我的副本解决合并冲突 无需任何更改 我指的是 eGit Wiki 上的注释 http wiki eclipse org EGit User Guide Possible m
  • 如何使用开发分支中的一行命令更新本地 master 并重新设置其基准?

    假设我正在一个名为dev那就是跟踪master 如果我想更新我的主分支 我需要经常运行这一系列命令 git checkout master git pull git checkout dev git rebase i master 当我在
  • jquery 克隆组合框无法运行

    我有下表 当我按下第一个按钮时 我调用 jquery 来克隆第一行并添加新行 table class table table striped table bordered bootstrap datatable style font siz
  • 如何将 Mercurial 存储库克隆到已存在的目录中?

    我有一个客户的 Django 项目 正在本地开发 使用 Mercurial 进行版本控制 我将本地存储库推送到我的个人远程服务器 我保存所有项目的地方 然后当我部署它时 在任何 Web 服务器上 我从我的个人服务器克隆该存储库 这在大多数服
  • 如何为特定存储库配置 AWS CodeCommit 配置文件

    我有以下问题 作为我工作的一部分 我处理多个 AWS 账户 每个账户都有一个单独的 AWS CodeCommit 存储库和特定于账户的 IAM 用户 这会导致不同的用户 ID 我想找到一种方法来配置我的 ssh 以根据存储库访问不同的帐户
  • `.gitignore` 用于具有 Android 目标的 Ionic 项目

    我正在使用 Capacitor 创建一个 Ionic 项目 编辑 与 Cordova 相比更新的推荐框架 并添加 Android 作为目标 我已经能够构建应用程序并添加 Android 目标 这会在android using ionic b
  • 为什么“git diff”在“git add”之后报告没有文件更改

    这是为什么git diff认为没有变化 即使git status将它们报告为modified git status On branch master Your branch is ahead of origin master by 2 co
  • 从 bazaar 转换为 git 并同步它们的正确方法

    我在 bazaar 中有一个开发存储库 我想将其转换为 git 并保持同步 我需要这个 因为我将与不了解 bazaar 的人分享我的代码 首先我需要将我的 bazaar 存储库转换为 git 我用谷歌搜索了一下 发现this http as
  • 如何从现有的远程分支创建本地分支?

    我想从现有的远程分支 假设是远程 A 创建一个分支 然后将更改提交到存储库 我已使用以下命令从现有的远程 A 创建本地分支 git checkout remote A git branch master remote A 现在我已经使用以下
  • git commit 给出错误:空提交集已通过

    当尝试恢复到以前的提交时 我尝试了 git revert no commit 0766c053 HEAD 然而这给出了一个错误 empty commit set passed 问题 该错误是什么意思 以及出了什么问题revert命令 删除
  • Git Grep 颜色选项解释和/或比较

    我正在尝试自定义我的 Git 颜色 读完后文档 https git scm com docs git config 我找到了我想要设置的选项 除了 Grep 之外 一切都工作正常 我意识到 我过去并没有真正使用过它 我想用相同的调色板为其设
  • 为不同分支部署GitLab页面

    我正在使用 GitLab Pages 部署我的 React 应用程序 并且运行良好 这是我的gitlab ci yml Using the node alpine image to build the React app image nod
  • git merge 中“递归合并模式”旁边的这些符号是什么?

    当我使用git pull project name master为了更新我的核心文件 我在 递归合并 下得到了一堆绿色的加号和红色的减号信号 这些符号是什么以及它们的含义是什么 这是一个屏幕截图 感谢您的帮助 这是已更改的行数的近似值 优点
  • 使用 GIT_PS1_SHOWCOLORHINTS 自定义 __git_ps1 的颜色

    我尝试过的 我已更新我的提示以包含分支名称 git ps1 另外 我设置GIT PS1 SHOWCOLORHINTS 问题 提示正确显示 然而 树枝的颜色始终是绿色的 我预计肮脏的树枝会是红色的 文档指出 颜色基于 git status s
  • IntelliJ:将“在路径中查找”范围限制为在 VCS 中跟踪的文件

    我想在 IntelliJ 中搜索整个项目目录 但将范围限制为在 VCS 中跟踪的文件 即我通过执行得到的结果相同git grep 我看到下面有一个自定义范围Find In Path gt Scope gt VCS Scopes gt Def

随机推荐

  • 在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 标准外设库 最近 我