The goal of the project was to provide a working bbc:microbit emulation to the Quick Emulator (QEMU). The bbc:microbit is a one board educational computer comprising a Nordic Semiconductor nRF51822 System-on-Chip (SOC) microcontroller based around a ARM Cortex-M0 CPU. The board contains buttons, an 2D dot matrix LED display, a radio and various sensors. Prior to the project, QEMU had no support for the process architecture, the processor, the SOC and the peripheral board. Support for the processor architecture (ARMv6-M) and the Cortex-M0 processor was added by Julia Suvorova as part of her Outreachy project.
My goals for the project were to work on the bbc:microbit board and nRF51822 peripheral model implementation to be able to at least successfully run the bbc:microbit micropython and microsoft pxt (javascript) kernels. Furthermore a user interface was to be added to provide means of interaction with the firmware.
The following contributions were provided and are in the process of being reviewed & merged:
- Implementation of the nRF51 Random Number Generator Peripheral
- Implementation of the nRF51 General Purpose I/O Peripheral
- Implementation of the nRF51 Timer
- Implementation of the nRF51 Non-volatile Memories and Memory Controller
- Implementation of a 2D Dot Matrix Demultiplexer & Display
- Tests for the devices mentioned above
- Implementation/extension of the nRF51822 SOC
- Implementation/extension of the Microbit Board
With the devices mentioned above and the contributions of Julia Suvorova a user can successfully run and interact with the micropython and microsoft pxt firmwares.
- Provide QMP command & event handling for LED matrix and buttons
- Implement a web-based interface based on these QMP buttons & events
- Implement missing SOC/board level devices (see QEMU Feature Wiki)