树莓派(Raspberry Pi)picotool

devtools/2024/11/16 13:07:23/

树莓派(Raspberry Pi)picotool

  • 安装
    • 直接安装
    • 从源码安装
    • 工具介绍
      • 显示信息
      • 保存程序
      • 二进制信息
      • 基本信息
      • 引脚
      • 完整信息
  • 链接

安装

直接安装

在archlinux上,使用yay直接安装

yay -S picotool

从源码安装

安装libusb

sudo pacman -S libusb

下载 pico-sdk

git clone https://github.com/raspberrypi/pico-sdk.git --branch master
cd pico-sdk
git submodule update --init
cd ..

下载 picotool 编译构建

git clone https://github.com/raspberrypi/picotool.git
cd picotool
mkdir build
cd build
export PICO_SDK_PATH=../../pico-sdk
cmake ../
make

工具介绍

$picotool help
PICOTOOL:Tool for interacting with RP2040/RP2350 device(s) in BOOTSEL mode, or with an RP2040/RP2350 binarySYNOPSIS:picotool info [-b] [-p] [-d] [--debug]  [-l] [-a] [device-selection]picotool info [-b] [-p] [-d] [--debug]  [-l] [-a] <filename> [-t <type>]picotool config [-s <key> <value>] [-g  <group>] [device-selection]picotool config [-s <key> <value>] [-g  <group>] <filename> [-t <type>]picotool load [--ignore-partitions] [--family <family_id>] [-p <partition>] [-n] [-N] [-u] [-v] [-x] <filename> [-t <type>] [-o <offset>] [device-selection]picotool encrypt [--quiet] [--verbose]  [--hash] [--sign] <infile> [-t <type>] [-o <offset>] <outfile> [-t <type>] <aes_key> [-t <type>] [<signing_key>] [-t <type>]picotool seal [--quiet] [--verbose] [--hash] [--sign] [--clear] <infile> [-t <type>] [-o <offset>] <outfile> [-t <type>] [<key>] [-t <type>] [<otp>] [-t <type>] [--major <major>] [--minor  <minor>] [--rollback <rollback>  [<rows>..]]picotool link [--quiet] [--verbose]     <outfile> [-t <type>] <infile1> [-t<type>] <infile2> [-t   <type>] [<infile3>] [-t   <type>] [-p] <pad>picotool save [-p] [device-selection]picotool save -a [device-selection]picotool save -r <from> <to>    [device-selection]picotool verify [device-selection]picotool reboot [-a] [-u] [-g   <partition>] [-c <cpu>]   [device-selection]picotool otp list|get|set|load|dump|    permissions|white-labelpicotool partition info|createpicotool uf2 info|convertpicotool version [-s] [<version>]picotool coprodis [--quiet] [--verbose]     <infile> [-t <type>] <outfile> [-t <type>]picotool help [<cmd>]COMMANDS:info          Display information from    the target device(s) or file.Without any arguments, this     will display basic  information for all connected RP2040    devices in BOOTSEL modeconfig        Display or change program   configuration settings from the target device(s) or file.load          Load the program / memory   range stored in a file onto the device.encrypt       Encrypt the program.seal          Add final metadata to a     binary, optionally including a hash and/or signature.link          Link multiple binaries into     one block loop.save          Save the program / memory   stored in flash on the device to a file.verify        Check that the device   contents match those in the file.reboot        Reboot the deviceotp           Commands related to the     RP2350 OTP (One-Time-Programmable) Memorypartition     Commands related to RP2350  Partition Tablesuf2           Commands related to UF2     creation and statusversion       Display picotool versioncoprodis      Post-process coprocessor    instructions in disassembly files.help          Show general help or help   for a specific commandUse "picotool help <cmd>" for more info
说明
大部分命令都要求将树莓派微控制器设备连接到开发设备上,并处于 BOOTSEL 模式下。
重点
如果打印错误消息 No accessible RP2040/RP2350 devices in BOOTSEL mode were found,并且伴有类似这样的提示: Device at bus 1, address 7 appears to be a RP2040 device in BOOTSEL mode, but picotool was unable to connect,这表明已连接了一个 Pico 系列设备,但是执行命令的权限不够,这时可以使用 sudo 来运行 picotool
sudo picotool info -a
如果使用的是 Windows 系统,则需要安装一个驱动程序。
下载并运行 Zadig,从下拉框中选择 RP2 Boot(Interface 1),并选择 WinUSB 作为驱动程序,然后点击 “安装驱动程序” 按钮。

picotool 的 1.1 版本开始,支持与未处于 BOOTSEL 模式的树莓派微控制器进行交互,使用 picotool-f 参数使用SDK 的USB 标准输入输出(stdio)进行交互。

显示信息

当前版本的SDK支持二进制信息,能够存储目标设备或者文件的精简信息。info 命令用于读取此类信息。

这些信息既可以从一个或多个处于 BOOTSEL 模式的已连接树莓派微控制器中读取,也可以从一个文件中读取。该文件可以是可执行与可链接格式(ELF)文件、通用闪存存储格式(UF2)文件或二进制(BIN)文件。

$picotool help info
INFO:Display information from the target device(s) or file.Without any arguments, this will display basic information for all connectedRP2040 devices in BOOTSEL modeSYNOPSIS:picotool info [-b] [-p] [-d] [--debug] [-l] [-a] [device-selection]picotool info [-b] [-p] [-d] [--debug] [-l] [-a] <filename> [-t <type>]OPTIONS:Information to display-b, --basicInclude basic information. This is the default-p, --pinsInclude pin information-d, --deviceInclude device information--debugInclude device debug information-l, --buildInclude build attributes-a, --allInclude all informationTARGET SELECTION:To target one or more connected RP2040 device(s) in BOOTSEL mode (the default)--bus <bus>Filter devices by USB bus number--address <addr>Filter devices by USB device address--vid <vid>Filter by vendor id--pid <pid>Filter by product id--ser <ser>Filter by serial number-f, --forceForce a device not in BOOTSEL mode but running compatible code to reset so the command can be executed. After executing the command (unless the command itself is a 'reboot') the device will be rebooted back to application mode-F, --force-no-rebootForce a device not in BOOTSEL mode but running compatible code to reset so the command can be executed. After executing the command (unless the command itself is a 'reboot') the device will be left connected and accessible to picotool, but without the RPI-RP2 drive mountedTo target a file<filename>The file name-t <type>Specify file type (uf2 | elf | bin) explicitly, ignoring file extension

例如,在将Pico系列设备插入 USB 接口之前,按住 BOOTSEL 按钮,使其以大容量存储模式连接到计算机。然后打开一个终端窗口并输入:

$sudo picotool info
Program Informationname: hello_worldfeatures: stdout to UART

或者

$sudo picotool info -a
Program Informationname:         hello_worldfeatures:     stdout to UARTbinary start: 0x10000000binary end:   0x1000606cFixed Pin Information20: UART1 TX21: UART1 RXBuild Informationbuild date:       Dec 31 2020build attributes: Debug buildDevice Informationflash size:  2048KROM version: 2

也可以通过如下的命令获取引脚信息。

$ sudo picotool info -bp
Program Informationname:     hello_worldfeatures: stdout to UARTFixed Pin Information20: UART1 TX21: UART1 RX

也可以查询二进制文件的信息。

$ picotool info -a lcd_1602_i2c.uf2
File lcd_1602_i2c.uf2:
Program Informationname:         lcd_1602_i2cweb site:     https://github.com/raspberrypi/pico-examples/tree/HEAD/i2c/lcd_1602_i2cbinary start: 0x10000000binary end:   0x10003c1cFixed Pin Information4: I2C0 SDA5: I2C0 SCLBuild Informationbuild date: Dec 31 2020

保存程序

“保存”功能支持将设备中的一段内存、一个程序或整个闪存内容保存到一个二进制(BIN)文件或通用闪存存储格式(UF2)文件中。

$ picotool help save
SAVE:Save the program / memory stored in flash on the device to a file.SYNOPSIS:picotool save [-p] [--bus <bus>] [--address <addr>] [-f] [-F] <filename> [-t <type>]picotool save -a [--bus <bus>] [--address <addr>] [-f] [-F] <filename> [-t <type>]picotool save -r <from> <to> [--bus <bus>] [--address <addr>] [-f] [-F] <filename> [-t <type>]OPTIONS:Selection of data to save-p, --programSave the installed program only. This is the default-a, --allSave all of flash memory-r, --rangeSave a range of memory. Note that UF2s always store complete 256 byte-aligned blocks of 256 bytes, and the range is expanded accordingly<from>The lower address bound in hex<to>The upper address bound in hexSource device selection--bus <bus>Filter devices by USB bus number--address <addr>Filter devices by USB device address-f, --forceForce a device not in BOOTSEL mode but running compatible code to reset so the command can be executed. After executing the command (unless the command itself is a 'reboot') the device will be rebooted back to application mode-F, --force-no-rebootForce a device not in BOOTSEL mode but running compatible code to reset so the command can be executed. After executing the command (unless the command itself is a 'reboot') the device will be left connected and accessible to picotool, but  without the RPI-RP2 drive mounted File to save to<filename>The file name-t <type>Specify file type (uf2 | elf | bin) explicitly, ignoring file extension

比如:

$ sudo picotool info
Program Information
name:     lcd_1602_i2c
web site: https://github.com/raspberrypi/pico-examples/tree/HEAD/i2c/lcd_1602_i2c
$ picotool save spoon.uf2
Saving file: [==============================] 100%
Wrote 51200 bytes to spoon.uf2
$ picotool info spoon.uf2
File spoon.uf2:
Program Information
name:     lcd_1602_i2c
web site: https://github.com/raspberrypi/pico-examples/tree/HEAD/i2c/lcd_1602_i2c

二进制信息

二进制信息是在构建时嵌入到二进制文件中的、可由机器定位且能被机器读取的信息。

基本信息

当拿到一个 Pico 系列设备但不知道里面有什么内容时,这些信息就非常有用了!
基本信息包括:
- 程序名称
- 程序描述
- 程序版本字符串
- 程序构建日期
- 程序网址
- 程序结束地址
- 程序特性,这是一个根据二进制文件中的各个字符串构建的列表,在 SDK 中可以显示出来(例如,我们会有一个针对通用异步收发传输器(UART)标准输入输出(stdio)的特性,以及一个针对通用串行总线(USB)标准输入输出(stdio)的特性)。
- 构建属性,及与二进制文件本身相关的内容(例如,调试构建)

引脚

当忘记可执行文件是为基于树莓派微控制器的哪种电路板构建的时,可使用picotool info --pins获取文件的引脚信息。

$ picotool info --pins sprite_demo.elf
File sprite_demo.elf:Fixed  Pin Information
0-4:   Red 0-4
6-10:  Green 0-4
11-15: Blue 0-4
16:    HSync
17:    VSync
18:    Display Enable
19:    Pixel Clock
20:    UART1 TX
21:    UART1 RX

完整信息

使用 -a 选项可获取完整信息。

$ picotool info -a i2c_bus_scan.elf
File i2c_bus_scan.elf:Program Informationname:         i2c_bus_scanweb site:     https://github.com/raspberrypi/pico-examples/tree/HEAD/i2c/bus_scanfeatures:     UART stdin / stdoutbinary start: 0x10000000binary end:   0x10004c74Fixed Pin Information0: UART0 TX1: UART0 RX4: I2C0 SDA5: I2C0 SCLBuild Informationsdk version:      2.0.0-developpico_board:       picobuild date:       Aug 1 2024build attributes: Debug

链接

  • Raspberry Pi官网

http://www.ppmy.cn/devtools/134443.html

相关文章

计算机网络 (3)计算机网络的性能

一、计算机网络性能指标 速率&#xff1a; 速率是计算机网络中最重要的性能指标之一&#xff0c;它指的是数据的传送速率&#xff0c;也称为数据率&#xff08;Data Rate&#xff09;或比特率&#xff08;Bit Rate&#xff09;。速率的单位是比特/秒&#xff08;bit/s&#xff…

设计模式——策略模式(c++)

策略模式&#xff08;Strategy Pattern&#xff09;在 C 中的实现 1. 策略模式定义 策略模式定义了一系列算法&#xff08;策略类&#xff09;&#xff0c;将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;达到灵活使用不同策略的目的。在策略模式中&#xff0…

木舟0基础学习Java的第三十三天(OA企业管理系统)

贯穿项目&#xff1a;OA企业管理系统 框架技术&#xff1a; Springboot / Spring / SpringMVC / MyBatis / Shiro 项目构建管理&#xff1a; maven 数据库&#xff1a; mysql 前端技术&#xff1a; html / css / js / jquery / jsp 扩展技术&#xff…

活动|华院计算作为联盟理事单位出席进博会全球人工智能合作论坛

第七届中国国际进口博览会&#xff08;进博会&#xff09;于11月5日至10日在上海举行&#xff0c;作为本次进博会的重要配套活动&#xff0c;首届人工智能全球合作论坛也于9日圆满落幕。本次论坛由全球招商中心委员会、人工智能全球合作论坛组委会主办&#xff0c;中国国际科技…

Redisson的可重入锁

初始状态&#xff1a; 表示系统或资源在没有线程持有锁的情况下的状态&#xff0c;任何线程都可以尝试获取锁。 线程 1 获得锁&#xff1a; 线程 1 首次获取了锁并进入受保护的代码区域。 线程 1 再次请求锁&#xff1a; 在持有锁的情况下&#xff0c;线程 1 再次请求锁&a…

第二十章 TCP 客户端 服务器通信 - 立即发送模式(Q 模式)

文章目录 第二十章 TCP 客户端 服务器通信 - 立即发送模式&#xff08;Q 模式&#xff09;立即发送模式&#xff08;Q 模式&#xff09;流模式(S模式)缓冲区大小 服务器端OPEN命令 第二十章 TCP 客户端 服务器通信 - 立即发送模式&#xff08;Q 模式&#xff09; 立即发送模式…

零基础上手WebGIS+智慧校园实例(1)【html by js】

请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 等下再更新一下1. WebGIS矢量图形的绘制&#xff08;超级详细&#xff01;&#xff01;&#xff09;&#xff0c;2. WebGIS计算距离&#xff0c; 以及智慧校园实例 with 3个例子&#xff01;&#xff01;…

ZeroSSL HTTPS SSL证书ACMESSL申请3个月证书

目录 一、引言 二、准备工作 三、申请 SSL 证书 四、证书选型 五、ssl重要性 一、引言 目前免费 Lets Encrypt、ZeroSSL、BuyPass、Google Public CA SSL 证书&#xff0c;一般免费3-6个月。从申请难易程度分析&#xff0c;zerossl申请相对快速和简单&#xff0c;亲测速度非…