Add support for ARM platforms reimaging

Arm platforms use completely different mechanisms to reimage both EC
and bootprom.

Programming the EC happens through the serial interface, using the
protocol imposed by the EC core. There is a utility
(platform/ec/utils/stm32mon.c) which allows to program the EC firmware, this
utility must be present in the path of the servo host.

Programming bootprom happens over a USB interface, and is accomplished
by the cros_write_firmware utility (platform/dev/host/*).

Both utilities had to be modified to properly operate while running
under autotest control, the changes are being reviewed.

The following programmer.py modifications were required to support
both ARM and x86 platforms:

- new programmer classes are being added: Stm32monEcProgrammer for the
  ARM EC and CrosProgrammer for the arm bootprom.

- existing programmer classes are being renamed to more accurately
  reflect their function.

- the required servo settings should be in a list or tuple as opposed
  to dictionary, because the order of setting the controls is
  important.

- the set of utilities required to be available to the programmer is
  now per programmer type.

BUG=chrome-os-partner:15610
TEST=manual
  . successfully reimaged ARM and X86 devices using the following
    commands:

  $ run_remote_tests.sh --use_emerged --board=link --remote=192.168.1.4 \
    fwupdate --args \
    'fwurl=file:///tmp/link.tar.bz2 board=link servo_host=192.168.1.102'

  $ run_remote_tests.sh --use_emerged --board=daisy --servo \
    --remote=192.168.1.6 --allow_offline_remote fwupdate --args \
    'fwurl=file:///tmp/daisy-3604.tar.bz2 board=snow'

  Note that the tests require the DUTs to be up and running and would
  fail if the DUTs are not available over ssh.

Change-Id: I2d2ccc69b9408175c78f3208eb73fc03f29428d9
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/42360
Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
1 file changed