summaryrefslogtreecommitdiff
path: root/test/py/tests/test_dfu.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/py/tests/test_dfu.py')
-rw-r--r--test/py/tests/test_dfu.py44
1 files changed, 38 insertions, 6 deletions
diff --git a/test/py/tests/test_dfu.py b/test/py/tests/test_dfu.py
index 093e8d0678..8649d8731b 100644
--- a/test/py/tests/test_dfu.py
+++ b/test/py/tests/test_dfu.py
@@ -30,6 +30,13 @@ env__usb_dev_ports = (
},
)
+# Optional entries (required only when "alt_id_test_file" and
+# "alt_id_dummy_file" are specified).
+test_file_name = "/dfu_test.bin"
+dummy_file_name = "/dfu_dummy.bin"
+# Above files are used to generate proper "alt_info" entry
+"alt_info": "/%s ext4 0 2;/%s ext4 0 2" % (test_file_name, dummy_file_name),
+
env__dfu_configs = (
# eMMC, partition 1
{
@@ -44,6 +51,24 @@ env__dfu_configs = (
# configurations, but don't want to test every single transfer size
# on each, to avoid bloating the overall time taken by testing.
"test_sizes": (63, 64, 65),
+ # This value is optional.
+ # The name of the environment variable that the the dfu command reads
+ # alt info from. If unspecified, this defaults to dfu_alt_info, which is
+ # valid for most systems. Some systems use a different variable name.
+ # One example is the Odroid XU3, which automatically generates
+ # $dfu_alt_info, each time the dfu command is run, by concatenating
+ # $dfu_alt_boot and $dfu_alt_system.
+ "alt_info_env_name": "dfu_alt_system",
+ # This value is optional.
+ # For boards which require the "test file" alt setting number other than
+ # default (0) it is possible to specify exact file name to be used as
+ # this parameter.
+ "alt_id_test_file": test_file_name,
+ # This value is optional.
+ # For boards which require the "dummy file" alt setting number other
+ # than default (1) it is possible to specify exact file name to be used
+ # as this parameter.
+ "alt_id_dummy_file": dummy_file_name,
},
)
@@ -120,7 +145,11 @@ def test_dfu(u_boot_console, env__usb_dev_port, env__dfu_config):
u_boot_console.log.action(
'Starting long-running U-Boot dfu shell command')
- cmd = 'setenv dfu_alt_info "%s"' % env__dfu_config['alt_info']
+ dfu_alt_info_env = env__dfu_config.get('alt_info_env_name', \
+ 'dfu_alt_info')
+
+ cmd = 'setenv "%s" "%s"' % (dfu_alt_info_env,
+ env__dfu_config['alt_info'])
u_boot_console.run_command(cmd)
cmd = 'dfu 0 ' + env__dfu_config['cmd_params']
@@ -172,7 +201,7 @@ def test_dfu(u_boot_console, env__usb_dev_port, env__dfu_config):
Nothing.
"""
- cmd = ['dfu-util', '-a', str(alt_setting), up_dn_load_arg, fn]
+ cmd = ['dfu-util', '-a', alt_setting, up_dn_load_arg, fn]
if 'host_usb_port_path' in env__usb_dev_port:
cmd += ['-p', env__usb_dev_port['host_usb_port_path']]
u_boot_utils.run_and_log(u_boot_console, cmd)
@@ -229,15 +258,15 @@ def test_dfu(u_boot_console, env__usb_dev_port, env__dfu_config):
u_boot_console.log.action('Writing test data to DFU primary ' +
'altsetting')
- dfu_write(0, test_f.abs_fn)
+ dfu_write(alt_setting_test_file, test_f.abs_fn)
u_boot_console.log.action('Writing dummy data to DFU secondary ' +
'altsetting to clear DFU buffers')
- dfu_write(1, dummy_f.abs_fn)
+ dfu_write(alt_setting_dummy_file, dummy_f.abs_fn)
u_boot_console.log.action('Reading DFU primary altsetting for ' +
'comparison')
- dfu_read(0, readback_fn)
+ dfu_read(alt_setting_test_file, readback_fn)
u_boot_console.log.action('Comparing written and read data')
written_hash = test_f.content_hash
@@ -260,13 +289,16 @@ def test_dfu(u_boot_console, env__usb_dev_port, env__dfu_config):
dummy_f = u_boot_utils.PersistentRandomFile(u_boot_console,
'dfu_dummy.bin', 1024)
+ alt_setting_test_file = env__dfu_config.get('alt_id_test_file', '0')
+ alt_setting_dummy_file = env__dfu_config.get('alt_id_dummy_file', '1')
+
ignore_cleanup_errors = True
try:
start_dfu()
u_boot_console.log.action(
'Overwriting DFU primary altsetting with dummy data')
- dfu_write(0, dummy_f.abs_fn)
+ dfu_write(alt_setting_test_file, dummy_f.abs_fn)
for size in sizes:
with u_boot_console.log.section('Data size %d' % size):