PicoBoy
The PicoBoy is a powerful mini handheld measuring just 3×5 ㎝. It is suitable for learning programming, developing your own games or simply playing with it. All you need is a PC, the PicoBoy and a USB-C cable. As the PicoBoy based on the RP2040 SoC [33] by Raspberry Pi Ltd. and is compatible with the Raspberry Pi Pico programming model and process, there are countless other tutorials, examples and libraries on the internet to make programming easier.
Board Overview
Hardware
The PicoBoy [15] is a special mini sized RP2040 development board.
Features and Resources |
Printed Circuit Board |
5V/125~250㎃ 3.0~3.3V/180~200㎃ 133㎒ 2㎆ 264㎅ USB-C CR2032 UF2 RST BOOT UP|DOWN|LEFT|RIGHT|ENTER RED YELLOW GREEN OLED PASSIVE 3-DOF 9 4 4 1 1
Design Data
|
|
Positions
Data Sheets
Flash partitions
QSPI NOR-Flash |
bootrom |
code_partition |
storage_partition |
|---|---|---|---|
primary 2㎆ |
256B |
1㎆ - 256B |
1㎆ |
Pinouts
The peripherals of the RP2040 SoC [33] can be routed to various pins on the board. The configuration of these routes can be modified through DTS. Please refer to the datasheet to see the possible routings for each peripheral. The default assignments for the on-board wiring is defined below.
Pin Mapping |
Default Zephyr On-Board Mapping
Buttons
LEDs
Display and Speaker
Sensor I/O
GPIO and ADC
|
Supported Features
Similar to the Raspberry Pi Pico the board configuration supports the following hardware features:
Peripheral |
Kconfig option |
Devicetree compatible |
Zephyr API |
|---|---|---|---|
PINCTRL |
|||
GPIO |
|||
UART |
|||
UDC (USB Device Controller) |
|||
I2C |
|||
SPI |
|||
PWM |
|||
ADC |
|||
Temperature (Sensor) |
|||
RTC |
|||
Timer (Counter) |
|||
Watchdog Timer (WDT) |
|||
Flash |
|||
PIO |
N/A |
||
UART (PIO) |
|||
SPI (PIO) |
|||
WS2812 (PIO) |
|
N/A |
|
DMA |
|||
HWINFO |
N/A |
||
VREG |
|||
RESET |
|||
CLOCK |
|||
NVIC |
N/A |
Nested Vector Interrupts Controller |
|
SYSTICK |
N/A |
Other hardware features are not currently supported by Zephyr. The default configuration can be found in the following Kconfig file:
Board Configurations
The board can be configured only for the following single use cases.
west build -b picoboy/rp2040
Use the native USB device port with CDC-ACM as Zephyr console and for the shell.
Connections and IOs
The PicoBoy [16] website has detailed information about board connections. Download the different datasheets there or as linked above on the positions for more details.
System Clock
The RP2040 [33] MCU is configured to use the 12㎒ external crystal with the on-chip PLL generating the 125㎒ system clock.
GPIO (PWM) Ports
The RP2040 [33] MCU has 1 GPIO cell which covers all I/O pads and 8 PWM function unit each with 2 channels beside a dedicated Timer unit. Only 4 PWM channels are available, for the three user LEDs and the passive magnetic speaker.
ADC/TS Ports
The RP2040 [33] MCU has 1 ADC with 4 channels and an additional fifth channel for the on-chip temperature sensor (TS). The ADC channels 0-3 are not available for any on-board function.
The external voltage reference ADC_VREF is directly connected to the 3.3V power supply.
SPI Port
The RP2040 [33] MCU has 2 SPIs. The serial bus SPI0 is connect to the on-board OLED display over GP19 (MOSI), GP16 (MISO), GP18 (SCK), and GP17 (CSn), but only MOSI and SCK is used for write-only communication. The display chip-select signal will driven as simple GPIO by GP10 and the display itself does not provide any data out signal (MISO).
SPI1 is not available in any default setup.
I2C Port
The RP2040 [33] MCU has 2 I2Cs. The serial bus I2C0 is connect to the on-board acceleration sensor over GP20 (I2C0_SDA), GP21 (I2C0_SCL). I2C1 is not available in any default setup.
Serial Port
The RP2040 [33] MCU has 2 UARTs. Neither UART0 nor UART1 are available in any of the default setups. When ever a Zephyr serial console will be needed, the USB port have to be used.
USB Device Port
The RP2040 [33] MCU has a (native) USB device port that can be used to communicate with a host PC. See the USB sample applications for more, such as the USB CDC ACM UART sample sample which sets up a virtual serial port that echos characters back to the host PC. The board provide the Zephyr console per default on the USB port as CDC ACM:
USB device idVendor=2e8a, idProduct=000a, bcdDevice= 4.04 USB device strings: Mfr=1, Product=2, SerialNumber=3 Product: PicoBoy (CDC ACM) Manufacturer: JSED (Raspberry Pi) SerialNumber: BD774B2618DAAA7D
Programmable I/O (PIO)
The RP2040 SoC [33] comes with two PIO periherals. These are simple co-processors that are designed for I/O operations. The PIOs run a custom instruction set, generated from a custom assembly language. PIO programs are assembled using pioasm, a tool provided by Raspberry Pi. Further information can be found in the Raspberry Pi Pico C/C++ SDK [10] document, section with title “Using PIOASM, the PIO Assembler”.
Zephyr does not (currently) assemble PIO programs. Rather, they should be manually assembled and embedded in source code. An example of how this is done can be found at drivers/serial/uart_rpi_pico_pio.c or drivers/spi/spi_rpi_pico_pio.c.
Programming and Debugging
Flashing
The board can only be flashed with a UF2 file. There is no SWD connector.
Using UF2
By default, building an application for the board will generate a
build/zephyr/zephyr.uf2 file. If the board is powered on with
the BOOTSEL button pressed, it will appear on the host as a mass
storage device:
USB device idVendor=2e8a, idProduct=0003, bcdDevice= 1.00 USB device strings: Mfr=1, Product=2, SerialNumber=0 Product: RP2 Boot Manufacturer: Raspberry Pi SerialNumber: E0C9125B0D9B
The UF2 file should be drag-and-dropped or copied on command line to the device, which will then flash the board.
RP2040 Boot-ROM
Each RP2040 SoC [33] ships the UF2 compatible [6] bootloader pico-bootrom-rp2040 [12], a native support in silicon. The full source for the RP2040 bootrom at pico-bootrom-rp2040 [12] includes versions B0, B1 and B2 of the bootrom, which correspond to the same silicon revisions, respectively.
Note that every time you build a program for the RP2040, the Pico SDK selects
an appropriate second stage bootloader based on what kind of external QSPI
Flash type the board configuration you are building for was giving. There
are several versions of boot2 [11] for different flash chips, and each one is
exactly 256 bytes of code which is put right at the start of the eventual
program binary. On Zephyr the boot2 versions are part of the
Raspberry Pi Pico HAL [14] module. Possible selections:
CONFIG_RP2_FLASH_AT25SF128A:CONFIG_RP2_FLASH_GENERIC_03H:CONFIG_RP2_FLASH_IS25LP080:CONFIG_RP2_FLASH_W25Q080:CONFIG_RP2_FLASH_W25X10CL:
The board set this option to CONFIG_RP2_FLASH_W25Q080.
Further information can be found in the RP2040 Datasheet [34], sections with title “Bootrom” and “Processor Controlled Boot Sequence” or Brian Starkey’s Blog article Pico serial bootloader [13]
Debugging
The board does not provide any SWD connector, thus debugging software is not possible.
Basic Samples
LED Blinky and Fade
Red User LED Blinky by GPIO
See also Zephyr sample: Blinky.
west build -b picoboy/rp2040 -p -d build/picoboy zephyr/samples/basic/blinky
west flash -d build/picoboy
Red User LED Blinky by PWM
See also Zephyr sample: PWM Blinky.
west build -b picoboy/rp2040 -p -d build/picoboy zephyr/samples/basic/blinky_pwm
west flash -d build/picoboy
All User LED Fade by PWM
See also Zephyr sample: Fade LED.
west build -b picoboy/rp2040 -p -d build/picoboy zephyr/samples/basic/fade_led
west flash -d build/picoboy
Red User LED On/Off by GPIO Button (Joystick ENTER)
See also Zephyr sample: Button.
west build -b picoboy/rp2040 -p -d build/picoboy zephyr/samples/basic/button
west flash -d build/picoboy
Hello Shell on USB-CDC/ACM Console
Hello Shell
See also Bridle sample: Hello Shell.
west build -b picoboy/rp2040 -p -d build/picoboy bridle/samples/helloshell
west flash -d build/picoboy
Simple test execution on target
(text in bold is a command input)
uart:~$ hello -h
hello - say hello
uart:~$ hello
Hello from shell.
uart:~$ hwinfo devid
Length: 8
ID: 0xbd774b2618daaa7d
uart:~$ kernel version
Zephyr version 4.4.99
uart:~$ bridle version
Bridle version 4.4.99
uart:~$ bridle version long
Bridle version 4.4.99.0
uart:~$ bridle info
Zephyr: 4.4.99
Bridle: 4.4.99
uart:~$ device list
devices:
- clock-controller@40008000 (READY)
DT node labels: clocks
- reset-controller@4000c000 (READY)
DT node labels: reset
- cdc_acm_console_uart (READY)
DT node labels: cdc_acm_console_uart
- timer@40054000 (READY)
DT node labels: timer
- watchdog@40058000 (READY)
DT node labels: wdt0
- dma@50000000 (READY)
DT node labels: dma
- gpio-port@0 (READY)
DT node labels: gpio0
- usbd@50110000 (READY)
DT node labels: usbd zephyr_udc0
- adc@4004c000 (READY)
DT node labels: adc
- flash-controller@18000000 (READY)
DT node labels: ssi
- i2c@40044000 (READY)
DT node labels: i2c0
- pwm@40050000 (READY)
DT node labels: pwm
- vreg@40064000 (READY)
DT node labels: vreg
- rtc@4005c000 (READY)
DT node labels: rtc
- pwm-leds (READY)
DT node labels: pwm_leds
- dietemp (READY)
DT node labels: die_temp
- stk8ba58@18 (READY)
DT node labels: stk8ba58
uart:~$ history
[ 0] history
[ 1] device list
[ 2] bridle info
[ 3] bridle version long
[ 4] bridle version
[ 5] kernel version
[ 6] hwinfo devid
[ 7] hello
[ 8] hello -h
Operate with the on-chip voltage regulator unit:
uart:~$ regulator vlist vreg
0.800000 V
0.850000 V
0.900000 V
0.950000 V
1.000000 V
1.050000 V
1.100000 V
1.150000 V
1.200000 V
1.250000 V
1.300000 V
uart:~$ regulator vget vreg
1.100000 V
Trigger a power-off/on sequence:
uart:~$ hwinfo reset_cause
reset caused by:
- pin
uart:~$ regulator disable vreg
*** Booting Zephyr OS build v4.4.99…***
Hello World! I'm THE SHELL from picoboy
uart:~$ hwinfo reset_cause
reset caused by:
- power-on reset
Note
PWM LED conflicts with GPIO!
Operations with the red user LED in PWM mode will fail when ever the corresponding GPIO line 5 was configured as digital output. This condition is irreversible at runtime within the shell and requires a system reset.
Operate with the red user LED PWM_LED at GP5 / PWM5 (PWM2CHA):
uart:~$ led on pwm-leds 0
pwm-leds: turning on LED 0
uart:~$ led set_brightness pwm-leds 0 10
pwm-leds: setting LED 0 brightness to 10
uart:~$ led set_brightness pwm-leds 0 50
pwm-leds: setting LED 0 brightness to 50
uart:~$ led set_brightness pwm-leds 0 100
pwm-leds: setting LED 0 brightness to 100
uart:~$ led off pwm-leds 0
pwm-leds: turning off LED 0
uart:~$ led blink pwm-leds 0 50 50
pwm-leds: blinking LED 0 with 50 ms on and 50 ms off
uart:~$ led off pwm-leds 0
pwm-leds: turning off LED 0
Note
PWM conflicts with GPIO!
Operations with the red user LED in PWM mode will fail when ever the corresponding GPIO line 5 was configured as digital output. This condition is irreversible at runtime within the shell and requires a system reset.
Operate with the red user LED PWM_LED at GP5 / PWM5 (PWM2CHA):
uart:~$ pwm usec pwm 5 20000 20000
uart:~$ pwm usec pwm 5 20000 19000
uart:~$ pwm usec pwm 5 20000 18000
uart:~$ pwm usec pwm 5 20000 17000
uart:~$ pwm usec pwm 5 20000 16000
uart:~$ pwm usec pwm 5 20000 15000
uart:~$ pwm usec pwm 5 20000 10000
uart:~$ pwm usec pwm 5 20000 5000
uart:~$ pwm usec pwm 5 20000 2500
uart:~$ pwm usec pwm 5 20000 500
uart:~$ pwm usec pwm 5 20000 0
Operate with the PASSIVE magnetic speaker at GP15 / PWM15 (PWM7CHB):
concert pitch: 440 ㎐
Piezo middle frequency: 1,000 ㎑
Piezo resonance: 4,000 ㎑
Piezo high frequency: 10,000 ㎑
uart:~$ pwm usec pwm 15 2273 1136
uart:~$ pwm usec pwm 15 2000 1000
uart:~$ pwm usec pwm 15 250 125
uart:~$ pwm usec pwm 15 100 50
Operate with the red user LED LED at GP5:
uart:~$ gpio get gpio0 LED_RED
0
uart:~$ gpio conf gpio0 LED_RED oh0
uart:~$ gpio set gpio0 LED_RED 1
uart:~$ gpio set gpio0 LED_RED 0
uart:~$ gpio blink gpio0 LED_RED
Hit any key to exit
Operate with the user joystick center button ENTER at GP0:
uart:~$ gpio get gpio0 JOY_ENTER
0
uart:~$ gpio conf gpio0 JOY_ENTER iul
uart:~$ gpio get gpio0 JOY_ENTER
0
uart:~$ gpio get gpio0 JOY_ENTER
1
uart:~$ gpio get gpio0 JOY_ENTER
0
Get an overview of aviliable signale names:
uart:~$ gpio info gpio0
ngpios: 30
Reserved pin mask: 0xFFC07800
Reserved Pin Line Name
0 JOY_ENTER
1 JOY_UP
2 JOY_RIGHT
3 JOY_DOWN
4 JOY_LEFT
5 LED_RED
6 LED_YELLOW
7 LED_GREEN
8 OLED_DC
9 OLED_RST
10 OLED_CSN_SW
* 11
* 12
* 13
* 14
15 SPEAKER
16 OLED_SDI0
17 OLED_CSN0_HW
18 OLED_SCK0
19 OLED_SDO0
20 SENS_SDA0_TX1
21 SENS_SCL0_RX1
* 22
* 23
* 24
* 25
* 26
* 27
* 28
* 29
Operate with the channels:
ADC_CH0, pulled to unknown voltage level
ADC_CH1, pulled to unknown voltage level
ADC_CH2, pulled to unknown voltage level
ADC_CH3, pulled to unknown voltage level
on-chip temperature sensor on channel ADC_CH4
uart:~$ adc adc@4004c000 resolution 12
uart:~$ adc adc@4004c000 print
adc@4004c000:
Gain: 1
Reference: INTERNAL
Acquisition Time: 0
Channel ID: 0
Differential: 0
Resolution: 12
uart:~$ adc adc@4004c000 read 0
read: 681
uart:~$ adc adc@4004c000 read 1
read: 617
uart:~$ adc adc@4004c000 read 2
read: 745
uart:~$ adc adc@4004c000 read 3
read: 692
uart:~$ adc adc@4004c000 read 4
read: 749
Operate with the on-chip RTC unit:
uart:~$ rtc get rtc
RTC not set
uart:~$ rtc set rtc 2024-11-23T18:37:55
uart:~$ rtc get rtc
2024-11-23T18:37:59.000
Operate with the on-chip timer unit:
uart:~$ timer oneshot timer 0 1000000
timer: Alarm triggered
Erase, Write and Verify
uart:~$ flash read ssi 0xe0000 0x40
000E0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |........ ........|
000E0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |........ ........|
000E0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |........ ........|
000E0030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |........ ........|
uart:~$ flash test ssi 0xe0000 0x1000 2
Erase OK.
Write OK.
Verified OK.
Erase OK.
Write OK.
Verified OK.
Erase-Write-Verify test done.
uart:~$ flash read ssi 0xe0000 0x40
000E0000: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f |........ ........|
000E0010: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f |........ ........|
000E0020: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&' ()*+,-./|
000E0030: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f |01234567 89:;<=>?|
uart:~$ flash page_info 0xe0000
Page for address 0xe0000:
start offset: 0xe0000
size: 4096
index: 224
uart:~$ flash erase ssi 0xe0000 0x1000
Erase success.
uart:~$ flash read ssi 0xe0000 0x40
000E0000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |........ ........|
000E0010: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |........ ........|
000E0020: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |........ ........|
000E0030: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |........ ........|
The PicoBoy has the on-board acceleration sensor connected on I2C0.
uart:~$ i2c scan i2c0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
1 devices found on i2c0
The I2C address 0x18 is a Sensortek STK8BA58 [23] 3D Acceleration Sensor
and their Chip-ID can read from register 0x0. The Chip-ID must be
0x87:
uart:~$ i2c read_byte i2c0 18 0
Output: 0x87
uart:~$ sensor info
device name: dietemp, vendor: Raspberry Pi Foundation, model: pico-temp, friendly name: RP2040 chip temperature
device name: stk8ba58@18, vendor: Sensortek Technology Corporation, model: stk8ba58, friendly name: on-board accelerometer
on-chip temperature sensor
uart:~$ sensor get dietemp
channel type=12(die_temp) index=0 shift=5 num_samples=1 value=96691043776ns (29.905286)
on-board 3-axis accelerometer
Default attributes for all three axis:
range,
full_scale: 2g = 19.613300 ㎨ODR,
sampling_frequency: 250 ㎐sleep,
configuration: 25 ㎳ (low-power mode)
uart:~$ sensor attr_get stk8ba58@18 accel_xyz full_scale
stk8ba58@18(channel=accel_xyz, attr=full_scale) value=19.613300 value=0.000000 value=0.000000
uart:~$ sensor attr_get stk8ba58@18 accel_xyz sampling_frequency
stk8ba58@18(channel=accel_xyz, attr=sampling_frequency) value=250.000000 value=0.000000 value=0.000000
uart:~$ sensor attr_get stk8ba58@18 accel_xyz configuration
stk8ba58@18(channel=accel_xyz, attr=configuration) value=25.000000 value=0.000000 value=0.000000
uart:~$ sensor get stk8ba58@18
channel type=0(accel_x) index=0 shift=4 num_samples=1 value=35274098880ns (5.756698)
channel type=1(accel_y) index=0 shift=4 num_samples=1 value=35274098880ns (-1.729892)
channel type=2(accel_z) index=0 shift=4 num_samples=1 value=35274098880ns (-8.774402)
channel type=3(accel_xyz) index=0 shift=4 num_samples=1 value=35274098880ns, (5.756698, -1.729892, -8.774402)
More Samples
3-Axis accelerometer data on USB-CDC/ACM Console
The samples are prepared for the on-board 3-DOF accelerometer connected to the I2C0 bus.
Chip-specific
Get 3-axis accelerometer data from an STK8BA58 sensor (polling mode only) using the Sensors API. See also Bridle sample STK8BA58 3-Axis Accelerometer Sample and also the console output in section Building on picoboy of the Bridle sample documentation.
Polling Mode
Get 3-axis accelerometer data from the on-board sensor (polling mode) using the Sensors API. See also Zephyr sample Generic 3-Axis accelerometer polling.
Invoke west build and west flash:
west build -b picoboy/rp2040 -p -d build/picoboy zephyr/samples/sensor/accel_polling
west flash -d build/picoboy
Simple test execution on target
*** Booting Zephyr OS build v4.4.99…***
stk8ba58@18 [m/s^2]: ( 4.747595, -1.710672, -9.572076)
stk8ba58@18 [m/s^2]: ( 4.747595, -1.710672, -9.572076)
stk8ba58@18 [m/s^2]: ( 4.622658, -1.710672, -9.581686)
stk8ba58@18 [m/s^2]: ( 4.718764, -1.595345, -9.610518)
stk8ba58@18 [m/s^2]: ( 4.718764, -1.595345, -9.610518)
Trigger Mode
Get 3-axis accelerometer data from the on-board sensor (trigger mode) using the Sensors API. See also Zephyr sample Accelerometer trigger.
Hint
There is no interrupt line to the on-board 3-Axis accelerometer. This sample is not applicable.
Sounds from the speaker on USB-CDC/ACM Console
The sample is prepared for the on-board PWM_SPEAKER connected to the PWM channel at GP15 / PWM15 (PWM7CHB).
The PWM period is 880 ㎐, twice the concert pitch frequency of 440 ㎐.
Speaker Test
Invoke west build and west flash:
west build -b picoboy/rp2040 -p -d build/picoboy bridle/samples/buzzer
west flash -d build/picoboy
Simple test execution on target
play a beep
play a folk song
play a chrismas song
uart:~$ buzzer beep
uart:~$ buzzer play folksong
uart:~$ buzzer play xmastime
Input dump on USB-CDC/ACM Console
Print the input events related to the five on-board joystick keys using the Input subsystem API. That are:
zephyr,code = <INPUT_KEY_UP>;zephyr,code = <INPUT_KEY_DOWN>;zephyr,code = <INPUT_KEY_LEFT>;zephyr,code = <INPUT_KEY_RIGHT>;zephyr,code = <INPUT_KEY_ENTER>;See also Zephyr sample: Input dump.
Joystick Test
west build -b picoboy/rp2040 -p -d build/picoboy zephyr/samples/subsys/input/input_dump
west flash -d build/picoboy
Simple logging output on target
Display Test and Demonstration
The following samples work with the chosen display. That is:
chosen { zephyr,display = &oled_panel; };oled_panel: &sh1106_128x64 {};Devicetree compatible
zephyr,lvgl-keypad-inputwith devicetree relationlvgl_keypad: lvgl-keypad { input = <&gpio_keys>; };UP :input-codes = <INPUT_KEY_UP>;:lvgl-codes = <LV_KEY_UP>;DOWN :input-codes = <INPUT_KEY_DOWN>;:lvgl-codes = <LV_KEY_DOWN>;LEFT :input-codes = <INPUT_KEY_LEFT>;:lvgl-codes = <LV_KEY_LEFT>;RIGHT :input-codes = <INPUT_KEY_RIGHT>;:lvgl-codes = <LV_KEY_RIGHT>;ENTER :input-codes = <INPUT_KEY_ENTER>;:lvgl-codes = <LV_KEY_ENTER>;
LCD Orientation and Bit Order Test
Draw some basic rectangles onto the display using the Display driver API. See also Zephyr sample: Display.
west build -b picoboy/rp2040 -p -d build/picoboy zephyr/samples/drivers/display
west flash -d build/picoboy
LVGL Basic Sample
Displays “Hello World!” in the center of the screen and a counter at the bottom which increments every second using the LVGL module on top of the Display driver API. See also Zephyr sample: LVGL basic sample.
west build -b picoboy/rp2040 -p -d build/picoboy zephyr/samples/subsys/display/lvgl
west flash -d build/picoboy
This sample comes with a Shell command line access to the LVGL backend on the console, here configured for a USB console:
Simple test execution on target
uart:~$ lvgl
lvgl - LVGL shell commands
Subcommands:
stats : Show LVGL statistics
monkey : LVGL monkey testing
uart:~$ lvgl stats
stats - Show LVGL statistics
Subcommands:
memory : Show LVGL memory statistics
Usage: memory [-c]
-c dump chunk information
uart:~$ lvgl stats memory
Heap at 0x20001618 contains 2047 units in 11 buckets
bucket# min units total largest largest
threshold chunks (units) (bytes)
-----------------------------------------------------------
0 1 1 1 8
1 2 2 2 16
2 4 1 4 32
10 1024 1 1326 10608
10660 free bytes, 5372 allocated bytes, overhead = 348 bytes (2.1%)
uart:~$ device list
devices:
- clock-controller@40008000 (READY)
DT node labels: clocks
- reset-controller@4000c000 (READY)
DT node labels: reset
- cdc_acm_console_uart (READY)
DT node labels: cdc_acm_console_uart
- timer@40054000 (READY)
DT node labels: timer
- watchdog@40058000 (READY)
DT node labels: wdt0
- dma@50000000 (READY)
DT node labels: dma
- gpio-port@0 (READY)
DT node labels: gpio0
- usbd@50110000 (READY)
DT node labels: usbd zephyr_udc0
- pwm@40050000 (READY)
DT node labels: pwm
- vreg@40064000 (READY)
DT node labels: vreg
- spi@4003c000 (READY)
DT node labels: spi0
- sh1106-128x64@0 (READY)
DT node labels: sh1106_128x64 oled_panel
- gpio-keys (READY)
DT node labels: gpio_keys
- lvgl-keypad (READY)
DT node labels: lvgl_keypad