aboutsummaryrefslogtreecommitdiff
path: root/tools/binman
AgeCommit message (Collapse)Author
2018-06-07binman: Rename ELF parameters to 'section'Simon Glass
We now pass a Section object to these functions rather than an Image. Rename the parameters to avoid confusion. Signed-off-by: Simon Glass <sjg@chromium.org>
2018-06-07binman: Refactor much of the image code into 'section'Simon Glass
We want to support multiple sections within a single image. To do this, move most of the Image class implementation into a new Section class. An Image contains only a single Section, but at some point we will support a new 'section' entry, thus allowing Sections within Sections. Use the name 'bsection' for the module so we can use 'section' for the etype module. Signed-off-by: Simon Glass <sjg@chromium.org>
2018-06-07binman: Allow unit addresses for binariesSimon Glass
Allow the same binary to appear multiple times in an image by using the device-tree unit-address feature (u-boot@0, u-boot@1). Signed-off-by: Simon Glass <sjg@chromium.org>
2018-05-07SPDX: Convert all of our single license tags to Linux Kernel styleTom Rini
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
2018-01-16tools: Update python "help" tests to cope with "more" odditiesTom Rini
In some cases when "more" is told to page a given file it will prepend the output with: :::::::::::::: /PATH/TO/THE/FILE :::::::::::::: And when this happens the output will not match the expected length. Further, if we use a different pager we will instead fail the coverage tests as we will not have 100% coverage. Update the help test to remove the string in question. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@konsulko.com>
2018-01-15dtoc: Allow DTC environment variable to provide path to dtcSimon Glass
The system device-tree compiler may not be new enough to run the tests we use in U-Boot (e.g. with binman). Allow use of a DTC environment variable to point to the correct dtc. If not defined, the dtc on the default PATH is used. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12binman: Add documentation for the symbol featureSimon Glass
Add this feature to the README. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Lukasz Majewski <lukma@denx.de>
2017-12-12binman: Support accessing binman tables at run timeSimon Glass
Binman construct images consisting of multiple binary files. These files sometimes need to know (at run timme) where their peers are located. For example, SPL may want to know where U-Boot is located in the image, so that it can jump to U-Boot correctly on boot. In general the positions where the binaries end up after binman has finished packing them cannot be known at compile time. One reason for this is that binman does not know the size of the binaries until everything is compiled, linked and converted to binaries with objcopy. To make this work, we add a feature to binman which checks each binary for symbol names starting with '_binman'. These are then decoded to figure out which entry and property they refer to. Then binman writes the value of this symbol into the appropriate binary. With this, the symbol will have the correct value at run time. Macros are used to make this easier to use. As an example, this declares a symbol that will access the 'u-boot-spl' entry to find the 'pos' value (i.e. the position of SPL in the image): binman_sym_declare(unsigned long, u_boot_spl, pos); This converts to a symbol called '_binman_u_boot_spl_prop_pos' in any binary that includes it. Binman then updates the value in that binary, ensuring that it can be accessed at runtime with: ulong u_boot_pos = binman_sym(ulong, u_boot_spl, pos); This assigns the variable u_boot_pos to the position of SPL in the image. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12binman: Support enabling debug in testsSimon Glass
The elf module can provide some debugging information to assist with figuring out what is going wrong. This is also useful in tests. Update the -D option so that it is passed through to tests as well. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12binman: Adjust size of test SPL binarySimon Glass
This is only 3 bytes long which is not enough to hold two symbol values, needed to test the binman symbols feature. Increase it to 15 bytes. Using very small regions is useful since we can easily compare them in tests and errors are fairly easy to diagnose. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12binman: Add tests binaries with binman symbolsSimon Glass
For testing we need to build some ELF files containing binman symbols. Add these to the Makefile and check in the binaries: u_boot_binman_syms - normal, valid ELF file u_boot_binman_syms_bad - missing the __image_copy_start symbol u_boot_binman_syms_size - has a binman symbol with an invalid size Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12binman: Drop a stale comment about the 'board' featureSimon Glass
This feature is now supported. Drop the incorrect comment. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12binman: Add support for including spl/u-boot-spl-nodtb.binSimon Glass
This file contains SPL image without a device tree. Add support for including this in images. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12binman: Add support for including spl/u-boot-spl.dtbSimon Glass
This file contains the SPL device tree. Add support for including this by itself in images. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12binman: Add a function to read ELF symbolsSimon Glass
In some cases we need to read symbols from U-Boot. At present we have a a few cases which does this via 'nm' and 'grep'. It is better to use objdump since that tells us the size of the symbols and also whether it is weak or not. Add a new module which reads ELF information from files. Update existing uses of 'nm' to use this module. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Return non-zero exit code on test failureSimon Glass
Return exit code 1 when test fail so that callers can detect this. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add add test for using an Intel MRC binarySimon Glass
MRC (Memory Reference Code) is a binary blob used to set up the SDRAM controller on some Intel boards. Add a test for this feature. With this test coverage on binman is back up to 100%. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add add test for SPL with a microcode pointerSimon Glass
Add a test for this feature. It allows SPL to hold a pointer to the microcode block. This is used for 64-bit U-Boot on x86. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add a test for x86-start16-splSimon Glass
This allows us to put the 16-bit x86 start-up code in SPL. Add a test for it. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add test for u-boot-spl-bss-padSimon Glass
Add a test that we can pad the BSS with zero bytes. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Check for files missing from test coverageSimon Glass
Files that are never imported are not shown in the test-coverage report. Detect these and show an error. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Increase test coverage back to 100%Simon Glass
Make a minor tweak to fix test coverage. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add a main program to the testsSimon Glass
Add a main program so that the tests can be executed directly, without going through the main binman program. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add tests for importlib availabilitySimon Glass
Add a test that the 'entry' module works with or without importlib. The tests are numbered so that they are executed in the correct order. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Set up 'entry' to permit full test coverageSimon Glass
There is a little check at the top of entry.py which decides if importlib is available. At present this has no test coverage. To add this we will need to import the module twice, once with importlib and once without. In preparation for allowing a test to control the importing of this module, remove all global imports of the 'entry' module. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Append to PYTHONPATH when running test coverageSimon Glass
Rather that overwrite this, append to it, in case the caller has already set up the path correctly. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Rename tests to ftestSimon Glass
At present these tests use the same filename as patman. This adds confusion when running all tests, since error messages look very similar. In fact binman tries to run the wrong tests at present. Rename the tests. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add a Makefile for test-program compilationSimon Glass
These test programs are includedd as binary files in U-Boot to avoid having to build them (and associated toolchain differences). Instructions on building are in the files themselves, but it seems better to provide a Makefile which can be manually run when desired. Add a Makefile, separate from the normal build system, to handle this. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add docs explaining how to enable binman for a boardSimon Glass
The process is not obvious. Add a little section to explain how to move a board to use binman. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-22binman: Add better Makefile debuggingSimon Glass
There is a debugging option in the Makefile to allow people to figure out which u-boot.dtsi files are used in the build. But is it not easy to use since it only shows files it finds, not those it is looking for. Update it and update the mention of it to the docs. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-11-17pylibfdt: move pylibfdt to scripts/dtc/pylibfdt and refactor makefileMasahiro Yamada
The pylibfdt is used by dtoc (and, indirectly by binman), but there is no reason why it must be generated in the tools/ directory. Recently, U-Boot switched over to the bundled DTC, and the directory structure under scripts/dtc/ now mirrors the upstream DTC project. So, scripts/dtc/pylibfdt is the best location. I also rewrote the Makefile in a cleaner Kbuild style. The scripts from the upstream have been moved as follows: lib/libfdt/pylibfdt/setup.py -> scripts/dtc/pylibfdt/setup.py lib/libfdt/pylibfdt/libfdt.i -> scripts/dtc/pylibfdt/libfdt.i_shipped The .i_shipped is coped to .i during building because the .i must be located in the objtree when we build it out of tree. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-09-16tools: binman: Add a new entry type for Intel VBTBin Meng
This adds a new entry type for Intel Video BIOS Table. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-07-11binman: Put our local modules ahead of system modulesSimon Glass
If a system module is named the same as one of those used by binman we currently pick the system module. Adjust the ordering so that our modules are chosen instead. The module conflict reported was 'tools' from jira-python. I cannot access that package to test it. Signed-off-by: Simon Glass <sjg@chromium.org> Reported-by: Kevin Hilman <khilman@baylibre.com> Acked-by: Kevin Hilman <khilman@baylibre.com>
2017-06-02fdt: Drop fdt_select.pySimon Glass
This file was used to select between the normal and fallback libfdt implementations. Now that we only have one, it is not needed. Drop it and fix up all users. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-06-02binman: Rename fdt variable to dtbSimon Glass
Since fdt is the name of a module, use a different name for variables to avoid a conflict. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-06-02binman: Drop a special case related to fdt_fallbackSimon Glass
Previously we were sometimes forced to collate x86 microcode due to not having access to the offset of each individual piece. Now that we never use fdt_fallback, we don't have this problem. Drop this special case from the code. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-06-02fdt: Drop fdt_fallback librarySimon Glass
Drop this now-unused library and associated tests. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-06-02fdt: Support use of the new python libfdt librarySimon Glass
Use the new library if available, while retaining backwards compatibility with the old library for now. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-06-02fdt: dtoc: Add a full set of property testsSimon Glass
The tests don't currently cover all the different property types. Add a new test which checks each property type in turn, to make sure each has the correct type and value. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-06-02fdt: Update fdt_test to use 'dt' instead of 'fdt'Simon Glass
Since fdt is a module it conflicts with this variable name and prevents it being used in tests. Rename the variable. Signed-off-by: Simon Glass <sjg@chromium.org>
2017-04-10tools: binman: Add missing filenames for various x86 rom testsBin Meng
With recent changes, some x86-specific rom tests of binman fail to run. Fix it by adding missing filenames in corresponding entries. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-04-10binman: Remove hard-coded file name for x86 flash-descriptor & intel-meStefan Roese
Now that we have added file names from Kconfig in x86 u-boot.dtsi, update binman to avoid using hard-coded names. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Bin Meng <bmeng.cn@gmail.com> Cc: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2017-03-11tools: binman: change shebang from python into python2Jörg Krause
This tool does not work with Python 3. Change the shebang to make sure the script is run by a Python 2 interpreter. Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
2017-02-07tools: binman: Handle optional microcode case in SPL imageBin Meng
On platforms which do not require microcode in SPL, handle such case like U-Boot proper. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-02-07tools: binman: Call correct init for Entry_u_boot_spl_with_ucode_ptrBin Meng
u_boot_spl_with_ucode_ptr is derived from u_boot_with_ucode_ptr, hence it should call its parent's init. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2017-01-20binman: add tools directory to the python pathEmmanuel Vadot
The built _libfdt.so is placed in the /tools dir and need to say here as it contains relative paths. Add the directory to the python path so binman can use this module. Signed-off-by: Emmanuel Vadot <manu@bidouilliste.com>
2017-01-02tools: binman: Use /usr/bin/env to find python executableEmmanuel Vadot
Some OS (all BSD and probably others) do not have python in /usr/bin but in another directory. It is a common usage to use /usr/bin/env python as shebang for python scripts so use this for binman. Signed-off-by: Emmanuel Vadot <manu@bidouilliste.com>
2016-12-26binman: Remove hard-coded file name for x86 CMC/FSP/VGABin Meng
Now that we have added file names from Kconfig in x86 u-boot.dtsi, update binman to avoid using hard-coded names. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2016-12-20binman: Automatically include a U-Boot .dtsi fileSimon Glass
For boards that need U-Boot-specific additions to the device tree, it is a minor annoyance to have to add these each time the tree is synced with upstream. Add a means to include a file (e.g. u-boot.dtsi) automatically into the .dts file before it is compiled. The file uses is the first one that exists in this list: arch/<arch>/dts/<board.dts>-u-boot.dtsi arch/<arch>/dts/<soc>-u-boot.dtsi arch/<arch>/dts/<cpu>-u-boot.dtsi arch/<arch>/dts/<vendor>-u-boot.dtsi arch/<arch>/dts/u-boot.dtsi Signed-off-by: Simon Glass <sjg@chromium.org> Suggested-by: Tom Rini <trini@konsulko.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com>
2016-12-20binman: Add support for building x86 images with FSP/CMCSimon Glass
Add support for two more from the inexhaustible supply of x86 binary blob types. Signed-off-by: Simon Glass <sjg@chromium.org> Tested-by: Bin Meng <bmeng.cn@gmail.com>