wolfBoot/docs/remote_flash.md

2.1 KiB

Remote Flash Support via UART

Overview

wolfBoot supports external partition emulation through UART communication, enabling:

  • Remote flash storage
  • Asynchronous updates
  • Multi-processor architectures
  • External update staging

Configuration

Build Options

# Required settings
UART_FLASH=1   # Enable UART flash
EXT_FLASH=1    # Enable external flash API

UART Driver Integration

Required HAL Functions

/* Initialize UART with specified parameters */
int uart_init(
    uint32_t bitrate,  // Communication speed
    uint8_t data,      // Data bits
    char parity,       // Parity mode
    uint8_t stop       // Stop bits
);

/* Transmit single byte */
int uart_tx(
    const uint8_t c    // Byte to send
);

/* Receive single byte */
int uart_rx(
    uint8_t *c        // Buffer for received byte
);

Implementation Notes

  • Example drivers: hal/uart
  • Platform-specific adaptations needed
  • Simple interface design
  • Minimal dependencies

Host Implementation

UART Flash Server

Host System                      Target System
+----------------+   UART    +----------------+
| Flash Server   | <------> | wolfBoot       |
| - File storage |          | - Remote flash |
| - RPC handler  |          | - Update mgmt  |
+----------------+          +----------------+

Components

  • Location: tools/uart-flash-server
  • Platform: GNU/Linux host
  • Storage: Local file system
  • Protocol: Custom UART messages

Update Mechanism

Operation Model

Operation Implementation
Read UART RPC → Host read
Write UART RPC → Host write
Update Standard wolfBoot flow
Rollback Remote partition backup

Key Features

  • Transparent operation
  • Standard update flow
  • Remote storage support
  • Automatic backup
  • Rollback capability

Architecture Benefits

  • Consistent API
  • Flexible storage
  • Reliable updates
  • Host accessibility