本帖最后由 lb8820265 于 2023-10-17 22:13 编辑
1. PicoW简介
PicoW就是Cortex-M0+内核的RP2040芯片加上一个CYW43439蓝牙WiFi双模芯片的核心板。主频最高可到133Mhz,内置264KB的 SRAM和2MB的板载内存,板子外形和相关外设如下图所示。
2. C语言环境搭建
网上大多是Pico W的python语言环境的搭建,但是据我了解在实时性和功能完整性上C/C++语言是要远远好于python语言环境的,所有我选择使用C/C++语言来开发Pico W,好在官方有教程。主要参考的文档为《getting-started-with-pico》和《connecting-to-the-internet-with-pico-w》。
Windows系统安装开发环境
Pico可以在多个操作系统中进行开发,但还是习惯在Windows下进行开发,在该GitHub仓库的介绍文档连接中下载安装包,直接双击安装,Pico的例程和VSCode开发环境也会一并进行安装。并且会生成一个专属Pico的VSCode环境的快捷方式,在开始菜单中“Pico - Visual Studio Code”。打开该VSCode会自动加载Pico的例程。
编译工程
首先确认编译工具选择“pico ARM GCC”或者“GCC 10.3.1 arm-nome-eabi”,VSCode软件最下面可以查看,函数库是默认使用的Pico硬件,WiFi和蓝牙相关例程是没有编译的,而且blink程序在PicoW上面也是不可以用的,可以在任意一个配置文件中添加使用PicoW设置和WiFi配置,例如在例程根目录的“CMakeLists.txt”文件中添加如下设置,SSID和Password需要根据实际的WiFi名和密码修改。
set(PICO_BOARD pico_w)
set(WIFI_SSID lb8820265)
set(WIFI_PASSWORD lb8820265)
在软件左边栏选择“CMake”,在最上方点击编译按钮可以编译所有工程,也可以在单个工程右边点击编译按钮,编译单个工程。
以blink程序为例,编译后的文件如下。
烧录工程
Pico可以像ST的NUCLEO开发板一样将生成的文件直接拖入到文件夹中就完成了烧录。不过Pico需要在插入USB的时候先按着板子上的“BOOTSEL”按钮。使用USB线连接板子和电脑,然后就出现一个新的盘符,像一个U盘一样,将编译生成的“*.uf2”文件复制到新的盘符里面就可以了,会自动运行,看到LED一闪一闪了。
3. 新建工程
Pico有两种方式新建工程,一种是通过命令行的方式,另一种通过自动工程工具“pico project generato”生成。工具网址,下载后该工具不能直接运行,需要使用命令启动,在系统搜索栏中搜索“Pico-Developer Command Prompt”运行。
转入进入到下载的软件目录中,例如:
cd pico-project-generator-master
输入如下指令运行软件:
py pico_project.py --gui
进入到软件界面,“Board Type”选择“Pico W”,其他的按需选择,最下面的“Create VSCode project”不需要勾选,因为软件自动生成的VSCode工程文件不好用,会导调试不成功。这里作为演示勾选如下配置。
从例程中将“.vscode”文件夹复制到刚刚新建的工程中,如下。
使用VSCode软件打开新建工程的文件夹,按照上面的方法进行编译,成功会生成“.elf”文件,如下。
4. 在线调试
Pico W支持SWD在线调试,需要完成OpenOCD的编译,在Windows环境下为了能编译OpenOCD又需要MSYS2软件。
MSYS2软件安装
在官网下载并安装该软件,然后打开MSYS软件,是一个类似终端的界面,然后进行输入如下指令进行环境的配置:
pacman -Syu
pacman -Su
pacman -S mingw-w64-x86_64-toolchain git make libtool pkg-config autoconf automake texinfo
mingw-w64-x86_64-libusb
下载编译OpenOCD
克隆树莓派仓库里的OpenOCD并且编译。这里要注意一定要通过指令克隆下来,不能在网页上直接下载下来。
git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1
cd openocd
./bootstrap
./configure --disable-werror
make -j4
进入src文件夹,运行编译出来的文件,正确的结果如下。
制作Picoprobe
烧录工具可以使用Pico板子制作,也可以使用官方的Raspberry Pi Debug Probe工具,这里使用Pico通过烧录固件来制作一个Picoprobe,固件可以在官方GitHub
下载源码然后进行编译再烧录,但是我觉得没有必要,也可以直接在官网下载“picoprobe.uf2”文件,该文件在帖子最后也有下载。
给Pico烧录该固件后,将两个Pico连线如下。
使用杜邦线连接如下。
运行调试
选择“hello_serial”例程为例进行在线调试。点击左边栏的调试按钮,再点击绿色三角形,之后会在顶部弹出选择框,分别选择“Pico Debug”与“hello_serial”,就可以直接进入调试环境了,打开串口工具就可以看到输出的“Hello, world”字符串如下。
后续如果想要选择其他的例程进行调试,就点击最下面状态栏的[hello_serial]进行选择。最下面的状态栏指示栏如下。