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
On-target memory for this board target: 256 MiB of RAM, N/A of Flash.
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
ARM Cortex-A7 CPU1 |
|
Interrupt controller |
on-chip |
ARM Generic Interrupt Controller v21 |
|
Serial controller |
on-chip |
||
SRAM |
on-board |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
per-core ARM architected timer1 |
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