littlebot
Published on 2025-04-03 / 3 Visits
0

【源码】基于C语言的Ruuvi固件开发项目

项目简介

本项目为Ruuvi Firmware version 3,基于Nordic SDK 15构建,采用Ruuvi和外部仓库作为子模块。目前项目处于开发阶段,为beta版本,预计不会有重大变更。

项目的主要特性和功能

  1. 集成Jenkins进行持续集成,SonarCloud进行代码质量检测,涵盖代码缺陷、代码异味、测试覆盖率等多维度检测。
  2. 依赖gcc - arm - none - eabi、Nordic相关工具(mergehex、nrfutil、Command Line Tools、nRFconnect)、python等,保障开发、编译、测试和部署的顺利开展。
  3. 支持Ceedling进行单元测试,PVS - Studio进行代码静态分析,Artistic Style进行代码风格检查,doxygen进行文档生成。
  4. 支持使用Segger Embedded Studio进行开发编译,也能使用ARMGCC进行Jenkins构建。
  5. 遵循BARR - C:2018编码标准,通过Artistic Style工具强制统一代码风格。
  6. 使用Ceedling实现单元测试,可生成Gcov测试覆盖率报告,Travis集成单元测试,测试失败则构建失败,Gcov结果会推送至SonarCloud。

安装使用步骤

前提条件

  1. 安装 gcc - arm - none - eabi - 7 - 2018 - q2 - update,并确保 nRF5_SDK_15.3.0_59ac345/components/toolchain/gcc 中的 Makefile.posixMakefile.windows 指向该路径。
  2. 安装 gitpython 3.7 或更高版本及 pip 包管理器
  3. 安装 Nordic mergehexNordic nrfutilNordic Command Line ToolsNordic nRFconnect
  4. 确保计算机或手机有蓝牙无线电,用于接收ruuvi的广播。

可选条件

  1. 建议使用 Ruuvi Dev kit board 和 USB 电源及数据线,或其他 SWD 编程器和适配目标板的电缆。
  2. 若要验证更改,需安装 CeedlingPVS - Studio AnalyzerArtistic Styledoxygen

操作步骤

  1. 下载 SDK:下载 Nordic SDK15.3(.8GB)并安装在项目根目录,若同时开发多个 nRF 项目,可使用符号链接。
  2. 更新子模块:运行 git submodule sync --recursivegit submodule update --init --recursive 从主仓库更新模块。
  3. 统一代码风格:使用符合 BARR - C:2018 的编码风格,运行 make astyle 统一代码风格。
  4. 编译与测试
    • Segger Embedded Studio:安装 nRF Connect for Desktop 并按说明设置 Segger Embedded Studio。通过 File -> Open Solution -> ruuvi.firmware.c.emProject 打开项目,选择目标板项目,设置编译配置(DebugLong LifeRelease),通过 Build -> Build <project name> 或按 F7 键编译,连接开发板后通过 Debug -> Go 或按 F5 键进行调试。
    • ARMGCC:在仓库顶级目录运行 make variantName(如 make ruuvitag_b)编译单个变体。构建分发二进制文件时,使用 Makefile 脚本确保可重复构建。
  5. 烧录固件:连接开发板(nRF52 DevKit 和 RuuviTag Development Shield 或 nRF52 DevKit 和 TC2030 - CTX - NL 6 - pin Cable),导航到 ruuvi.firmware.c/src/targets/<board name>/armgcc,运行 make 编译应用程序,运行 ./package.sh 生成完整的固件 HEX 和 ZIP 文件,使用 nrfjprog 命令烧录固件。
  6. 静态分析
    • PVS:从 Viva64 获取许可证和软件,按 ruuvi.docs.com 中的说明安装,运行 make 进行 PVS Studio 扫描,结果输出到 doxygen/html/fullhtml
    • Sonar scan:Travis 将结果推送到 SonarCloud.IO,若要在自己的代码上运行 Sonar Scan,需分叉项目并在自己的账户下设置 SonarCloud。
  7. 运行单元测试
    • Ceedling:运行 ceedling test:all 执行单元测试。
    • Gcov:运行 ceedling gcov:all utils:gcov 生成 Gcov 报告,报告位于 _build/artifacts/gcov

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】