mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 20:18:18 +00:00 
			
		
		
		
	* provide module docstring Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Reviewed-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# SPDX-License-Identifier: GPL-2.0
 | 
						|
# Copyright (c) 2015 Stephen Warren
 | 
						|
# Copyright (c) 2015-2016, NVIDIA CORPORATION. All rights reserved.
 | 
						|
 | 
						|
"""
 | 
						|
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)
 | 
						|
 | 
						|
        with self.log.section('flash'):
 | 
						|
            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()
 | 
						|
            self.log.status_pass('OK')
 | 
						|
 | 
						|
    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)
 | 
						|
 | 
						|
        try:
 | 
						|
            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()
 | 
						|
        except:
 | 
						|
            s.close()
 | 
						|
            raise
 | 
						|
 | 
						|
        return s
 |