Merge tag 'u-boot-imx-20200825' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
[platform/kernel/u-boot.git] / test / py / u_boot_console_sandbox.py
index eb84150..836f5a9 100644 (file)
@@ -1,7 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0
 # Copyright (c) 2015 Stephen Warren
 # Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved.
-#
-# SPDX-License-Identifier: GPL-2.0
 
 # Logic to interact with the sandbox port of U-Boot, running as a sub-process.
 
@@ -10,11 +9,11 @@ from u_boot_spawn import Spawn
 from u_boot_console_base import ConsoleBase
 
 class ConsoleSandbox(ConsoleBase):
-    '''Represents a connection to a sandbox U-Boot console, executed as a sub-
-    process.'''
+    """Represents a connection to a sandbox U-Boot console, executed as a sub-
+    process."""
 
     def __init__(self, log, config):
-        '''Initialize a U-Boot console connection.
+        """Initialize a U-Boot console connection.
 
         Args:
             log: A multiplexed_log.Logfile instance.
@@ -22,12 +21,13 @@ class ConsoleSandbox(ConsoleBase):
 
         Returns:
             Nothing.
-        '''
+        """
 
         super(ConsoleSandbox, self).__init__(log, config, max_fifo_fill=1024)
+        self.sandbox_flags = []
 
     def get_spawn(self):
-        '''Connect to a fresh U-Boot instance.
+        """Connect to a fresh U-Boot instance.
 
         A new sandbox process is created, so that U-Boot begins running from
         scratch.
@@ -37,25 +37,55 @@ class ConsoleSandbox(ConsoleBase):
 
         Returns:
             A u_boot_spawn.Spawn object that is attached to U-Boot.
-        '''
+        """
+
+        bcfg = self.config.buildconfig
+        config_spl = bcfg.get('config_spl', 'n') == 'y'
+        fname = '/spl/u-boot-spl' if config_spl else '/u-boot'
+        print(fname)
+        cmd = []
+        if self.config.gdbserver:
+            cmd += ['gdbserver', self.config.gdbserver]
+        cmd += [
+            self.config.build_dir + fname,
+            '-v',
+            '-d',
+            self.config.dtb
+        ]
+        cmd += self.sandbox_flags
+        return Spawn(cmd, cwd=self.config.source_dir)
+
+    def restart_uboot_with_flags(self, flags):
+        """Run U-Boot with the given command-line flags
+
+        Args:
+            flags: List of flags to pass, each a string
+
+        Returns:
+            A u_boot_spawn.Spawn object that is attached to U-Boot.
+        """
 
-        return Spawn([self.config.build_dir + '/u-boot'])
+        try:
+            self.sandbox_flags = flags
+            return self.restart_uboot()
+        finally:
+            self.sandbox_flags = []
 
     def kill(self, sig):
-        '''Send a specific Unix signal to the sandbox process.
+        """Send a specific Unix signal to the sandbox process.
 
         Args:
             sig: The Unix signal to send to the process.
 
         Returns:
             Nothing.
-        '''
+        """
 
         self.log.action('kill %d' % sig)
         self.p.kill(sig)
 
     def validate_exited(self):
-        '''Determine whether the sandbox process has exited.
+        """Determine whether the sandbox process has exited.
 
         If required, this function waits a reasonable time for the process to
         exit.
@@ -65,11 +95,11 @@ class ConsoleSandbox(ConsoleBase):
 
         Returns:
             Boolean indicating whether the process has exited.
-        '''
+        """
 
         p = self.p
         self.p = None
-        for i in xrange(100):
+        for i in range(100):
             ret = not p.isalive()
             if ret:
                 break