参考文档
OpenDeepWiki - AI-Powered Knowledge Management Platform
下载tnyusb代码
git clone https://github.com/hathach/tinyusb.git
cd tinyusb
git checkout master
编译工程
cd examples/device/cdc_msc
mkdir build
cd build
# 指定目标板卡,例如 STM32F4
cmake .. -DBOARD=stm32f4_discovery
make
1. 执行编译提示 cmake 版本较低 (> 3.20)
升级cmake
sudo apt remove cmake
sudo snap install cmake --classic
2. 再次执行编译提示 找不见cmake
确认开发环境
cat /etc/os-release
ubuntu看下cmake安装位置
whereis cmake
可以看出是通过 snap 安装的,但 /usr/bin/cmake
没链接过去
建立符号链接
sudo ln -sf /snap/bin/cmake /usr/bin/cmake
确认是否生效
cmake --version
3. 再次执行编译提示 找不见指定的项目
查找了支持的项目
找不见编译器
查看是否安装
arm-none-eabi-gcc --version
安装编译器
sudo apt update
sudo apt install gcc-arm-none-eabi
4. 再次执行编译提示 找不见 CMSIS Device 包
查找tinyusb官网,提供了 CMSIS Device 支持包资源
Dependencies - TinyUSB
根据 cmake 配置的路径,下载 STM32F4 CMSIS Device 包到对应位置
5. 再次执行编译提示 找不见 STM32 HAL 驱动源码
查找tinyusb官网,提供了 STM32F4 HAL 驱动 支持包资源
Dependencies - TinyUSB
下载 STM32F4 HAL 驱动
6 .继续编译 提示缺少 ARM CMSIS core
提示缺少 ARM CMSIS core
查找tinyusb官网,提供了 ARM CMSIS core 驱动 支持包资源
Dependencies - TinyUSB
下载 ARM CMSIS core
git clone https://github.com/ARM-software/CMSIS_5.git
若下载速度慢可下载 gitee 镜像
git clone https://gitee.com/mirrors/CMSIS_5.git
根据 cmake 配置的路径,下载代码到对应位置
6 .继续编译 链接报错
可以看出是 从 ELF 转换为 BIN/HEX 文件 时出错,这是因为 objcopy 版本与目标架构不匹配
在 ARM 工具链中,必须使用 arm-none-eabi-objcopy,
但 TinyUSB 默认调用系统的 /usr/bin/objcopy
(属于 x86 平台)
a. 先确认 arm-none-eabi-objcopy 有没有正确安装
b. 再确认项目cmake中指定的工具
c. 确认上述两步没问题,那就清除后重新构建
到此可以看到编译成功