什么是 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的更多相关文章

  1. 在 raspberry pi pico 上体验 MicroPython

    raspberry pi pico 官方提供 2 种开发方式,其中一种是使用 python3 开发,树莓派提供了 MicroPython 固件,把这个固件烧录进去,就可以 在 pico 上跑 pyth ...

  2. Raspberry Pi上手

    2013-05-21 买的树莓派终于到手了,嘿嘿.我在官方代理ICKEY买的,是英国版,B型. 上手教程可以根据Getting Started with Raspberry Pi(网上有电子版免费下载 ...

  3. 2016 最新的 树莓派3 Raspberry Pi 3 上手评测 图解教程 新手必看!(VNC 安装,启动,关闭)

    1.png . 官方教程: INSTALLING OPERATING SYSTEM IMAGES: https://www.raspberrypi.org/documentation/installa ...

  4. 树莓派(Raspberry Pi)上手小记

    引言 本日志中有不少软广告,博主并没有收他们任何好处,完全是给想入手的小伙伴们指条路而已.不喜勿看,不喜勿闻,不喜勿喷. 介绍 之前两三个月突然听说了这么个东西,也没有留意,某天突然在一个微信公众号上 ...

  5. Raspberry Pi 学习笔记之一

    记录几个搭建服务器教程: [教程] 将树莓派变成网络打印机服务器(更新PC和手机端设置)!http://www.eeboard.com/bbs/thread-8818-1-1.html[心得] [分享 ...

  6. 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi

    个人总结: Arduino就是个AVR单片机,个人觉得更适合玩电子的,社区也很活跃. BeagleBone是ARM Cortex-A8,属于嵌入式,价格高于Pi,但是许多方面拥有超越 Pi 的优 势, ...

  7. (0)开始 Raspberry Pi 项目前需要知道的 10 件事

    https://www.digikey.cn/zh/articles/techzone/2017/feb/10-things-to-know-before-starting-a-raspberry-p ...

  8. 让Mono 4在Raspberry Pi上飞

    最近公司有项目想要在树莓派上做,代替原来的工控机(我们是把工控主机当作小的主机用,一台小的工控主机最少也要600左右,而树莓派只要200多).于是,公司买了一个Raspberry Pi B+和一个Ra ...

  9. Kali v2.1.2 for Raspberry Pi 3B

    最新的下载地址是: https://www.offensive-security.com/kali-linux-arm-images/ 按照官网的说法是找不到树莓派版本的SHA1SUM和SHA1SUM ...

随机推荐

  1. C++中使用sort对常见容器排序

    本文主要解决以下问题 STL中sort的使用方法 使用sort对vector的排序 使用sort对map排序 使用sort对list排序 STL中sort的使用方法 C++ STL 标准库中的 sor ...

  2. 【BUAA软工】Alpha阶段测试报告

    vLab-online项目Alpha阶段测试报告 项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:Alpha阶段测试报告 测试报告 测试发现的bug 在测试过程中发现了多少Bug? 我 ...

  3. Java GUI学习,贪吃蛇小游戏

    JAVA GUI练习 贪吃蛇小游戏 前几天虽然生病了,但还是跟着狂神学习了GUI的方面,跟着练习了贪吃蛇的小项目,这里有狂神写的源码点我下载,还有我跟着敲的点我下载,嘿嘿,也就注释了下重要的地方,这方 ...

  4. Spec2006使用说明

    Spec2006使用说明 五 10 十月 2014 By penglee 工具介绍 SPEC CPU 2006 benchmark是SPEC新一代的行业标准化的CPU测试基准套件.重点测试系统的处理器 ...

  5. Zabbix 自动发现并监控磁盘IO、报警 引言

    引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用自动发现这个功能,自 ...

  6. 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:显示已登录用户信息 显示最 ...

  7. python基础之模块初识

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持 一.time模块和datetime模块 和时间有关系的我们就要用到时间模块.在使用模 ...

  8. mysql基础之数据库备份和恢复的基础知识

    备份数据的最终目的是为了在出现一些意外情况时,能够通过备份将数据还原,所以单单的备份数据往往是无法满足还原时的需求的,所以在备份数据库时,除了要备份数据本身,还要备份相关的数据库环境,如配置文件,定时 ...

  9. Spring IoC容器 XML 配置与加载

    IoC 容器 XML 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...

  10. linux 修改IP, DNS -(转自fighter)

    linux下修改IP.DNS.路由命令行设置 ubuntu 版本命令行设置IP cat /etc/network/interfaces # This file describes the networ ...