mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	Python's coding style docs indicate to use " not ' for docstrings. test/py has other violations of the coding style docs, since the docs specify a stranger style than I would expect, but nobody has complained about those yet:-) Signed-off-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Copyright (c) 2015 Stephen Warren
 | 
						|
# Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved.
 | 
						|
#
 | 
						|
# SPDX-License-Identifier: GPL-2.0
 | 
						|
 | 
						|
# Logic to interact with U-Boot running on real hardware, typically via a
 | 
						|
# physical serial port.
 | 
						|
 | 
						|
import sys
 | 
						|
from u_boot_spawn import Spawn
 | 
						|
from u_boot_console_base import ConsoleBase
 | 
						|
 | 
						|
class ConsoleExecAttach(ConsoleBase):
 | 
						|
    """Represents a physical connection to a U-Boot console, typically via a
 | 
						|
    serial port. This implementation executes a sub-process to attach to the
 | 
						|
    console, expecting that the stdin/out of the sub-process will be forwarded
 | 
						|
    to/from the physical hardware. This approach isolates the test infra-
 | 
						|
    structure from the user-/installation-specific details of how to
 | 
						|
    communicate with, and the identity of, serial ports etc."""
 | 
						|
 | 
						|
    def __init__(self, log, config):
 | 
						|
        """Initialize a U-Boot console connection.
 | 
						|
 | 
						|
        Args:
 | 
						|
            log: A multiplexed_log.Logfile instance.
 | 
						|
            config: A "configuration" object as defined in conftest.py.
 | 
						|
 | 
						|
        Returns:
 | 
						|
            Nothing.
 | 
						|
        """
 | 
						|
 | 
						|
        # The max_fifo_fill value might need tweaking per-board/-SoC?
 | 
						|
        # 1 would be safe anywhere, but is very slow (a pexpect issue?).
 | 
						|
        # 16 is a common FIFO size.
 | 
						|
        # HW flow control would mean this could be infinite.
 | 
						|
        super(ConsoleExecAttach, self).__init__(log, config, max_fifo_fill=16)
 | 
						|
 | 
						|
        self.log.action('Flashing U-Boot')
 | 
						|
        cmd = ['u-boot-test-flash', config.board_type, config.board_identity]
 | 
						|
        runner = self.log.get_runner(cmd[0], sys.stdout)
 | 
						|
        runner.run(cmd)
 | 
						|
        runner.close()
 | 
						|
 | 
						|
    def get_spawn(self):
 | 
						|
        """Connect to a fresh U-Boot instance.
 | 
						|
 | 
						|
        The target board is reset, so that U-Boot begins running from scratch.
 | 
						|
 | 
						|
        Args:
 | 
						|
            None.
 | 
						|
 | 
						|
        Returns:
 | 
						|
            A u_boot_spawn.Spawn object that is attached to U-Boot.
 | 
						|
        """
 | 
						|
 | 
						|
        args = [self.config.board_type, self.config.board_identity]
 | 
						|
        s = Spawn(['u-boot-test-console'] + args)
 | 
						|
 | 
						|
        self.log.action('Resetting board')
 | 
						|
        cmd = ['u-boot-test-reset'] + args
 | 
						|
        runner = self.log.get_runner(cmd[0], sys.stdout)
 | 
						|
        runner.run(cmd)
 | 
						|
        runner.close()
 | 
						|
 | 
						|
        return s
 |