Computer-Use Agent Taxonomy中文
R02.06.01.01 · TASK CLASS

Firmware & microcontroller programming

Configure peripherals, build and flash firmware, verify behavior in a simulator or on logs.

20 project-authored proposals · taxonomy v1.1 · 0 new benchmark runs. Verifiers and partial-credit rules below are designs, not executed results.

Typical applications
STM32CubeIDE · Arduino IDE · PlatformIO
Class GUI-need label
HY · Hybrid

Task proposals · 20

Expand to inspect the complete original wording and proposed checks. Original proposal text remains English in both interfaces.

R02.06.01.01-T01 Set up DMA UART echo with idle-line detection on an STM32

Original instruction

In STM32CubeIDE, project fixtures/nucleo_f446_echo targets a NUCLEO-F446RE. Configure USART2 at 115200 8N1 on PA2/PA3 with DMA circular RX and idle-line interrupt, and echo each received line back prefixed with 'RX:'. Build and test in the provided Renode platform script.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · STM32CubeMX · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
click · Point & click code · Code & commands
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
3 / 5

Proposed verifier

Grader parses the .ioc (USART2 async, baud, DMA1 Stream5 circular) and runs the ELF in Renode: feeds 50 lines of 1–200 bytes at random gaps; every reply must equal 'RX:'+line with no drops. Build must come from the CubeIDE managed project (Debug config).

Proposed partial credit

25% .ioc peripheral config; 15% DMA circular + idle IRQ; 50% echo correctness over 50 lines; 10% clean build

R02.06.01.01-T02 Solve an STM32 clock tree for 180 MHz SYSCLK with USB at 48 MHz

Original instruction

In STM32CubeMX for the STM32F446RE, set an 8 MHz HSE bypass source and configure PLLs so SYSCLK is 180 MHz, APB1 45 MHz, APB2 90 MHz and the USB OTG FS clock exactly 48 MHz. Regenerate code into fixtures/f446_clock and build.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeMX · STM32CubeIDE
Interfaces
desk · Desktop GUI
GUI need · task setting
G2 · GUI-essential
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
click · Point & click vis · Visual judgment
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
3 / 5

Proposed verifier

Grader parses .ioc RCC values and runs the built ELF in Renode reading back RCC registers: SYSCLK 180 MHz, PCLK1 45, PCLK2 90, 48 MHz domain exact, flash latency 5 WS, overdrive enabled. CubeMX script mode (-s/-q) is blocked for the agent; the .ioc must be saved by CubeMX (version header) and regenerate with an empty diff, so hand-edited RCC values are detected.

Proposed partial credit

40% SYSCLK and bus clocks; 30% USB 48 MHz exact; 15% flash latency/overdrive; 15% regenerates cleanly

R02.06.01.01-T03 Blink with millis() and a debounced button in the Arduino IDE

Original instruction

In the Arduino IDE with the Wokwi simulator project fixtures/uno_blink, make the LED on pin 13 blink at 2 Hz without delay(), and toggle blinking on/off with a button on pin 2 using 30 ms software debounce. Bounce noise is simulated by the circuit.

Platforms
mac · macOS win · Windows
Applications
Arduino IDE · Wokwi
Interfaces
desk · Desktop GUI
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands click · Point & click
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
1 / 5

Proposed verifier

Wokwi CI runs 10 s with scripted button presses including 5 ms bounce bursts: logic analyzer on pin 13 shows 250±5 ms half-periods while enabled and steady low when disabled; exactly one toggle per press. Sketch must not call delay().

Proposed partial credit

40% 2 Hz timing; 40% debounced toggle; 20% no delay()

R02.06.01.01-T04 Port an Arduino sketch to PlatformIO with native unit tests

Original instruction

Port fixtures/esp32_weather (Arduino IDE sketch with 3 .ino tabs) to a PlatformIO project for esp32dev, split the parser into lib/ with a header, and add Unity tests for the parser that run in the native environment.

Platforms
mac · macOS win · Windows lin · Linux
Applications
PlatformIO · VS Code
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
CL · CLI-sufficient
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
2 / 5

Proposed verifier

Grader runs 'pio run -e esp32dev' (builds) and 'pio test -e native' (≥8 tests pass); hidden extra parser tests also pass against lib/. Firmware output in Wokwi for 30 s matches the original sketch's serial log line-for-line.

Proposed partial credit

30% esp32 build; 30% native tests; 20% hidden parser tests; 20% identical runtime log

R02.06.01.01-T05 Add a BME280 sensor through a Zephyr devicetree overlay

Original instruction

fixtures/zephyr_env (Zephyr 3.6, nrf52840dk) needs a BME280 on I2C0 (SDA P0.26, SCL P0.27, addr 0x76). Write the devicetree overlay and Kconfig, read temperature/pressure/humidity every 2 s via the sensor API and log them. Test in the provided Renode setup with an emulated BME280.

Platforms
mac · macOS win · Windows lin · Linux
Applications
Zephyr · nRF Connect for VS Code · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands click · Point & click
Work product
WP06 · Code/engineering
Conditions
tutorial · Follow docs/tutorial
Proposed difficulty
4 / 5

Proposed verifier

west build succeeds; zephyr.dts contains bme280@76 on i2c0 with the pins. Renode run: sensor model set to 3 scripted values; log lines match within ±0.1 °C, ±10 Pa, ±0.5 %RH and are 2±0.1 s apart.

Proposed partial credit

25% overlay and pins; 15% Kconfig; 45% values logged correctly; 15% timing

R02.06.01.01-T06 Fix a FreeRTOS priority-inversion stall on an STM32

Original instruction

fixtures/f4_rtos_logger (STM32CubeIDE, FreeRTOS) sometimes stalls the high-priority control task for >50 ms. Using the CubeIDE FreeRTOS views and the Renode trace, find the inversion between the logger and SD tasks and fix it without changing task priorities.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · FreeRTOS · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands click · Point & click vis · Visual judgment
Work product
WP06 · Code/engineering
Conditions
hidden · Hidden/stale state
Proposed difficulty
4 / 5

Proposed verifier

Grader runs 60 s in Renode with the stress script and records control-task timestamps via a GPIO: max period jitter ≤2 ms, zero deadline misses. Task priorities unchanged (static check of osThreadAttr); fix must use a mutex with priority inheritance or restructure the lock.

Proposed partial credit

20% root cause written to output/rca.md; 60% jitter and deadlines; 20% priorities unchanged

R02.06.01.01-T07 Generate a 25 kHz PWM on a timer channel

Original instruction

In fixtures/fan_ctrl (STM32CubeIDE, STM32F103C8), configure TIM3 CH1 on PA6 for 25 kHz PWM with duty set from a UART command 'D=<0..100>' (default 37.5%). Verify in Renode with the GPIO capture script.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · STM32CubeMX · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
click · Point & click code · Code & commands
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
3 / 5

Proposed verifier

Renode captures PA6 edges: frequency 25 kHz ±0.5%, default duty 37.5±0.5%; after 'D=80' duty 80±0.5% within 1 period; invalid commands ignored. .ioc must show TIM3 PWM Generation CH1.

Proposed partial credit

35% frequency; 25% default duty; 30% UART duty update; 10% .ioc config

R02.06.01.01-T08 Sample three ADC channels with circular DMA and averaging

Original instruction

In fixtures/f446_adc, configure ADC1 to scan IN0, IN1, IN4 continuously with circular DMA, average 64 samples per channel and print millivolts once per second on USART2. The Renode model drives known voltages on the pins.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
click · Point & click code · Code & commands
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
3 / 5

Proposed verifier

Renode feeds 5 voltage steps per channel; printed values must match within ±5 mV at 1.00±0.05 s intervals. .ioc scan mode with 3 ranks in correct order; DMA circular half-word.

Proposed partial credit

30% ADC scan config; 20% DMA; 40% printed values correct; 10% interval

R02.06.01.01-T09 Implement a dual-slot UART firmware updater with rollback

Original instruction

Extend fixtures/f4_boot so the bootloader accepts a new image over UART (XMODEM-1K), writes it to the inactive slot, verifies its CRC32 and header, swaps on success, and rolls back if the new app fails to confirm boot within 3 resets. Test in Renode.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands
Work product
WP06 · Code/engineering
Conditions
long · Long-horizon
Proposed difficulty
5 / 5

Proposed verifier

Renode scenarios: good image boots and reports v2; corrupted CRC image rejected and v1 boots; image that never confirms rolls back to v1 after 3 resets; power cut mid-write (Renode reset) leaves a bootable v1. Linker scripts place slots at spec addresses.

Proposed partial credit

20% XMODEM transfer; 20% CRC/header check; 30% swap + confirm; 30% rollback and power-cut safety

R02.06.01.01-T10 Enter STOP mode between RTC wakeups

Original instruction

fixtures/l4_sensor (STM32L476) polls a sensor in a busy loop. Make it sample every 10 s using RTC wakeup and STOP2 mode between samples, restoring clocks after wakeup so USART logging still works at 115200.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · STM32CubeMX · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
click · Point & click code · Code & commands
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
4 / 5

Proposed verifier

Renode run of 120 s: 12 samples logged at 10±0.1 s; CPU in STOP2 ≥98% of time (PWR register trace); UART output not garbled (baud check). .ioc RTC wakeup enabled.

Proposed partial credit

30% RTC wakeup period; 40% STOP2 residency; 20% clock restore/UART; 10% config

R02.06.01.01-T11 Diagnose a HardFault from a crash log and fix it

Original instruction

fixtures/f4_parser crashes with a HardFault after receiving input/crash_input.bin. Use STM32CubeIDE's Fault Analyzer and the call stack in the debugger (Renode GDB server) to find the faulting instruction and fix the root cause, writing the fault registers you observed to output/fault.txt.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · Renode · GDB
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
click · Point & click code · Code & commands vis · Visual judgment
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
3 / 5

Proposed verifier

output/fault.txt must contain CFSR and faulting PC equal to the reference. Fixed ELF in Renode processes crash_input.bin and 200 fuzz cases without fault; unit tests pass.

Proposed partial credit

30% correct CFSR/PC; 50% no fault on inputs; 20% tests pass

R02.06.01.01-T12 Publish ESP32 sensor data over MQTT in QEMU

Original instruction

In fixtures/esp_mqtt (ESP-IDF 5.2), connect via the QEMU OpenCores Ethernet to the local Mosquitto broker at 10.0.2.2, publish a JSON reading every 5 s to topic lab/esp/1, subscribe to lab/esp/1/cmd, and handle 'interval=<s>' commands persisted in NVS.

Platforms
mac · macOS win · Windows lin · Linux
Applications
ESP-IDF · QEMU · Mosquitto
Interfaces
term · Terminal desk · Desktop GUI
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
4 / 5

Proposed verifier

Grader runs QEMU 60 s: broker log shows ≥11 JSON messages with schema-valid fields at 5±0.2 s; sending interval=2 changes cadence; after QEMU reboot the 2 s interval persists. idf.py build clean.

Proposed partial credit

25% connects; 30% publishes valid JSON on time; 25% command handling; 20% NVS persistence

R02.06.01.01-T13 Show DS18B20 temperature on an I2C LCD in Wokwi

Original instruction

In fixtures/uno_thermo (Arduino IDE + Wokwi), read a DS18B20 on pin 4 and show 'T: 23.5 C' (one decimal) on a 16x2 I2C LCD at 0x27 every second; show 'SENSOR ERR' if the sensor is disconnected.

Platforms
mac · macOS win · Windows
Applications
Arduino IDE · Wokwi
Interfaces
desk · Desktop GUI
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
G2 · GUI-essential
Interaction primitives
code · Code & commands click · Point & click
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
2 / 5

Proposed verifier

Wokwi CI scenario sets temperatures 23.5, -4.0, 85.0 and disconnects the sensor: LCD buffer text must match exactly within 1.5 s of each change.

Proposed partial credit

60% formatted temperatures (3 cases); 25% error text; 15% update rate

R02.06.01.01-T14 Shrink firmware to fit 64 KB of flash

Original instruction

fixtures/f103_meter builds to 71 KB but the STM32F103C8 has 64 KB. Reduce it below 60 KB without removing features: tune optimization and LTO, replace float printf with a fixed-point formatter, and drop unused HAL modules. All unit and Renode tests must pass.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · arm-none-eabi-gcc · Renode
Interfaces
term · Terminal desk · Desktop GUI
GUI need · task setting
CL · CLI-sufficient
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
3 / 5

Proposed verifier

arm-none-eabi-size: text+data ≤60 KB. Renode functional suite (15 checks of serial output) passes; printed values identical to the original firmware's log. Feature flags unchanged.

Proposed partial credit

40% size target; 40% functional suite; 20% identical output formatting

R02.06.01.01-T15 Accept only a CAN ID range with hardware filters

Original instruction

In fixtures/f4_can (STM32CubeIDE), configure bxCAN at 500 kbit/s with hardware filters so only standard IDs 0x100–0x10F reach FIFO0, and reply to ID 0x105 requests with a status frame on 0x585. No software ID filtering is allowed.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands click · Point & click
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
4 / 5

Proposed verifier

Renode CAN hub injects 500 frames across IDs: RX FIFO interrupt count equals the in-range count exactly; 0x105 requests get a 0x585 reply ≤1 ms with correct payload. Static check rejects software ID comparisons in the RX callback.

Proposed partial credit

25% bitrate config; 40% filter bank correct; 25% reply; 10% no software filtering

R02.06.01.01-T16 Add an independent watchdog and fix the path that starves it

Original instruction

fixtures/f4_pump must recover from hangs. Enable IWDG with a 500 ms timeout, kick it only from the main supervisor after all tasks report alive, and fix the flash-erase routine that currently blocks for 800 ms.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands click · Point & click
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
3 / 5

Proposed verifier

Renode: normal 120 s run has zero watchdog resets including 3 flash erases; injected task hang causes a reset within 500–550 ms and the reset reason is logged as IWDG. IWDG prescaler/reload give 500 ms ±5%.

Proposed partial credit

25% IWDG timing; 35% no spurious resets; 30% hang triggers reset; 10% reason logged

R02.06.01.01-T17 Configure a PIC16 UART and timer with MPLAB Code Configurator

Original instruction

In MPLAB X with MCC, set up fixtures/pic16_logger (PIC16F18446): 32 MHz HFINTOSC, EUSART at 9600 baud on RB7/RB5, and TMR0 interrupt every 100 ms that prints an incrementing counter. Simulate in the MPLAB simulator with the UART output window.

Platforms
mac · macOS win · Windows
Applications
MPLAB X IDE · MPLAB Code Configurator
Interfaces
desk · Desktop GUI
GUI need · task setting
G2 · GUI-essential
GUI need · ordinary access
G2 · GUI-essential
Interaction primitives
click · Point & click vis · Visual judgment
Work product
WP06 · Code/engineering
Conditions
tutorial · Follow docs/tutorial
Proposed difficulty
3 / 5

Proposed verifier

Grader parses the .mc3 configuration and generated sources (oscillator, baud generator, PPS pins, TMR0 period) and runs the hex in the MPLAB simulator via mdb: UART stimulus log shows counter lines every 100±1 ms. MCC has no documented CLI; the .mc3 must be saved by MCC (its header) and regenerate identically, and writes to it by non-MPLAB processes are logged.

Proposed partial credit

30% oscillator and PPS; 25% UART baud; 25% TMR0 period; 20% simulated output

R02.06.01.01-T18 Migrate an STM32F4 HAL project to an STM32G4

Original instruction

Migrate fixtures/f4_motor (STM32F446RE, HAL, CubeIDE) to an STM32G474RE: recreate the pinout and peripheral setup (TIM1 complementary PWM with dead time, ADC injected conversions, USART2, SPI1) in CubeMX, port the application code, and keep timing behavior identical in Renode.

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · STM32CubeMX · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
HY · Hybrid
Interaction primitives
click · Point & click code · Code & commands geom · Precise geometry
Work product
WP06 · Code/engineering
Conditions
long · Long-horizon
Proposed difficulty
5 / 5

Proposed verifier

Grader compares .ioc pin assignments to a mapping table; Renode captures TIM1 PWM (20 kHz, dead time 500 ns ±10 ns), ADC injected trigger timing and UART protocol replies against the F4 reference trace: all within tolerance. Build zero warnings.

Proposed partial credit

25% pinout mapping; 30% PWM + dead time; 25% ADC trigger timing; 20% protocol parity

R02.06.01.01-T19 Write a SPI NOR flash driver and verify it on a Renode model

Original instruction

Write a W25Q64 driver for fixtures/f4_storage: read JEDEC ID, sector erase, page program across page boundaries, fast read, and busy polling with timeouts. Expose a CLI over UART ('id', 'erase <addr>', 'write <addr> <hex>', 'read <addr> <len>').

Platforms
mac · macOS win · Windows lin · Linux
Applications
STM32CubeIDE · Renode
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands
Work product
WP06 · Code/engineering
Conditions
None declared
Proposed difficulty
4 / 5

Proposed verifier

Renode with a W25Q64 model: 'id' prints EF4017; scripted write spanning a page boundary reads back identical; erase sets 0xFF; busy timeout path returns error when the model stalls. SPI mode 0 and ≤ model's max clock.

Proposed partial credit

15% JEDEC ID; 35% cross-page write/read; 20% erase; 30% busy/timeouts and SPI config

R02.06.01.01-T20 Tune a motor speed PID in a software-in-the-loop simulator

Original instruction

fixtures/dc_motor_sil runs the firmware's control loop (PlatformIO, native target) against a DC-motor plant model. Implement anti-windup PI(D) control at 1 kHz and tune gains so a 0→1500 rpm step settles to ±2% within 0.5 s with ≤5% overshoot, and a 30% load step recovers within 0.3 s.

Platforms
mac · macOS win · Windows lin · Linux
Applications
PlatformIO · VS Code
Interfaces
desk · Desktop GUI term · Terminal
GUI need · task setting
HY · Hybrid
GUI need · ordinary access
CL · CLI-sufficient
Interaction primitives
code · Code & commands vis · Visual judgment
Work product
WP07 · Simulation result
Conditions
None declared
Proposed difficulty
4 / 5

Proposed verifier

Grader runs the SIL harness with hidden plant parameters (±10% variations, 5 cases): settling time, overshoot and load-recovery computed from logged rpm; pass per case if all three meet spec. Loop period must stay 1 kHz.

Proposed partial credit

20% controller implemented; 50% step specs across 5 plants; 30% load-step recovery

Mapped research references

No benchmark reference is assigned to this class in the current mapping.

In this workflow family