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 ftdi
.
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_spi
devices. Adding this flag to the flashrom
command will cause an error.jtag_vref
, or any _buf_on_flex
controls.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
or
Problem with ['servo_v4_version'] :: Timeout waiting for response
See https://crbug.com/1016051.
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 servo_updater
tool.
servod
must not be running when updating since it locks the device.Sync the latest source:
(chroot) repo sync
Update sys-firmware/servo-firmware
to the latest version:
(chroot) ~/trunk/src/scripts/update_chroot
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.