上手 Raspberry Pi Pico
什么是 PICO
Raspberry Pi Pico 是树莓派推出的一块基于 Arm Cortex-M0+ 内核的 MCU 的开发板,使用的 MCU 是树莓派自己研发的 Arm Cortex-M0+ 双核 RP2040。长这样子:

可以看到板子上外设非常少,可以说是 RP2040 的最小系统板,除了引出来的 IO,板子上有 USB、一个 BOOTSEL 按键、一个LED,一个用于存储固件的 Flash,然后就没有了。
先看看板子
上电,使用一根 micro USB 接口连上电脑:

上电后,看板子,一点反映都没有,灯没亮,看了下原理图,LED 是由 MCU IO 控制,不是直接接到电源,不是用作电源指示灯。有可能这板子没有控制 LED 的出厂程序,如果是这样的话,没反应也许就是最好的,不会冒烟、冒火花什么的,也不会有爆鸣声。

pico 在PC(win10)上
接下来,既然板子连接到了电脑,就看下电脑端吧,来,切换一下:

刚把板子插进电脑,什么都不做的话,如果是Win10 系统,可以看到电脑弹出如下:

点击下该对话框,打开的界面看到相关设备为:

驱动程序无法使用?什么情况? 吓得我赶紧打开设备管理器,看到一个应该是没安装成功驱动的设备:

不管先,我还看到了其他东西,一个大容量存储设备,通俗点就是 U 盘,如下:

里面的内容为:

打开 INFO_UF2.TXT 后看到内容为:
UF2 Bootloader v1.0
Model: Raspberry Pi RP2
Board-ID: RPI-RP2
如果用浏览器打开 INDEX.HTM 文件的话,会自动跳转到树莓派官网中的 rp2040/getting-started 页面:

既然是 USB 设备的话,我就想用 UVCView 软件看下该设备的 USB 相关信息:

我把用该软件看到的内容放到下面:
[Port2] : USB Composite Device
---===>Device Information<===---
English product name: "RP2 Boot"
ConnectionStatus:
Current Config Value: 0x01 -> Device Bus Speed: Full
Device Address: 0x13
Open Pipes: 4
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x03 -> Direction: OUT - EndpointID: 3
bmAttributes: 0x02 -> Bulk Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x84 -> Direction: IN - EndpointID: 4
bmAttributes: 0x02 -> Bulk Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1
bmAttributes: 0x02 -> Bulk Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x02 -> Direction: OUT - EndpointID: 2
bmAttributes: 0x02 -> Bulk Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x00
===>Device Descriptor<===
bLength: 0x12
bDescriptorType: 0x01
bcdUSB: 0x0110
bDeviceClass: 0x00 -> This is an Interface Class Defined Device
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 = (64) Bytes
idVendor: 0x2E8A = Vendor ID not listed with USB.org as of 03-19-2008
idProduct: 0x0003
bcdDevice: 0x0100
iManufacturer: 0x01
English (United States) "Raspberry Pi"
iProduct: 0x02
English (United States) "RP2 Boot"
iSerialNumber: 0x03
English (United States) "E0C912D24340"
bNumConfigurations: 0x01
===>Configuration Descriptor<===
bLength: 0x09
bDescriptorType: 0x02
wTotalLength: 0x0037 -> Validated
bNumInterfaces: 0x02
bConfigurationValue: 0x01
iConfiguration: 0x00
bmAttributes: 0x80 -> Bus Powered
MaxPower: 0xFA = 500 mA
===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0x08 -> This is a Mass Storage USB Device Interface Class
bInterfaceSubClass: 0x06
bInterfaceProtocol: 0x50
iInterface: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1
bmAttributes: 0x02 -> Bulk Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x02 -> Direction: OUT - EndpointID: 2
bmAttributes: 0x02 -> Bulk Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x00
===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x01
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0xFF -> Vendor Specific Device
bInterfaceSubClass: 0x00
*!*CAUTION: This appears to be an invalid bInterfaceSubClass
bInterfaceProtocol: 0x00
iInterface: 0x00
*!*CAUTION: 0xFF is a prerelease Class ID
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x03 -> Direction: OUT - EndpointID: 3
bmAttributes: 0x02 -> Bulk Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x00
===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x84 -> Direction: IN - EndpointID: 4
bmAttributes: 0x02 -> Bulk Transfer Type
wMaxPacketSize: 0x0040 = 0x40 bytes
bInterval: 0x00
这只能看到 pico usb 设备的配置信息,从上面信息可以看到这是个复合设备,有 2 个接口(bNumInterfaces: 0x02):
- Mass Storage USB Device Interface,大容量存储设备,也就 U盘
- Vendor Specific Device 自定义设备
这两个接口都有2个端点,都是 Bulk Transfer Type,正好对于上面看到的没安装成功驱动的设备跟 F 盘。
Hello World
从网络了解到的信息,可以通过拖拽烧录程序,也就是说把固件拖拽到 raspberry pico 生成的 U盘里就可以烧录程序了,来测试下,树莓派官方提供一个 raspberry pico 闪灯的例程,下载连接为:blink.uf2,官方描述为:

把固件下载下来,然后拷贝到 pico 生成的对 U盘里面,拷贝完成后,文件浏览器会自动关闭,pico 对应的 USB 设备都没有了,板子上的 LED 灯会闪烁了
后记
我尝试了下按住板子上的按键,然后再把板子插入电脑,出现的情况跟第一次上电一样,这也许,可能,pico 出厂的时候 Flash 是空的(没有 RP2040 能运行的固件的),pico 上的 flash 是空的的话,pico 就直接运行 boot 程序。
来,总结下,买到的 pico 是没有出厂测试程序的,给板子上电,板子看不到任何反映,直接进入了 boot。
上手 Raspberry Pi Pico的更多相关文章
- 在 raspberry pi pico 上体验 MicroPython
raspberry pi pico 官方提供 2 种开发方式,其中一种是使用 python3 开发,树莓派提供了 MicroPython 固件,把这个固件烧录进去,就可以 在 pico 上跑 pyth ...
- Raspberry Pi上手
2013-05-21 买的树莓派终于到手了,嘿嘿.我在官方代理ICKEY买的,是英国版,B型. 上手教程可以根据Getting Started with Raspberry Pi(网上有电子版免费下载 ...
- 2016 最新的 树莓派3 Raspberry Pi 3 上手评测 图解教程 新手必看!(VNC 安装,启动,关闭)
1.png . 官方教程: INSTALLING OPERATING SYSTEM IMAGES: https://www.raspberrypi.org/documentation/installa ...
- 树莓派(Raspberry Pi)上手小记
引言 本日志中有不少软广告,博主并没有收他们任何好处,完全是给想入手的小伙伴们指条路而已.不喜勿看,不喜勿闻,不喜勿喷. 介绍 之前两三个月突然听说了这么个东西,也没有留意,某天突然在一个微信公众号上 ...
- Raspberry Pi 学习笔记之一
记录几个搭建服务器教程: [教程] 将树莓派变成网络打印机服务器(更新PC和手机端设置)!http://www.eeboard.com/bbs/thread-8818-1-1.html[心得] [分享 ...
- 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi
个人总结: Arduino就是个AVR单片机,个人觉得更适合玩电子的,社区也很活跃. BeagleBone是ARM Cortex-A8,属于嵌入式,价格高于Pi,但是许多方面拥有超越 Pi 的优 势, ...
- (0)开始 Raspberry Pi 项目前需要知道的 10 件事
https://www.digikey.cn/zh/articles/techzone/2017/feb/10-things-to-know-before-starting-a-raspberry-p ...
- 让Mono 4在Raspberry Pi上飞
最近公司有项目想要在树莓派上做,代替原来的工控机(我们是把工控主机当作小的主机用,一台小的工控主机最少也要600左右,而树莓派只要200多).于是,公司买了一个Raspberry Pi B+和一个Ra ...
- Kali v2.1.2 for Raspberry Pi 3B
最新的下载地址是: https://www.offensive-security.com/kali-linux-arm-images/ 按照官网的说法是找不到树莓派版本的SHA1SUM和SHA1SUM ...
随机推荐
- C++中使用sort对常见容器排序
本文主要解决以下问题 STL中sort的使用方法 使用sort对vector的排序 使用sort对map排序 使用sort对list排序 STL中sort的使用方法 C++ STL 标准库中的 sor ...
- 【BUAA软工】Alpha阶段测试报告
vLab-online项目Alpha阶段测试报告 项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:Alpha阶段测试报告 测试报告 测试发现的bug 在测试过程中发现了多少Bug? 我 ...
- Java GUI学习,贪吃蛇小游戏
JAVA GUI练习 贪吃蛇小游戏 前几天虽然生病了,但还是跟着狂神学习了GUI的方面,跟着练习了贪吃蛇的小项目,这里有狂神写的源码点我下载,还有我跟着敲的点我下载,嘿嘿,也就注释了下重要的地方,这方 ...
- Spec2006使用说明
Spec2006使用说明 五 10 十月 2014 By penglee 工具介绍 SPEC CPU 2006 benchmark是SPEC新一代的行业标准化的CPU测试基准套件.重点测试系统的处理器 ...
- Zabbix 自动发现并监控磁盘IO、报警 引言
引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用自动发现这个功能,自 ...
- 7.12-7.19 id、w、who、last、lastb、lastlog
7.12-7.19 id.w.who.last.lastb.lastlog 目录 7.12 id:显示用户与用户组的信息 7.13 w:显示已登录用户信息 7.14 who:显示已登录用户信息 显示最 ...
- python基础之模块初识
Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持 一.time模块和datetime模块 和时间有关系的我们就要用到时间模块.在使用模 ...
- mysql基础之数据库备份和恢复的基础知识
备份数据的最终目的是为了在出现一些意外情况时,能够通过备份将数据还原,所以单单的备份数据往往是无法满足还原时的需求的,所以在备份数据库时,除了要备份数据本身,还要备份相关的数据库环境,如配置文件,定时 ...
- Spring IoC容器 XML 配置与加载
IoC 容器 XML 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...
- linux 修改IP, DNS -(转自fighter)
linux下修改IP.DNS.路由命令行设置 ubuntu 版本命令行设置IP cat /etc/network/interfaces # This file describes the networ ...