当前位置: 首页 > news >正文

轻松玩转树莓派Pico之一、新手上路

目录

1、开发板介绍

2、芯片介绍

3、环境搭建

(1)sdk/example下载

(2)文档下载地址

(3)交叉编译器安装

4、编译example

5、运行example


1、开发板介绍

树莓派-Pico是树莓派基金会推出的第一款微控制器领域的树莓派低成本开发板,售价仅为4美元,它包括RP2040、2MB闪存和一个支持1.8-5.5V输入电压的电源芯片。RP2040是树莓派开发的全新芯片。

 

 RP2040有三个主要设计目标:

  • 高性能,尤其是整数工作负载
  • 灵活的I/O,使我们可以与几乎所有外部设备进行通讯
  • 低成本,以消除进入壁垒

我们最终获得了一个功能强大的芯片,Die面积仅为2平方毫米,采用40 nm工艺,封装尺寸为7×7 mm QFN-56封装中。

2、芯片介绍

RP2040具有以下功能:

  • 双核 Arm Cortex-M0 + 处理器,工作主频为133MHz
  • 264K片上SRAM
  • 通过专用 QSPI 总线支持最高 16MB 的片外闪存
  • DMA控制器
  • 内插器和整数除法器外设
  • 30个GPIO引脚,其中4个可用作模拟输入
  • 2个UART,2个SPI控制器和2个I2C控制器
  • 16×PWM通道
  • 1个USB 1.1控制器和PHY,具有主机和设备支持
  • 8 路可编程的IO(PIO)状态机,允许用户自定义和设计通信接口
  • 支持快速的低功耗模式切换
  • 具有UF2支持的USB大容量存储启动模式,支持拖放式编程

RP2040具有两个快速内核和大量片上RAM,是机器学习应用程序的绝佳平台。

 

3、环境搭建

树莓派官方基于RP2040提供了完整的C SDK、MicroPython、Fuzix系统,适合不同级别的玩家,可玩性非常高。

推荐新手上路使用C SDK和Ubuntu系统,官方C SDK采用CMake构建体系,熟悉之后操作也较简单,可应用的demo也较多。

先确定Ubuntu系统下是否已经安装CMake、python 、git等常用工具,如果没有可使用如下命令安装。

sudo apt install git cmake python3

(1)sdk/example下载

​git clone --recursive https://github.com/raspberrypi/pico-sdk
git clone --recursive https://github.com/raspberrypi/pico-examples

(2)文档下载地址

https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-c-sdk.pdf

(3)交叉编译器安装

可使用以下2种方法,推荐方式2,灵活性较高

1、自动安装

sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib

2、手工安装

交叉编译器下载:

https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2

下载完成后,在ubuntu命令行下解压/opt目录下:

sudo tar xvf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt 

解压成功后,编译/etc/environment文件,在文件末尾加上:

:/opt/gcc-arm-none-eabi-10-2020-q4-major/bin

并运行source命令使修改生效。

souce /etc/environment

4、编译example

(1)Pico采用sdk和应用分离思路,编译应用前需先配置Pico SDK路径,进入pico-example目录,配置输入如下命令设置PICO_SDK路径,路径请根据个人情况修改

export PICO_SDK_PATH=/home/share/samba/pico/pico-sdk

(2)生成makefile:按照cmake的习惯,在根目录下创建build目录,并在build目录下输入cmake ..命令,生成makefile。

mkdir build && cd build && cmake ..

如果按照上面的流程正常操作,会出现如下成功提示。

PICO_SDK_PATH is /home/share/samba/pico/pico-sdk
PICO platform is rp2040.
-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-gcc
Build type is Release
Defaulting PICO target board to pico since not specified.
Using board configuration from /home/share/samba/pico/pico-sdk/src/boards/include/boards/pico.h
-- Found Python3: /usr/bin/python3.8 (found version "3.8.10") found components: Interpreter
TinyUSB available at /home/share/samba/pico/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040; enabling build support for USB.
cyw43-driver available at /home/share/samba/pico/pico-sdk/lib/cyw43-driver
lwIP available at /home/share/samba/pico/pico-sdk/lib/lwip
-- Configuring done
-- Generating done
-- Build files have been written to: /home/share/samba/pico/pico-examples/build

(3)在build目录下输入make命令生成可执行文件。耐心等待几分钟,会在build目录下生成所有example的可执行文件

 其中uf2后缀文件为Pico特有的USB存储器模式下可执行文件。

(4)错误分析

错误1:未配置PICO_SDK路径

CMake Error at pico_sdk_import.cmake:55 (message):
  SDK location was not specified.  Please set PICO_SDK_PATH or set
  PICO_SDK_FETCH_FROM_GIT to on to fetch from git.
Call Stack (most recent call first):
  CMakeLists.txt:4 (include)


-- Configuring incomplete, errors occurred!

错误2:未配置交叉编译器

PICO_SDK_PATH is /home/share/samba/pico/pico-sdk
PICO platform is rp2040.
CMake Error at /home/share/samba/pico/pico-sdk/cmake/preload/toolchains/find_compiler.cmake:28 (message):
  Compiler 'arm-none-eabi-gcc' not found, you can specify search path with
  "PICO_TOOLCHAIN_PATH".
Call Stack (most recent call first):
  /home/share/samba/pico/pico-sdk/cmake/preload/toolchains/pico_arm_gcc.cmake:20 (pico_find_compiler)
  /usr/share/cmake-3.16/Modules/CMakeDetermineSystem.cmake:93 (include)
  CMakeLists.txt:6 (project)


CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_ASM_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

5、运行example

Pico开发板提供了一个按钮和一个LED,该按钮可在引导时进入USB大容量存储模式(也可作为常规输入)。

在该模式下我们可以直接将可执行文件拖入该USB大容量存储器中,Pico即会自动重启进入运行模式。

(1)按住按钮,同时通过usb连接至PC;可在PC上发现一个“RPI-RP2”的磁盘。

每次进入USB大容量存储模式后,自动清空存储文件,进入默认状态。

(2)当前运行的example如blink,可执行文件位于pico-examples/build/blink目录下。

(3)拖动blink文件至RPI-RP2磁盘下,Pico自动重启。

(4)开发板上LED指示灯开始闪烁,example正常运行。

相关文章:

  • 目前我国网络安全人才市场状况
  • Redis源码解读之用RedisAe实现一个简单的HTTP服务器
  • 【极简python】第一章 print与变量
  • HAL库与Cubemx\rt-thread Nano系列教程-01-新建HAL工程及移植RT-Nano到Alios Developer Kit
  • 论文阅读_知识蒸馏_MobileBERT
  • No2.搭建基本的资源端解析token(资源服务端)
  • Vue入门【四】-- 事件机制与双向数据绑定
  • 小型超市管理系统的设计与实现 毕业设计-附源码011136
  • R语言缺失时间序列的填充:补齐时间序列数据中所有缺失的时间索引、使用na.locf函数将缺失值NA替换为前序时刻最近的值
  • 26.STM32 SPI通信接口
  • [JS] node.js 入门
  • 卸载mysq并重新安装教程
  • 合并后 ETH 的供应变化以及是否会出现通缩
  • 装饰器模式【Java设计模式】
  • Qt 学习(四) —— qrc资源文件介绍与使用
  • 【Leetcode】101. 对称二叉树
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【React系列】如何构建React应用程序
  • Apache的80端口被占用以及访问时报错403
  • HashMap ConcurrentHashMap
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript设计模式系列一:工厂模式
  • SQL 难点解决:记录的引用
  • Vue UI框架库开发介绍
  • 记一次删除Git记录中的大文件的过程
  • 技术胖1-4季视频复习— (看视频笔记)
  • 前端攻城师
  • 双管齐下,VMware的容器新战略
  • 我从编程教室毕业
  • 译米田引理
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (十一)图像的罗伯特梯度锐化
  • (正则)提取页面里的img标签
  • (转)一些感悟
  • *2 echo、printf、mkdir命令的应用
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .gitignore文件设置了忽略但不生效
  • .NET 分布式技术比较
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET命令行(CLI)常用命令
  • /proc/stat文件详解(翻译)
  • [ 第一章] JavaScript 简史
  • [2023-年度总结]凡是过往,皆为序章
  • [C++]AVL树怎么转
  • [DNS网络] 网页无法打开、显示不全、加载卡顿缓慢 | 解决方案
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间
  • [Head First设计模式]策略模式
  • [js] 正则表达式
  • [json]定义、读写
  • [linux]资料收纳