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下其他的串口监视程序查看,具体操作放在配置串口一章了,各位有问题可以放在评论区