EasyManua.ls Logo

Raspberry Pi RP2040 User Manual

Raspberry Pi RP2040
77 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Page #72 background imageLoading...
Page #72 background image
20: UART1 TX
21: UART1 RX
There is one line in the
setup_default_uart function:
bi_decl_if_func_used(bi_2pins_with_func(PICO_DEFAULT_UART_RX_PIN, PICO_DEFAULT_UART_TX_PIN,
GPIO_FUNC_UART));
The two pin numbers, and the function UART are stored, then decoded to their actual function names (UART1 TX etc) by
picotool. The
bi_decl_if_func_used makes sure the binary information is only included if the containing function is called.
Equally, the video code contains a few lines like this:
bi_decl_if_func_used(bi_pin_mask_with_name(0x1f << (PICO_SCANVIDEO_COLOR_PIN_BASE +
PICO_SCANVIDEO_DPI_PIXEL_RSHIFT),
"Red 0-4"));
Details
Things are designed to waste as little space as possible, but you can turn everything off with preprocessor var
PICO_NO_BINARY_INFO=1. Additionally any SDK code that inserts binary info can be separately excluded by its own
preprocesor var.
You need,
#include "pico/binary_info.h"
There are a bunch of bi_ macros in the headers
#define bi_binary_end(end)
#define bi_program_name(name)
#define bi_program_description(description)
#define bi_program_version_string(version_string)
#define bi_program_build_date_string(date_string)
#define bi_program_url(url)
#define bi_program_feature(feature)
#define bi_program_build_attribute(attr)
#define bi_1pin_with_func(p0, func)
#define bi_2pins_with_func(p0, p1, func)
#define bi_3pins_with_func(p0, p1, p2, func)
#define bi_4pins_with_func(p0, p1, p2, p3, func)
#define bi_5pins_with_func(p0, p1, p2, p3, p4, func)
#define bi_pin_range_with_func(plo, phi, func)
#define bi_pin_mask_with_name(pmask, label)
#define bi_pin_mask_with_names(pmask, label)
#define bi_1pin_with_name(p0, name)
#define bi_2pins_with_names(p0, name0, p1, name1)
#define bi_3pins_with_names(p0, name0, p1, name1, p2, name2)
#define bi_4pins_with_names(p0, name0, p1, name1, p2, name2, p3, name3)
which make use of underlying macros, e.g.
Getting started with Raspberry Pi Pico
Binary Information 71

Table of Contents

Question and Answer IconNeed help?

Do you have a question about the Raspberry Pi RP2040 and is the answer not in the manual?

Raspberry Pi RP2040 Specifications

General IconGeneral
ProcessorDual-core Arm Cortex-M0+
Clock Speed133 MHz
SRAM264 KB
GPIO30
USBUSB 1.1 Host/Device
PWM16 channels
UART2
SPI2
I2C2
Temperature Range-20°C to +85°C
Operating Voltage1.8V to 3.3V
FlashExternal QSPI flash
I/O InterfacesSPI, I2C, UART, PWM
ADC4 × 12-bit ADC channels

Summary

Chapter 1. Quick Pico Setup

Quick Pico Setup

Steps to quickly set up your development environment for Raspberry Pi Pico, including script execution.

Chapter 2. The SDK

Get the SDK and examples

Instructions for downloading and cloning the Raspberry Pi Pico SDK and example repositories.

Install the Toolchain

Steps to install necessary tools like CMake and the GNU Embedded Toolchain for Arm.

Chapter 3. Blinking an LED in C

Build, Load, and Run 'Blink'

Steps to build, load, and run the 'Blink' example program on the Raspberry Pi Pico.

Chapter 4. Saying 'Hello World' in C

Serial Input and Output

Explains how serial input/output works on the Pico via UART or USB CDC.

Build and Run 'Hello World'

Steps to build, flash, and run the 'Hello World' example.

Chapter 5. Flash Programming with SWD

Install OpenOCD

Instructions for installing OpenOCD, a debug translator for SWD.

SWD Port Wiring and Loading

Details on wiring the SWD port and loading programs via OpenOCD.

Chapter 6. Debugging with SWD

Debug Build and GDB Installation

Creating a debug build and installing GNU Debugger (GDB) for interactive debugging.

Chapter 7. Using Visual Studio Code

Chapter 8. Creating Your Own Project

Appendix A: Using Picoprobe

Related product manuals