Realtek RTL8730E
The Realtek RTL8730E is a high-performance, multi-core IoT SoC from the Realtek Ameba family, targeting smart-display panels, automotive HMI, video doorbells, industrial tablets and edge-AI gateways.
NuttX runs on the dual-core Arm Cortex-A32 application processor at up to 1.2 GHz. The KM4 network core and the KM0 low-power core continue to run the vendor wireless firmware independently; NuttX interacts with them through the WHC (Wireless Host Controller) IPC interface.
Highlights
CPU: Dual-core Arm Cortex-A32 (Armv8-A ISA, AArch32), up to 1.2 GHz, with NEON/FPU and hardware virtualisation extensions.
Co-processors: Real-M300 (KM4, Cortex-M55-compatible, 333 MHz) for networking; Real-M200 (KM0, Cortex-M23-compatible, 40 MHz) for power management.
Memory: 256 KB on-chip SRAM; up to 256 MB DDR3L or 64 MB DDR2 external DRAM; 8/16/32 MB SPI NOR flash (varies by part).
Wireless: Wi-Fi 6 (802.11ax), dual-band 2.4 GHz / 5 GHz, 1T1R; Bluetooth 5 dual-mode (BR/EDR + LE) with LE Audio / Auracast support.
Peripherals: UART ×4, SPI ×2, I2C ×3, I2S ×2, PDM, USB 2.0, MIPI-DSI, SD/eMMC, PWM, ADC, RTC, watchdogs, GDMA, and 38–59 GPIO (package-dependent).
Security: Secure Boot, Arm TrustZone-A, AES/SHA/RSA/ECDSA hardware crypto, OTF flash decryption, TRNG, OTP, PSA Level 3 / FIPS 140-3.
Packages: QFN100 (10×10 mm), DR-QFN144 (11×11 mm).
Temperature: −40 °C to 105 °C.
Boot Chain
The RTL8730E uses Arm Trusted Firmware (ATF). NuttX is packaged as BL33 inside a Firmware Image Package (FIP) alongside the vendor BL2 and BL32 (SP_MIN). The flash layout is:
boot.bin @ 0x08000000 — KM4 bootloader
app.bin @ 0x0803FC00 — KM0+KM4 firmware + ATF FIP (BL2+BL32+BL33=NuttX)
The make flash target assembles the FIP and app.bin automatically; there
is nothing to prepare by hand (see Building and Flashing below).
Memory
Block |
Start Address |
Length |
|---|---|---|
DDR |
0x6000_0000 |
64 MB |
NuttX executes entirely from DDR (loaded by ATF from NOR flash at boot). The exact DDR size depends on the part; the RTL8730EH has 64 MB DDR2. NuttX is loaded at 0x60300000 with the heap starting at 0x60400000. The 256 KB on-chip SRAM is partitioned among the KM4 and KM0 co-processors and is not directly used by the CA32 NuttX image.
Vendor SDK and Toolchain
The build depends on Realtek’s open ameba-rtos SDK (Wi-Fi / BT firmware
and low-level chip libraries) and the matching arm-none-eabi asdk
toolchain. Neither is part of the NuttX tree; both are fetched automatically:
make fetches them on the first
makeinvocation (from itsPREBUILDstep).CMake fetches them when you source
. tools/ameba/env.sh <board>before runningcmake.
The SDK is a shallow git clone of the pinned revision of
https://github.com/Ameba-AIoT/ameba-rtos.git into
arch/arm/src/common/ameba/ameba-rtos (git-ignored) and is built
unmodified. Export AMEBA_SDK to use a local checkout instead.
Building and Flashing
Replace <board> with an actual board (e.g. rtl8730e_evb) and <config>
with one of its configurations. The first build fetches the SDK and toolchain.
With make
$ ./tools/configure.sh <board>:<config>
$ make
With CMake
Source the Ameba environment once first so the correct asdk is on PATH:
$ . tools/ameba/env.sh <board>
$ cmake -B build -DBOARD_CONFIG=<board>:<config> -GNinja
$ cmake --build build
Flashing
Connect a USB-UART adapter and use the built-in flash target (baud defaults
to 1500000; override with AMEBA_BAUD):
$ make flash AMEBA_PORT=/dev/ttyUSB0 # make build
$ AMEBA_PORT=/dev/ttyUSB0 cmake --build build --target flash # CMake build
The flash target automatically:
Packages
nuttx.binas BL33 into a FIP together with the prebuiltbl2.binandbl32.bin.Prepends the vendor KM0/KM4 firmware prefix to produce
app.bin.Writes
boot.binandapp.binto the NOR flash viaAmebaFlash.pyusing theRTL8730E_NOR.rdevprofile.
Serial console — after flashing, connect to the LOG-UART at 1500000 8N1:
$ picocom -b 1500000 /dev/ttyUSB0
Configuration
$ make menuconfig # make build
$ cmake --build build -t menuconfig # CMake build
Supported Features
NSH over the LOG-UART console
Symmetric Multi-Processing (SMP) on both Cortex-A32 cores
littlefs persistent storage at
/dataon the SPI NOR flash, backing the Wi-Fi key-value storeWi-Fi station (scan / connect) and SoftAP via the
wapitoolNetworking on NuttX’s own TCP/IP stack, with DHCP client and DHCP server
/etcread-only ROMFS populated from the board’ssrc/etc/tree