Pico Ultra

Overview

Luckfox Pico Ultra W is a low-cost micro Linux development boards based on the Rockchip RV1106 chip, and comes with 256MB of DDR3L DRAM.

Hardware

Supported Features

The pico_ultra board supports the hardware features listed below.

on-chip / on-board
Feature integrated in the SoC / present on the board.
2 / 2
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files.
vnd,foo
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.

pico_ultra/rv1106 target

Type

Location

Description

Compatible

CPU

on-chip

ARM Cortex-A7 CPU1

arm,cortex-a7

Interrupt controller

on-chip

ARM Generic Interrupt Controller v21

arm,gic-v2

Serial controller

on-chip

ns16550 UART15

ns16550

SRAM

on-board

Generic on-chip SRAM1

mmio-sram

Timer

on-chip

per-core ARM architected timer1

arm,armv8-timer

Programming and Debugging

The Rockchip RV1106 must be initialized via the Luckfox SDK U-Boot before running Zephyr.

Modifying U-Boot

The default U-Boot must be modified to enable cache commands and prevent forcing Thumb mode. Apply these patches to the Luckfox SDK:

--- a/sysdrv/source/uboot/u-boot/cmd/boot.c
+++ b/sysdrv/source/uboot/u-boot/cmd/boot.c
@@ -21,10 +21,6 @@
 unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc,
                                  char * const argv[])
 {
-#ifdef CONFIG_CPU_V7
-    ulong addr = (ulong)entry | 1;
-    entry = (void *)addr;
-#endif
     return entry (argc, argv);
 }

--- a/sysdrv/source/uboot/u-boot/configs/luckfox_rv1106_uboot_defconfig
+++ b/sysdrv/source/uboot/u-boot/configs/luckfox_rv1106_uboot_defconfig
@@ -141,3 +141,4 @@
 CONFIG_SPL_GZIP=y
 CONFIG_ERRNO_STR=y
 # CONFIG_EFI_LOADER is not set
+CONFIG_CMD_CACHE=y

Follow the official Luckfox Pico SDK instructions to rebuild and flash U-Boot.

Building and Running

Build the Zephyr application:

# From the root of the zephyr repository
west build -b pico_ultra samples/hello_world

Load the binary via TFTP, disable and flush caches, then launch Zephyr:

=> dcache off && icache off
=> dcache flush && icache flush
=> setenv ipaddr 192.168.1.2
=> setenv serverip 192.168.1.1
=> tftp 0x0 zephyr.bin
=> go 0x0

You should see the following output on the serial console:

*** Booting Zephyr OS build v4.3.0-4280-g2f3d729d951a ***
Hello World! pico_ultra/rv1106