mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
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:
parent
f5d196d03e
commit
0526610334
3 changed files with 41 additions and 39 deletions
|
@ -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))
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue