blob: 9063a40183511fb8b8fcf3ca870913d4284711cf [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
AUTHOR = "Chrome OS Team"
NAME = "firmware_UpdateECBin"
PURPOSE = "Servo based software sync EC update test"
CRITERIA = "This test will fail if software sync failed on EC update"
SUITE = "faft"
TIME = "LONG"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
DOC = """
This test verified the EC software sync. The EC binary is embedded in
the BIOS image. On AP startup, AP verifies the EC by comparing the
hash of the current EC with the hash of the embedded EC image. So
updating EC is simple and we just need to change the EC binary on
the BIOS image.
The test steps are:
1. check EC is RO boot and AP is RO boot,
extract the original EC binary on current AP RW A and save it locally,
copy the new_ec binary to the EC area on the current AP RW A,
disable RO_BOOT preamble flag,
reboot;
2. check EC is RW boot and AP is RW A boot,
compare the current EC with the new_ec binary,
copy the original EC binary to the EC area on the current AP RW A,
reboot;
3. check EC is RW boot and AP is RW A boot,
compare the current EC with the original EC binary,
enable RO_BOOT preamble flag,
reboot;
4. check EC is RO boot and AP is RW A boot.
So RONORMAL->TWOSTOP, TWOSTOP->TWOSTOP, and TWOSTOP->RONORMAL are covered.
"""
def run_updateec(machine):
host = hosts.create_host(machine)
job.run_test("firmware_UpdateECBin", host=host, cmdline_args=args,
use_faft=True, disable_sysinfo=True,
dev_mode=False, tag="normal")
parallel_simple(run_updateec, machines)