RT-Thread环境搭建
rtt技术分享
之前superthomas大佬曾移植rtt到esp32c3上github issues,并发布readme供参考。但是我在安装环境以及编译下载时还是出现了一些问题,因此我将这些问题汇总起来归纳为本篇博客
最终成果:完成rtt在esp32c3芯片上开发、调试工作所需要的环境搭建,使用wsl2(Ubuntu22.04)作为系统环境,在windows上使用mobaxterm作为调试监视器
所需软件:wsl2,mobaxterm,usbip
搭建环境
基本软件的获取
wsl2,ubuntu22.04可以在微软商店中找到,也可使用命令行下载。wsl2默认安装在c盘,对系统盘占用忧虑的可以参照这篇博客
mobaxterm,我们使用mobaxterm作为串口监视器来调试程序
usbipd-win,wsl2默认不能访问usb设备,需要这个软件做转发,这样就可以使用串口下载、调试芯片
本教程需要一定的网络环境来从wsl2访问github,请自行配置
环境的搭建
参考git action的指示搭建环境action
下面是我的环境搭建过程:
配置git
git config --global user.name "用户名"
git config --global user.email "邮箱"
初始化仓库
/usr/bin/git init /home/YOURPATH/rt-thread/rt-thread
/usr/bin/git remote add origin https://github.com/RT-Thread/rt-thread
cd /home/YOURPATH/rt-thread/rt-thread
git fetch
仓库获取完毕后可以更改开发分支,我选在默认的master分支上进行开发
//看一下远程分支
git branch -r
//选择分支
git switch origin/master
安装工具链
我的工具链安装脚本放在/home/MYPATH/rt-thread/rt-thread
下面了,各位可以更改路径,脚本在环境配置完成后就可以删除
//获取脚本
wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh
//执行脚本
chmod 777 install_ubuntu.sh
./install_ubuntu.sh
echo "export PATH=~/.env/tools/scripts:$PATH" > ~/.env/env.sh
//安装RISCV工具链
wget -q https://github.com/espressif/crosstool-NG/releases/download/esp-2022r1-RC1/riscv32-esp-elf-gcc11_2_0-esp-2022r1-RC1-linux-amd64.tar.xz
sudo tar xf riscv32-esp-elf-gcc11_2_0-esp-2022r1-RC1-linux-amd64.tar.xz -C /opt
//看一下是否安装成功,安装成功后需要记一下解压位置
/opt/riscv32-esp-elf/bin/riscv32-esp-elf-gcc --version
//安装乐鑫的工具链
pip3 install esptool
source ~/.env/env.sh
到这里工具链和环境就安装完成了,可以执行ipf.py
以及esptool.py
来查看是否安装成功。若没有安装成功可以参考我的环境配置修改
vim ~/.bashrc
//着重看前三个路径
export PATH="~/.espressif/python_env/idf5.3_py3.10_env/bin/:~/esp/esp-idf/tools:~/.local/bin:/home/lzx/.env/tools/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$PATH"
//wsl2的环境会把windows的环境给加上,所以会比较长
vim ~/.env/env.sh
export PATH=~/.env/tools/scripts:~/esp/esp-idf/tools:~/.local/bin:/home/lzx/.env/tools/scripts:/usr/local/sb in:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/sbin:/usr/l ocal/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/e/VMware/VMware Wor kstation/bin/:/mnt/c/Program Files/Basler/pylon 5/Runtime/Win32/:/mnt/c/Program Files/Basler/pylon 5/Runtime /x64/:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPow erShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/m nt/c/Program Files/dotnet/:/mnt/c/mingw64/bin:/mnt/c/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn /:/mnt/c/Program Files/Microsoft SQL Server/100/Tools/Binn/:/mnt/c/Program Files/Microsoft SQL Server/100/DT S/Binn/:/mnt/c/Program Files/nodejs/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/Common Files/OMRON_SE NTECH/GenICam/v3_2/bin/:/mnt/c/Program Files/Common Files/OMRON_SENTECH/StApi/v1_1/:/mnt/c/Program Files (x8 6)/Common Files/OMRON_SENTECH/GenICam/v3_2/bin/:/mnt/c/Program Files (x86)/Common Files/OMRON_SENTECH/StApi/ v1_1/:/mnt/c/DeltaTau/PowerPMACSim/opt/ppmac/MinGW/bin:/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ ODBC/170/Tools/Binn/:/mnt/c/Program Files (x86)/Microsoft SQL Server/150/Tools/Binn/:/mnt/c/Program Files/Mi crosoft SQL Server/150/Tools/Binn/:/mnt/c/Program Files/Microsoft SQL Server/150/DTS/Binn/:/mnt/c/Program Fi les (x86)/Windows Kits/8.1/Windows Performance Toolkit/:/mnt/d/Windows Kits/10/Windows Performance Toolkit/: /mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/Program Files/usbipd-win/:/mnt/e/Calibre2/:/mn t/d/texlive/2024/bin/windows:/mnt/c/Python3.10.4/Scripts/:/mnt/c/Python3.10.4
配置完成后别忘了source
一下
编译测试
编译之前需要指定RISCV工具链的位置
cd ~/YOURPATH/rt-thread/rt-thread/bsp/ESP32
vim rtconfig.py
11 if CROSS_TOOL == 'gcc':
12 PLATFORM = 'gcc'
13 EXEC_PATH = r'/opt/riscv32-esp-elf/bin' //在这里指定
编译测试
scons
此时可以正常编译
配置串口
详细操作可参考CSDN
在windows cmd执行usbipd list
查看串口,若不能分辨就将串口拔出再执行一次。之后执行usbipd bind --busid <BUSID>
来绑定设备。最后执行usbipd attach --wsl --busid <BUSID>
来将串口转发至Ubuntu。此时在wsl2中执行lsusb
就可以查看串口设备了(如果没有lsusb命令可以自行下载)。
由于使用usbipd只能将串口从win转发至wsl,因此在程序烧录和监视功能中只能选一个。除非使用linux的串口监视设备
因此当需要切换功能时需要在windows cmd中执行usbipd detach --busid <BUSID>
来解除设备占用,此时就可以通过mobaxterm访问串口了
mobaxterm访问串口教程网上很多,此处不赘述,但需要注意的是,串口通信序速率为rtt官方指定的115200
烧录程序
根据readme,我们的烧录命令如下
esptool.py -b 115200 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x0 path/to/your/bootloader.bin 0x08000 path/to/your/partition-table.bin 0x010000 path/to/your/rtthread.bin
这里按照你的设置修改相应路径即可,默认情况下,bootloader.bin
以及partition-table.bin
放在bsp/ESP32_C3/builtin_imgs/下,rtthread.bin
位于bsp/ESP32_C3下
监视程序
监视程序可以通过mobaxterm查看,也可以通过wsl2下其他的串口监视程序查看,具体操作放在配置串口一章了,各位有问题可以放在评论区