Servo Micro (aka “uServo”) is a self contained replacement for Yoshi Servo Flex. It is meant to be compatible with Servo v2/v3 via
servod. The design uses Case Closed Debug software on an STM32 microcontroller to provide a CCD interface into systems with a Yoshi debug port.
Servo Micro is usually paired with a Servo v4 Type-A, which provides ethernet, dut hub, and muxed usb storage.
Like other Servo boards, the Servo Micro requires
servod to be running:
(chroot) $ sudo servod -b [board]
Most Servo header functionality should be available, used in the same way as any other servo. Here you can see the Servo v4 and Servo Micro plugged into a system.
Servo Micro can be used to flash the AP BIOS or EC with
flashrom. Note that
flashrom's command line needs to specify the correct endpoint, which is
raiden rather than
For example, on a 3.3V DUT:
(chroot) $ dut-control spi2_vref:pp3300 spi2_buf_en:on (chroot) $ sudo flashrom --programmer raiden_debug_spi -r bios.bin (chroot) $ dut-control spi2_vref:off spi2_buf_en:off
target=(AP|EC)command as with other
raiden_debug_spidevices. Adding this flag to the
flashromcommand will cause an error.
jtag_vref, or any
On Servo micro (and perhaps other STM based Servos (v4)) the UART can become inoperable and require the USB port to be reset to recover.
This will manifest itself as failures like:
Servod - ERROR - Problem initializing SERVO_JTAG_TDI -> off
Problem with ['servo_v4_version'] :: Timeout waiting for response
Some device configurations (verified on cyan boards) are able to draw excessive current from the Servo Micro, putting the hardware in a non-responsive state. Brownout detection has been enabled to escape this condition by rebooting the servos impacted. Impacted DUTs may require deployment using Servo v2.
Servo Micro can be updated to the latest stable firmware using the
servodmust not be running when updating since it locks the device.
Sync the latest source:
(chroot) repo sync
sys-firmware/servo-firmware to the latest version:
Update the firmware:
(chroot) $ sudo servo_updater -b servo_micro
servo micro code lives in the ec codebase. It can be built as follows:
(chroot) $ cd ~/trunk/src/platform/ec (chroot) $ make BOARD=servo_micro -j8
To flash a working Servo Micro:
(chroot) $ sudo servo_updater -b servo_micro -f build/servo_micro/ec.bin
If the flash is empty or the image is broken, you can flash the Servo Micro using the
BOOT0 select pin, which is held by USB OTG's ID pin. The easiest way to do this is to plug a USB OTG adapter into Servo Micro, then plug an A-A cable into your desktop and Servo Micro.
(chroot) $ ./util/flash_ec --board=servo_micro
Servo Micro exports a console UART over the small header next to the USM-micro port. There is a rare cable for this header, but it's easier to just rework UART wires on and use a standard FTDI pin header 3.3V cable.