RP2040入门(一)配置开发环境
树莓派的RP2040是一个比较有特色的单片机,除了价格便宜以外,PIO这个可编程组件可以实现很多传统MCU不借助CPLD或者FPGA很难实现的功能。
想把RP2040学起来用起来,第一步就是配置开发环境。目前配置RP2040的环境已经比较简单了,但是仍然有坑,所以写一篇文章记一下。
- Windows环境
Windows下配置RP2040开发环境,最好用的并不是官方推荐的VSCode+插件,而是VisualGDB。
- 安装Visual Studio2022,社区版即可,选桌面C++开发就足够了。
- VisualGDB - Serious cross-platform support for Visual Studio 下载VisualGDB并安装。
- 和谐文件[分享]VisualGDB和VisualKernel的破解-资源下载-看雪-安全社区|安全招聘|kanxue.com,最新的在116楼。注册选Custom或者更高版本。
- 安装注册完以后,新建工程里面直接就可以选树莓派PICO,按照提示下载对应的包即可。
新建工程的最后一步是选择调试器,如下:
选OpenOCD,调试器请按照自己有得选,比如JLink,后面会单独说明,频率的话不确定可以用默认,不稳定可以改成低的。
调试协议选SWD。是否每次都编程Flash,可以按照自己需要弄。
复位设备建议都选上。官方Windows开发环境
- 树莓派官方提供了一个一键安装包:https://github.com/raspberrypi/pico-setup-windows/releases/latest/download/pico-setup-windows-x64-standalone.exe
- 这个安装包会安装VScode、Cortex-Debug - Visual Studio Marketplace、Arm GCC 套件、OpenOCD、RP2040 SDK等必要的内容,自动配置好环境变量
- VSCode需要配置好settings.json和launch.json才可以开发调试,后面会单独说明。
- Linux环境全自动安装:
RP2040的默认开发环境是Linux,可以用脚本自动安装,也可以全手工配置。 - 下载wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
- chmod +x pico_setup.sh
- 运行./pico_setup.sh
- 这个脚本做的基本上和上面Windows安装包的事情差不多。
- Linux环境手工安装:
- 手工安装稍微有点费时间,可以参考getting-started-with-pico.pdf的2.1配置SDK、2.2安装工具链,注意Ubuntu自带的没有ARM提供的新。
- 按照5.1下载OpenOCD并编译
- 按照6.2安装GDB
- 按照7.1安装VSCode
- VSCode的settings.json和launch.json
- settings.json
{
// These settings tweaks to the cmake plugin will ensure
// that you debug using cortex-debug instead of trying to launch
// a Pico binary on the host
"cmake.statusbar.advanced": {
"debug": {
"visibility": "hidden"
},
"launch": {
"visibility": "hidden"
},
"build": {
//"visibility": "hidden"
},
"buildTarget": {
//"visibility": "hidden"
}
},
"cmake.buildBeforeRun": true,
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}
- launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Pico Debug",
"cwd": "${workspaceRoot}",
"executable": "${command:cmake.launchTargetPath}",
"request": "launch",
"type": "cortex-debug",
"servertype": "openocd",
//"gdbPath" : "gdb-multiarch",//如果是Ubuntu apt安装的就是这个
"gdbPath" : "arm-none-eabi-gdb",//如果是从ARM下载的GCC工具链,就是这个
"device": "RP2040",
"configFiles": [
"interface/jlink.cfg",//使用jlink配置文件,配置文件下面会有说明
"target/rp2040.cfg"
],
"svdFile": "${env:PICO_SDK_PATH}/src/rp2040/hardware_regs/rp2040.svd",
"runToEntryPoint": "main",
// Work around for stopping at main on restart
"postRestartCommands": [
"break main",
"continue"
],
"showDevDebugOutput": "raw",
}
]
}
- 配置调试器
我试过了四种调试器
- Jlink和JlinkOB,Windows下面请用USB驱动工具,将JLink的驱动改为WinUSB,要不然OpenOCD不认识。
配置文件要确认是SWD:
transport select swd
adapter speed 1000
- CMSIS DAP Link,需要更新固件到2.1,1.x的不支持multidrop。
- FT2232H,网上一百出头那个,配置文件用这个:
新建一个ft2232h-swd.cfg放在%localappdata%\VisualGDB\EmbeddedDebugPackages\com.sysprogs.arm.openocd\share\openocd\scripts\interface\ftdi
adapter driver ftdi
ftdi vid_pid 0x0403 0x6010
ftdi channel 1
ftdi layout_init 0x0008 0x000b
ftdi layout_signal SWD_EN -data 0
transport select swd
adapter speed 3000
- Linux下面如果找不到调试器,那么需要配一下udev规则
- 首先lsusb找到你的调试器,记下VID、PID
- 在/etc/udev/rules.d下面新建一个对应的规则文件,比如就叫90-ft2232.rules,内容如下:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", GROUP="skogkatt", MODE="0666"
其中用户组什么的改成你自己的 - sudo udevadm control --reload或者重启生效
- Jlink和JlinkOB,Windows下面请用USB驱动工具,将JLink的驱动改为WinUSB,要不然OpenOCD不认识。