- 通过
stm32cubeMx
生成cmake
工程; - 通过
wsl(ubuntu)
编译并下载固件;
- 双击
*.ioc
通过STM32CubeMX
打开,正常配置工程,注意Toolchain/IDE
需要设置为cmake
;然后生成代码; - 打开
wsl ubuntu
,通过cd /mnt/path_to_project
进入工程路径; - 在
wsl ubuntu
中通过code .
打开工程; - 在
vscode
终端执行cmake .
生成Makafile
文件; - 在
vscode
终端执行make
编译工程; - 在
vscode
中按快捷键Ctrl Shift B
触发.vscode/tasks.json
中定义的任务,进行固件下载;
# or download by this command
openocd -f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg -c "program f103rc_blink.elf verify reset exit"
wsl
中不能直接使用主机的USB
设备,需要通过USBIPD-win共享USB
设备;
# windows powershell
usbipd list # get the usb devices
usbipd bind --force --busid <busid> # 参考注意4
usbipd attach --wsl --busid <busid> # attach the JLink to wsl
usbipd detach --busid <busid> # detach the JLink from wsl
# wsl ubuntu
lsusb # check if the jlink is shared succssful
wsl
编译下载过程中使用到了各种库,需要提前安装:
# wsl ubuntu
sudo apt install build-essential git make cmake
sudo apt install gcc-arm-none-eabi
sudo apt install openocd # fw download
sudo apt install usbutils # lsusb
# install usbip tool
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*/usbip 20
JLink
共享到WSL
后,主机不能正常使用了
进入设备管理器,可以看到设备名不再是`JLink`,而是`USBIP shared device`,右击卸载设备并选择删除驱动,然后重新拔插`JLink`即可;
usbipd: warning: USB filter 'USBPcap' is known to be incompatible with this software; 'bind --force' will be required.
这个警告表明系统中安装了 USBPcap(一个 USB 数据包捕获工具),它与 USBIPD 存在兼容性问题。USBPcap 是一个用于捕获 USB 通信数据的工具,通常与 Wireshark 一起使用。
方案一:卸载 USBPcap;
方案二:attach 前先 usbipd bind --force --busid <busid>
- 参考 CMakeLists.txt 。注意:头文件只需要写到文件夹,源文件不支持通配符
*.c
; - 修改 CMakeLists.txt 后需要重新执行
cmake .
。
- 如果通过
linux
编译cmake
工程,并且需要打印浮点值的情况下,需要使能_printf_float
选项:
# 在 CMakeLists.txt 中添加如下配置
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE -u _printf_float)
- 如果通过
linux
下通过JLinkRTTLogger
一直收不到日志,有可能是JLink
驱动太高了,卸载后重新安装即可:
# https://www.segger.com/downloads/jlink/
sudo apt purge jlink # uninstall
sudo dpkg -i JLink_Linux_V766d_x86_64.deb # install
JLinkRTTLogger # recv RTT log