Arduino UNO Q
Enablement
LAVA by default is configured to work with this DUT + LAA setup. If you opt for a different setup you’ll have to change your DUT + LAA device configuration on LAVA.
The Arduino UNO Q has a Qualcomm QRB2210 running Debian and an STM32U585 microcontroller (Arm Cortex-M33) running Zephyr. The LAA tests Zephyr on the STM32U585. The SWD pins of the STM32U585 are only wired to the QRB2210, so the image goes to the board over adb, and OpenOCD on the QRB2210 writes it.
This document applies to the following boards:
Arduino UNO Q (ABX00162): arduino-uno-q
Components
The following components are required to automate the board:
USB-C male to USB-C male cable
Three jumper wires for the serial console
Hardware modification
None. The board doesn’t need a reset wire. The LAA resets it by turning the USB power off and on.
Connections
Power
Set the flylead MIB VIO jumper J17 to 3V3.
Connect a USB C-to-C cable from the LAA USB port 1
to the JUSB1 USB-C connector of the board. The board needs 5 V at 3 A,
doesn’t have a power button, and boots when it gets power.
laam laacli power 3v3 on
laam laacli usb 1 on
The same cable carries adb to the QRB2210 for the flasher.
Serial
The console is the STM32U585’s USART1 on the JDIGITAL header. Connect it to
the J12 (UART 4) connector of the flylead MIB:
|
Signal |
UNO Q pin |
|---|---|---|
2 |
|
D1 (PB6, |
3 |
|
D0 (PB7, |
4 |
GND |
GND, next to AREF |
Leave J12 pin 1 (Vio) unconnected.
The console is /dev/ttymxc3, on port 2000 at 115200 8N1:
laam serials connect ttymxc3
Software
Flashing
The flasher doesn’t need a tool in the LAA overlay. The deploy steps are in the
device dictionary’s flasher_deploy_commands:
Power on the board. Debian boots on the QRB2210.
Copy
zephyr.elfto/tmpon the board withadb wait-for-device push, in alinaro/kircontainer.Run OpenOCD on the board with
adb shell. It uses/opt/openocd/bin/openocdandopenocd_gpiod.cfgfrom the Debian image, and writes and verifies the STM32U585 flash over SWD.
Waiting for Debian adds about 25 seconds to the deploy.
OpenOCD doesn’t reset the STM32U585 after the flash. The boot action connects to the console first and then turns the USB power off and on, so the console shows the Zephyr boot banner from the first byte.
During reset-init, OpenOCD prints
Error: Translation from khz to adapter speed not implemented. The GPIO SWD
adapter can’t change its speed. The write and the verify still pass, and
OpenOCD exits with 0.
Debian image
The flasher needs adb on the QRB2210. The Debian image 20260528-558 has adb
on the USB-C connector, and the board shows up as 2341:0078. An older image
showing only a USB Ethernet gadget (1d6b:0104) doesn’t have adb. To reflash
such board, see Recovery.
Recovery
Recovery isn’t automated
Reflashing Debian on the QRB2210 needs a jumper on the JCTL header, set by
hand.
JCTL is the header with 2 rows of 5 pins below the USB-C connector. Its pins
use 1.8 V logic. Seen from the top, with the USB-C connector at the top:
VBUS_DISABLE o o +1V8 (out)
PMIC_RESET o o GND
SOC_SE4_RX o o VOL_UP
SOC_SE4_TX o o VOL_DOWN
USB_BOOT o o GND
A jumper on the bottom row (USB_BOOT to GND) starts the QRB2210 in EDL mode.
Prepare the LAA once:
qcserialclaims the EDL device asttyUSB0, soqdldoesn’t get an answer from the board. Unload it withsudo modprobe -r qcserialand blacklist it in/etc/modprobe.d/.qdlneeds write access to the USB device node. After each enumeration, runsudo chown torizon /dev/bus/usb/001/<device>.
Reflash the board:
Download
qdlv2.4-26 for Linux ARM64 from arduino/qdl-packing.Download then unpack the Arduino Debian image using
tar --zstd -xf.Turn the power off, put the jumper on the bottom row of
JCTLand turn the power on.lsusbshows05c6:9008. Remove the jumper.In the
flash/directory of the image, run:qdl --allow-missing --storage emmc prog_firehose_ddr.elf rawprogram0.xml patch0.xml
arduino-flasher-cli 0.5.4 doesn’t work on the LAA. It runs qdl twice, and
the second run opens the old USB device before the board has reset. It fails
with failed to read sahara request from device.
Health check
There isn’t a health check yet.