记RP2040使用Arduino+platformio开发配置

前言

这几天买了一个 rp2040开发板,想用Arduino框架+platformio开发,踩了一些坑记录一下。

1. 上传固件超时解决

rp2040 有俩种模式 BOOTSEL 和普通运行程序模式,在 BOOTSEL 下

其会被识别成一个硬盘,挂载的电脑上,可以通过 在上电状态下按下BOOTSEL进入,当然也可以通过 按住 BOOTSEL 然后按下 RST ,再松开 BOOTSEL 实现,简化插拔步骤。

这个时候将固件拖拽到挂载的分区,就可以实现固件更新,并且完成后会自动 reset。

而在普通模式下,这个设备会被挂载到 /dev/ttyACM0, 可以通过串口进行监听。

这些步骤都是在 IDE中自动实现的,在下载固件过程中,

platformio会自动打开1200波特率,等待一秒后关闭,这个操作可以将 pico板子进行rst, 然后进入bootsel模式,等效

python3 复制代码
import serial
import time
port = '/dev/ttyACM0'  # 请确认端口名
serial.Serial()
baudrate = 1200      # 请尝试与PN532模块匹配的波特率

s = serial.Serial(port, baudrate, timeout=5)
time.sleep(1)
s.close()

具体上传是用

shell 复制代码
"~/.platformio/packages/tool-rp2040tools/rp2040load" -v -D ~/Documents/PlatformIO/Projects/pico_test/.pio/build/pico/firmware.bin

实现的。

timeout也是这一步导致的,因为权限问题,可以通过修改udev来开放权限
vi /etc/udev/rules.d/99-rp2040.rules

新增规则:

bash 复制代码
SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE="0666"

规则生效:

bash 复制代码
sudo udevadm control --reload-rules
sudo udevadm trigger

然后重新插拔 开发板即可解决上传失败问题。

2. rp2040 多核性能的调用

rp2040 有俩个核心,可以通过以下代码进行验证

cpp 复制代码
#include <Arduino.h>

void setup() {
  Serial.begin(115200);
  while (!Serial);


  // Core 0 上的代码
  Serial.println("Core 0: Hello, I'm running on Core 0");
}

void loop() {
  // Core 0 上的主循环代码
  Serial.println("Core 0: Main loop running...");
  delay(1000);
}

void setup1() {
    // 这里初始化仅由核心1使用的资源,例如一个专用的PIO或PWM
    Serial.println("Core 1: Hello, I'm running on Core 1");
}

void loop1() {
    Serial.println("Core 1: Hello, I'm running on Core 1");
    delay(100); // 核心1的延时不会阻塞核心0

}

而实际使用中我发现,总是不能执行 setup1 和loop1 函数,由于默认使用的 arduino sdk模式是 Arm提供的(arudino-mbed),没有对rp2040 进行优化。

我应该使用 arudino-pcio

platformio.ini配置:

shell 复制代码
[env:pico]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower
upload_protocol = picotool

这样就可以是属于到pico-arudino框架了,其github连接:

https://github.com/earlephilhower/arduino-pico

相关推荐
小成202303202654 小时前
Linux高级02
linux·开发语言
mounter6254 小时前
【硬核前沿】CXL 深度解析:重塑数据中心架构的“高速公路”,Linux 内核如何应对挑战?-- CXL 协议详解与 LSF/MM 最新动态
linux·服务器·网络·架构·kernel
++==4 小时前
Linux 进程间通信与线程同步技术详解:IPC 机制、线程 API、同步工具与经典同步问题
linux
LCMICRO-133108477464 小时前
长芯微LPS123完全P2P替代ADP123,高性能、低压差的线性稳压器
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·线性稳压器
特长腿特长5 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5385 小时前
Linux环境变量
linux·运维·服务器
pluvium275 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
无级程序员5 小时前
centos7 安装 llvm-toolset-7-clang出错的问题解决
linux·centos
守护安静星空6 小时前
esp32开发笔记-工程搭建
笔记·单片机·嵌入式硬件·物联网·visual studio code
CHHC18806 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器