Skip to the content
PCBKitNew board
4 layers135 × 118 mmMicroTrainer, the printed circuit board in 3D

MicroTrainer

mlyle/armtrainer24

ARM "Microprocessor Trainer" code base

Size
135 × 118 mm
Copper layers
4
Thickness
1.6 mm
Parts
68
Nets
65
Pads
300
Tracks, vias
437, 89
Pours
305
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
25 Sep 2021
Updated
17 Jul 2026

Overview

MicroTrainer is an open-source printed circuit board by mlyle, from the mlyle/armtrainer repository on GitHub, published under the BSD-2-Clause licence. It is a 4-layer board of 135 × 118 mm with 68 parts on 65 nets, routed with 437 tracks and 89 vias.

It is built around the LP5907MFX-3.3. Its parts include 23 switches, 12 capacitors, 12 resistors, 4 connectors and 2 ICs. It belongs with the STM32 boards of this library.

Main components

1

README

README.md

ARM Trainer

This is a minimal monitor and and hardware stack for a small microcontroller trainer board, that was used to teach a Computer Organization class to students from ages 11-14.

Microprocessor trainers were a commonplace tool used to learn computing in the 1970s and early 1980s. They replicated the console found on minicomputers, and allowed engineers to gain experience writing programs in machine code.

Microprocessor Trainer

The Computer Organization class that I taught was a "how computers work" class with minimal use of conventional computers in the classroom. We focused initially on gates, building from there to understand simple combinatorial and sequential circuits, and eventually ALUs, register files, and microprocessor subsystems. This culminated in a study of ARM-Thumb machine code.

ARM-Thumb machine code was a fairly ideal architecture for students to learn, because:

  • It is a real architecture, in real use.
  • It has a reasonable number of general purpose registers.
  • A fixed-length, relatively simple encoding avoids unnecessary complexity.

Repository Layout

  • src/ and inc/ contain the trainer firmware.
  • hw/ contains the KiCad hardware designs and manufacturing outputs.
  • arm-manual/ contains the student manual sources.
  • examples/ contains programs captured from trainers during class.
  • tools/ contains host-side conversion, disassembly, capture, and printing tools.

Run make tools to build the host-side utilities in build/tools/. The classroom scripts should be run from any directory; they locate the repository and examples automatically.

Example Program

By a student, Robin K:

text
20000000	DF20		(clear screen)
20000002	2001		(mov r0, #1)
20000004	2102		(mov r1, #1)
20000006	180A		(add r2, r0, r1)
20000008	DF21		(print contents of register 0)
2000000A	4608		(mov r0, r1)
2000000C	4611		(mov r1, r2)
2000000E	E7FA		(b 20000006)

TODO

  • Students have complained that some invalid instructions-- BBAD, EF78-- seem to lock up the machine monitor. I think I removed some safeguard code that I didn't think was necessary, but I need to inspect that again.
  • Input calls do not allow the user to enter the number "0".
  • The manual should be updated with some of the system calls that have not been documented
    • Branch calculation formulae are wrong in the manual.
    • In particular, the input calls.
    • There may be a typo in the subtract register instruction.
    • The display icon and screen coordinate system could be more clearly explained
    • Need to update manual for new key shortcuts
  • Overall curriculum, etc, should get posted here.

Parts

68
QtyValueFootprintReferences
85.1kResistor_SMD:R_0603_1608MetricR1, R2, R3, R4, R5, R6, R9, R12
8MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4, H5, H6, H7, H8
60.1uFCapacitor_SMD:C_0603_1608MetricC2, C4, C5, C6, C7, C12
42.2uFCapacitor_SMD:C_0603_1608MetricC1, C3, C8, C9
3FiducialFiducial:Fiducial_1mm_Mask2mmFID1, FID2, FID3
210Resistor_SMD:R_0603_1608MetricR7, R8
212pFCapacitor_SMD:C_0603_1608MetricC10, C11
2330Resistor_SMD:R_0603_1608MetricR10, R11
2LEDLED_SMD:LED_0805_2012MetricD1, D2
125MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1BootJumperJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP1
1Conn_01x04Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ4
1Conn_01x08Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ5
1Conn_ARM_SWD_TagConnect_TC2030Connector:Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_VerticalJ1
1KEY_0Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW19
1KEY_1Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW20
1KEY_2Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW21
1KEY_3Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW22
1KEY_4Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW13
1KEY_5Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW14
1KEY_6Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW15
1KEY_7Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW16
1KEY_8Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW7
1KEY_9Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW8
1KEY_AButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW9
1KEY_ADDRButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW11
1KEY_BButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW10
1KEY_CButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW1
1KEY_CLRButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW5
1KEY_DButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW2
1KEY_EButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW3
1KEY_FButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW4
1KEY_LOADButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW23
1KEY_RSTButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW25
1KEY_RUNButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW24
1KEY_STEPButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW18
1KEY_STORButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW17
1LP5907MFX-3.3Package_TO_SOT_SMD:SOT-23-5U1
1STM32F411R_C-E_TxPackage_QFP:LQFP-64_10x10mm_P0.5mmU3
1USB_C_Receptacle_USB2.0Connector_USB:USB_C_Receptacle_G-Switch_GT-USB-7010ASVJ6

Questions

How big is the MicroTrainer PCB?

It measures 135 × 118 mm and has 4 copper layers, 1.6 mm thick.

What parts does the MicroTrainer use?

68 parts, built around the LP5907MFX-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the MicroTrainer KiCad files?

From the mlyle/armtrainer repository on GitHub, at the commit this page was made from: the board is hw/MicroTrainer.kicad_pcb and its schematic hw/MicroTrainer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the MicroTrainer design in my own project?

Its repository publishes it under the BSD-2-Clause licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers299 × 127 mmLaunch, the printed circuit board in 3D

    Launch

    system76/launch

    System76 Launch Configurable Keyboard

    385 parts1.4kGPL-3.0
  • 2 layers316 × 119 mmTeensy Grovebox, the printed circuit board in 3D

    Teensy Grovebox

    jerry20091103/Teensy_Grovebox

    A portable synth and music multi-tool made with Teensy 4.1

    142 parts150MIT
  • 4 layers96 × 28 mmThelio io, the printed circuit board in 3D

    Thelio io

    system76/thelio-io-hardware

    KiCad electrical design of Thelio Io board

    78 parts70GPL-3.0
  • 2 layers58 × 38.3 mmEsp32-caliper, the printed circuit board in 3D

    Esp32-caliper

    Mew463/esp32-caliper

    It features a built in 150mAh battery and a USB C interface for charging/uploading code.

    44 parts59
  • 4 layers231 × 67 mmBESC G2, the printed circuit board in 3D

    BESC G2

    galpavlin/BESC-G2

    BESC second generation

    300 parts58
  • 4 layers26.4 × 56 mmRPI5-SDexpress Hat, the printed circuit board in 3D

    RPI5-SDexpress Hat

    will127534/RPI5-SDexpress-Hat

    ctrl-c "RPI5-CFE-Hat" ctrl-v "RPI5-SDexpress-Hat"

    51 parts37MIT
  • 6 layers90.1 × 135 mmHandheld, the printed circuit board in 3D

    Handheld

    gamebub/gamebub-pcb

    PCB design files for the Game Bub project

    386 parts31CERN-OHL-S-2.0
  • 2 layers99 × 69 mmMSI001, the printed circuit board in 3D

    MSI001

    ATmega8/kiterf

    Release KiteRF is a SDR system with K210 & FPGA & ESP32 as its core controller, which make SDR more intelligent, portable and cheap.

    170 parts25MIT