mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
binman: Add a new "skip-at-start" property in Section class
Currently binman calculates '_skip_at_start' based on 'end-at-4gb' property and it is used for x86 images. For PowerPC mpc85xx based CPU, CONFIG_SYS_TEXT_BASE is the entry offset of the first entry. It can be 0xeff40000 or 0xfff40000 for nor flash boot, 0x201000 for sd boot etc, so "_skip_at_start" should be set to CONFIG_SYS_TEXT_BASE. 'end-at-4gb' property is not applicable where CONFIG_SYS_TEXT_BASE + Image size != 4gb. Add new property 'skip-at-start' in Section class so that '_skip_at_start' can be calculated either based on 'end-at-4gb' or based on "skip-at-start". Add a test case to check that 'skip-at-start' and 'end-at-4gb' property can't be used together. Signed-off-by: Jagdish Gediya <jagdish.gediya@nxp.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
parent
7d7a8e99e4
commit
94b57db069
4 changed files with 49 additions and 4 deletions
|
@ -397,6 +397,15 @@ end-at-4gb:
|
|||
8MB ROM, the offset of the first entry would be 0xfff80000 with
|
||||
this option, instead of 0 without this option.
|
||||
|
||||
skip-at-start:
|
||||
This property specifies the entry offset of the first entry.
|
||||
|
||||
For PowerPC mpc85xx based CPU, CONFIG_SYS_TEXT_BASE is the entry
|
||||
offset of the first entry. It can be 0xeff40000 or 0xfff40000 for
|
||||
nor flash boot, 0x201000 for sd boot etc.
|
||||
|
||||
'end-at-4gb' property is not applicable where CONFIG_SYS_TEXT_BASE +
|
||||
Image size != 4gb.
|
||||
|
||||
Examples of the above options can be found in the tests. See the
|
||||
tools/binman/test directory.
|
||||
|
|
|
@ -59,7 +59,7 @@ class Section(object):
|
|||
self._pad_after = 0
|
||||
self._pad_byte = 0
|
||||
self._sort = False
|
||||
self._skip_at_start = 0
|
||||
self._skip_at_start = None
|
||||
self._end_4gb = False
|
||||
self._name_prefix = ''
|
||||
self._entries = OrderedDict()
|
||||
|
@ -79,10 +79,17 @@ class Section(object):
|
|||
self._pad_byte = fdt_util.GetInt(self._node, 'pad-byte', 0)
|
||||
self._sort = fdt_util.GetBool(self._node, 'sort-by-offset')
|
||||
self._end_4gb = fdt_util.GetBool(self._node, 'end-at-4gb')
|
||||
if self._end_4gb and not self._size:
|
||||
self._Raise("Section size must be provided when using end-at-4gb")
|
||||
self._skip_at_start = fdt_util.GetInt(self._node, 'skip-at-start')
|
||||
if self._end_4gb:
|
||||
self._skip_at_start = 0x100000000 - self._size
|
||||
if not self._size:
|
||||
self._Raise("Section size must be provided when using end-at-4gb")
|
||||
if self._skip_at_start is not None:
|
||||
self._Raise("Provide either 'end-at-4gb' or 'skip-at-start'")
|
||||
else:
|
||||
self._skip_at_start = 0x100000000 - self._size
|
||||
else:
|
||||
if self._skip_at_start is None:
|
||||
self._skip_at_start = 0
|
||||
self._name_prefix = fdt_util.GetString(self._node, 'name-prefix')
|
||||
|
||||
def _ReadEntries(self):
|
||||
|
|
|
@ -711,6 +711,14 @@ class TestFunctional(unittest.TestCase):
|
|||
self.assertIn("Section '/binman': Section size must be provided when "
|
||||
"using end-at-4gb", str(e.exception))
|
||||
|
||||
def test4gbAndSkipAtStartTogether(self):
|
||||
"""Test that the end-at-4gb and skip-at-size property can't be used
|
||||
together"""
|
||||
with self.assertRaises(ValueError) as e:
|
||||
self._DoTestFile('80_4gb_and_skip_at_start_together.dts')
|
||||
self.assertIn("Section '/binman': Provide either 'end-at-4gb' or "
|
||||
"'skip-at-start'", str(e.exception))
|
||||
|
||||
def testPackX86RomOutside(self):
|
||||
"""Test that the end-at-4gb property checks for offset boundaries"""
|
||||
with self.assertRaises(ValueError) as e:
|
||||
|
|
21
tools/binman/test/80_4gb_and_skip_at_start_together.dts
Normal file
21
tools/binman/test/80_4gb_and_skip_at_start_together.dts
Normal file
|
@ -0,0 +1,21 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright 2018 NXP
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
size = <32>;
|
||||
sort-by-offset;
|
||||
end-at-4gb;
|
||||
skip-at-start = <0xffffffe0>;
|
||||
u-boot {
|
||||
offset = <0xffffffe0>;
|
||||
};
|
||||
};
|
||||
};
|
Loading…
Add table
Reference in a new issue