test/py: move find_ram_base() into u_boot_utils

find_ram_base() is a shared utility function, not a core part of the
U-Boot console interaction.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Stephen Warren 2016-01-21 16:05:30 -07:00 committed by Simon Glass
parent f5d196d03e
commit 0526610334
3 changed files with 41 additions and 39 deletions

View File

@ -4,13 +4,14 @@
# SPDX-License-Identifier: GPL-2.0
import pytest
import u_boot_utils
@pytest.mark.buildconfigspec('cmd_memory')
def test_md(u_boot_console):
'''Test that md reads memory as expected, and that memory can be modified
using the mw command.'''
ram_base = u_boot_console.find_ram_base()
ram_base = u_boot_utils.find_ram_base(u_boot_console)
addr = '%08x' % ram_base
val = 'a5f09876'
expected_response = addr + ': ' + val
@ -26,7 +27,7 @@ def test_md_repeat(u_boot_console):
'''Test command repeat (via executing an empty command) operates correctly
for "md"; the command must repeat and dump an incrementing address.'''
ram_base = u_boot_console.find_ram_base()
ram_base = u_boot_utils.find_ram_base(u_boot_console)
addr_base = '%08x' % ram_base
words = 0x10
addr_repeat = '%08x' % (ram_base + (words * 4))

View File

@ -86,7 +86,6 @@ class ConsoleBase(object):
self.at_prompt = False
self.at_prompt_logevt = None
self.ram_base = None
def close(self):
'''Terminate the connection to the U-Boot console.
@ -378,39 +377,3 @@ class ConsoleBase(object):
'''
return ConsoleDisableCheck(self, check_type)
def find_ram_base(self):
'''Find the running U-Boot's RAM location.
Probe the running U-Boot to determine the address of the first bank
of RAM. This is useful for tests that test reading/writing RAM, or
load/save files that aren't associated with some standard address
typically represented in an environment variable such as
${kernel_addr_r}. The value is cached so that it only needs to be
actively read once.
Args:
None.
Returns:
The address of U-Boot's first RAM bank, as an integer.
'''
if self.config.buildconfig.get('config_cmd_bdi', 'n') != 'y':
pytest.skip('bdinfo command not supported')
if self.ram_base == -1:
pytest.skip('Previously failed to find RAM bank start')
if self.ram_base is not None:
return self.ram_base
with self.log.section('find_ram_base'):
response = self.run_command('bdinfo')
for l in response.split('\n'):
if '-> start' in l:
self.ram_base = int(l.split('=')[1].strip(), 16)
break
if self.ram_base is None:
self.ram_base = -1
raise Exception('Failed to find RAM bank start in `bdinfo`')
return self.ram_base

View File

@ -169,3 +169,41 @@ def run_and_log(u_boot_console, cmd, ignore_errors=False):
runner = u_boot_console.log.get_runner(cmd[0], sys.stdout)
runner.run(cmd, ignore_errors=ignore_errors)
runner.close()
ram_base = None
def find_ram_base(u_boot_console):
'''Find the running U-Boot's RAM location.
Probe the running U-Boot to determine the address of the first bank
of RAM. This is useful for tests that test reading/writing RAM, or
load/save files that aren't associated with some standard address
typically represented in an environment variable such as
${kernel_addr_r}. The value is cached so that it only needs to be
actively read once.
Args:
u_boot_console: A console connection to U-Boot.
Returns:
The address of U-Boot's first RAM bank, as an integer.
'''
global ram_base
if u_boot_console.config.buildconfig.get('config_cmd_bdi', 'n') != 'y':
pytest.skip('bdinfo command not supported')
if ram_base == -1:
pytest.skip('Previously failed to find RAM bank start')
if ram_base is not None:
return ram_base
with u_boot_console.log.section('find_ram_base'):
response = u_boot_console.run_command('bdinfo')
for l in response.split('\n'):
if '-> start' in l:
ram_base = int(l.split('=')[1].strip(), 16)
break
if ram_base is None:
ram_base = -1
raise Exception('Failed to find RAM bank start in `bdinfo`')
return ram_base