项目简介
本项目基于C++语言构建,用于测试STM32平台上的UAVCAN驱动。UAVCAN是专门为无人机和其他嵌入式系统设计的通信协议,该测试项目能验证和测试UAVCAN驱动在STM32平台上的正确性和性能,对开发无人机和其他嵌入式系统意义重大,可确保通信协议正确实现和性能优化。
项目的主要特性和功能
- 硬件初始化:通过
init()
函数初始化STM32硬件环境,包含时钟系统、GPIO和UART等。 - 节点任务处理:
main()
函数主循环处理节点运行任务,包括数据收发、错误处理和节点状态管理。 - CAN通信:可访问CAN总线,支持CAN帧的发送和接收,能配置过滤器。
- 时间同步:基于UAVCAN协议实现时间同步功能,同步网络中节点的时间。
- 日志记录:能记录节点运行状态和错误信息。
- 并发处理:通过线程和中断处理机制,处理节点运行时的并发任务和中断事件。
- 错误处理与调试:处理运行时错误并输出调试信息。
- 节点状态管理:管理节点状态,包括启动、停止和状态检查等操作。
安装使用步骤
复制仓库
bash
cd libuavcan
git submodule update --init
若该仓库作为项目的git子模块使用,更新时需使用--recursive
。
构建与安装(仅用于Linux应用)
bash
mkdir build
cd build
cmake .. # 默认构建类型为RelWithDebInfo,如有需要可覆盖
make -j8
sudo make install
交叉编译(使用CMake)
假设已有工具链文件Toolchain-stm32-cortex-m4.cmake
:
bash
mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-stm32-cortex-m4.cmake
make -j8
开发环境相关
构建调试版本并运行单元测试
bash
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make
测试输出可在构建目录下的libuavcan
中找到。注意,单元测试必须实时执行,否则可能产生误报。
使用Eclipse开发
bash
cmake ../../libuavcan -G"Eclipse CDT4 - Unix Makefiles" \
-DCMAKE_ECLIPSE_VERSION=4.3 \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_COMPILER_ARG1=-std=c++11
需根据实际环境调整../../libuavcan
路径,且Eclipse项目生成目录不能是源目录的子目录。
提交Coverity Scan构建
bash
export PATH=$PATH:<coverity-build-tool-directory>/bin/
mkdir build && cd build
cmake <uavcan-source-directory> -DCMAKE_BUILD_TYPE=Debug
cov-build --dir cov-int make -j8
tar czvf uavcan.tgz cov-int
之后将生成的存档上传到Coverity,也可通过推送到coverity_scan
分支触发自动检查。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】