diff options
author | Jagdish Gediya <jagdish.gediya@nxp.com> | 2018-09-03 21:35:07 +0530 |
---|---|---|
committer | York Sun <york.sun@nxp.com> | 2018-09-27 10:13:43 -0700 |
commit | 94b57db06986a4afc72040a1f803df68e92c4397 (patch) | |
tree | 1eaf68bc5567b4afbb75eb1ded0fb7313d15be62 /tools/binman/bsection.py | |
parent | 7d7a8e99e4b7160c777b83db02d3a8f07b289c12 (diff) | |
download | u-boot-94b57db06986a4afc72040a1f803df68e92c4397.tar.gz |
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>
Diffstat (limited to 'tools/binman/bsection.py')
-rw-r--r-- | tools/binman/bsection.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/tools/binman/bsection.py b/tools/binman/bsection.py index a0bd1b6d34..5910092dae 100644 --- a/tools/binman/bsection.py +++ b/tools/binman/bsection.py @@ -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): |