Features/MicroBit

From QEMU

The micro:bit is a small ARMv6-M board designed for learning about computers. It can be programmed in Python, Javascript, and C/C++.

Julia Suvorova and Steffen Görtz are implementing micro:bit support in QEMU as part of the Outreachy and Google Summer of Code internship program.

Details

Patches

Date Name Message ID Status
5/3/18 [PATCH 0/2] arm: Add nRF51 SoC and micro:bit machine [email protected] superseded
5/29/18 [RFC 0/3] nRF51 SoC: Add UART support [email protected] Not merged
6/2/18 [RFC 0/2] arm: add skeleton Cortex M0 CPU model [email protected] superseded
6/3/18 [RFC v3] qapi: command category to stimulate high-level machine devices [email protected] not merged
6/10/18 [RFC] target/arm: add ARMv6-M UNDEFINED 32-bit instruction test [email protected] superseded
6/12/18 [PATCH] target/arm: Allow ARMv6-M Thumb2 instructions [email protected] merged
6/14/18 [RFC v2] target/arm: add ARMv6-M UNDEFINED 32-bit instruction test [email protected] not merged
6/18/18 [PATCH] target/arm: Minor cleanup for ARMv6-M 32-bit instructions [email protected] merged
6/19/18 [RFC] Add NRF51 RNG peripheral [email protected] superseded
6/19/18 [PATCH] target/arm: Set strict alignment for ARMv6-M load/store [email protected] superseded
6/22/18 [PATCH v2 0/2] Strict alignment for ARMv6-M and ARMv8-M Baseline [email protected] merged
6/26/18 [RFC v2] arm: Add NRF51 SOC non-volatile memory controller [email protected] superseded
6/26/18 [RFC] arm: Add NRF51 SOC non-volatile memory controller [email protected] superseded
6/26/18 [RFC v2] arm: Add NRF51 random number generator peripheral [email protected] superseded
6/27/18 [PATCH v2 0/3] arm: Add nRF51 SoC and micro:bit machine [email protected] not merged
6/27/18 [RFC 0/8] arm: Changes to Microbit Board and NRF51 SOC [email protected] not merged
6/30/18 [PATCH v2 0/3] arm: add skeleton Cortex M0 CPU model [email protected] not merged
7/2/18 [PATCH] qtest: Use cpu address space instead of system memory [email protected] merged
7/4/18 [PATCH 0/2] nvic: Handle ARMv6-M SCS reserved registers [email protected] superseded
7/4/18 [PATCH] target/arm: Forbid unprivileged mode for M Baseline [email protected] superseded
7/5/18 [PATCH v2 0/2] nvic: Handle ARMv6-M SCS reserved registers [email protected] superseded
7/5/18 [PATCH v3 0/2] nvic: Handle ARMv6-M SCS reserved registers [email protected] queued
7/5/18 [PATCH v2] target/arm: Forbid unprivileged mode for M Baseline [email protected] queued
7/12/18 [RFC v3 0/2] Add NRF51 SOC non-volatile memory controller [email protected] not merged
7/13/18 [PATCH] arm: Add ARMv6-M programmer's model support [email protected] not merged
7/13/18 [RFC v3] arm: Add NRF51 random number generator peripheral [email protected] not merged
7/15/18 [RFC 1/2] arm: Add nRF51 GPIO peripheral [email protected] superseded
7/16/18 [RFC v2 1/2] arm: Add nRF51 GPIO peripheral [email protected] not merged
7/25/18 [PATCH v3 0/7] arm: add Cortex M0 CPU model and hex file loader [email protected] superseded
7/26/18 [PATCH v3 0/3] arm: Add nRF51 SoC and micro:bit machine [email protected] superseded
8/3/18 [PATCH v6 0/7] arm: add Cortex M0 CPU model and hex file loader [email protected] merged
7/26/18 [PATCH v5 0/3] arm: Add nRF51 SoC and micro:bit machine [email protected] not merged
8/6/18 [PATCH 0/7] arm: nRF51 Devices and Microbit Support [email protected] not merged
8/11/18 [PATCH 0/7] arm: Instantiation of nRF51 SOC and bbc:microbit devices [email protected] not merged
8/31/18 [PATCH v6 0/3] arm: Add nRF51 SoC and micro:bit machine [email protected] merged
// UART v3 [email protected] merged
10/30/18 [PATCH v3 00/13] arm: nRF51 Devices and Microbit Support [email protected] not merged
11/2/18 [PATCH v4 00/13] arm: nRF51 Devices and Microbit Support [email protected] not merged

Patches not contributed by the gang, but necessary for the microbit tree:

Date Name Message ID Status
5/16/18 [PATCH v9 0/2] Implement Hex file loader and add test case [email protected] merged
6/1/18 [PATCH 0/2] armv7m: Remove armv7m_init() function [email protected] merged
7/13/18 [PATCH v2 00/16] Fix crashes with introspection of ARM devices We need to adapt our devices according to this patch ??

Devices

nRF51 System-on-Chip

  • Cortex M0 (ARMv6-M) CPU
    • SysTick timer
    • NVIC irq controller
  • UART [Julia]
  • Watchdog
  • Clock controller [Julia]
  • Timers [Steffen]
  • RTC
  • RNG [Steffen]
  • TWI (i2c)
  • SPI
  • ADC
  • Quadrature decoder
  • Radio
  • GPIO [Steffen]
  • NVMC [Steffen]
  • SWI [Steffen] [seem to be covered by the NVIC without any work to do]

bbc:microbit

  • A & B Buttons [Steffen]
  • 5x5 LEDs [Steffen]
  • i2c Accelerometer/Magnetometer

User interface

  • New WebSocket QMP monitor for UI commands
  • Button commands
  • LED update events
  • HTML/Javascript frontend that connects to WebSocket UI monitor