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

View file

@ -86,7 +86,6 @@ class ConsoleBase(object):
self.at_prompt = False self.at_prompt = False
self.at_prompt_logevt = None self.at_prompt_logevt = None
self.ram_base = None
def close(self): def close(self):
'''Terminate the connection to the U-Boot console. '''Terminate the connection to the U-Boot console.
@ -378,39 +377,3 @@ class ConsoleBase(object):
''' '''
return ConsoleDisableCheck(self, check_type) 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 = u_boot_console.log.get_runner(cmd[0], sys.stdout)
runner.run(cmd, ignore_errors=ignore_errors) runner.run(cmd, ignore_errors=ignore_errors)
runner.close() 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