Age | Commit message (Collapse) | Author |
|
The F1C100s series of SoCs has some subtle differences in its UART
setup:
- The UART is at a previously unused address.
- The base clock is not APB2, but APB1.
- The input clock is not 24 MHz, but CPU clock / 2 / 2.
- The clock and reset gates are different bits at different addresses.
Add support for all those differences, tied to the F1C100s SoC ID.
Also change the GCC target architecture for uart0-helloworld-sdboot to
ARMv5, since this is now the oldest support architecture revision.
When the compiler defaulted to ARMv7, it was generating ubfx instructions,
which were only introduced in ARMv6.
Signed-off-by: Andre Przywara <osp@andrep.de>
|
|
So far the output of "sunxi-fel -h" was the only source of information
about sunxi-fel's command line parameters, and the description was
rather terse.
Add a manpage that describes the purpose of sunxi-fel and its options it
a bit more detail.
Amend the Makefile to install the manpage into the usual location.
Signed-off-by: Andre Przywara <osp@andrep.de>
|
|
In cross-build situations this allows for `«triplet»-pkg-config` to be passed
in so that target libraries are used instead of host ones.
Unless `PKG_CONFIG` is overridden by the person doing the build then there is
no semantic change.
Signed-off-by: Ian Campbell <ijc@debian.org>
|
|
So far sunxi-fel expects a legacy U-Boot image after the SPL, when
called with the "uboot" command.
This only works for (current) 32-bit builds, which only need one image
to load (U-Boot proper).
64-bit builds also include at least a Trusted Firmware binary, and also
might contain a firmware image for the ARISC management processor. So
we use the more capable FIT image, which can contain multiple images
to load.
Introduce support for that, by adding code to parse a FIT image, find
the image files included, and load them to their respective load
addresses. On the way we keep track of the entry point, that only one of
those images provides, and also note the architecture of this image
(ARMv7 or AArch64).
On top of that we detect which of the images is the actual U-Boot proper
image, and append the chosen DTB to the end of it.
This all mimics the code U-Boot's SPL uses to achieve the same goal when
running from MMC or SPI flash, compare the implementation of
spl_load_simple_fit() in U-Boot's common/spl/spl_fit.c:
https://gitlab.denx.de/u-boot/u-boot/-/blob/master/common/spl/spl_fit.c
This requires the libfdt library for parsing the FIT image (which is in
fact a devicetree blob).
Signed-off-by: Andre Przywara <osp@andrep.de>
|
|
Using the new AAPCS function remote execution support, add support to
read from and write to SPI flash connected to a device.
This allows flashing boot code to a device.
Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
[Andre: adjust to upstream changes]
Signed-off-by: Andre Przywara <osp@andrep.de>
|
|
The current code checks that the transferred size is matching the size
reported in the image header.
Unfortunately, the transferred image might be padded, which doesn't change
anything at the functional level, but will make that check trigger since
the actual image will be smaller than the transferred data.
Change that logic to first check that the transferred size isn't less that
the header image size, which will still be an error, and then check for the
CRC of the image itself. This will prove to be an more robust integrity
check than what we have right now anyway.
The CRC used in the image header is the CRC32 algorithm, that is
implemented in the zlib, which is installed on most devices on the planet,
so we can just use that implementation instead of rolling our own.
Tested-by: Frank Kunz <mailinglists@kunz-im-inter.net>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
|
|
This patch moves the scan for an ARM gcc into a separate shell
script. To prevent against recursion issues, the new script adds
"-maxdepth 1" to the find invocation; and it now also correctly
handles directories in $PATH that contain spaces in their name.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
$PATH can contains directories that do not exist, so hide error messages
about those entries.
Signed-off-by: Priit Laes <plaes@plaes.org>
|
|
"make headers" (which in turn invokes "make -C thunks/" should now
build the include files via awk, avoiding the need for ruby.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Try an 'educated guess' for a suitable toolchain if no explicit
CROSS_COMPILE was set (but still default to "arm-none-eabi-").
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
This functionality is now available via "sunxi-fel memmove", so
change the fel-gpio script accordingly and remove the thunk code.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
The FEL utility had accumulated enough (mostly USB-related)
"low-level" code to justify moving that to a separate code unit.
This will allow us to keep better focus on the higher level
functionality in fel.c.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
While at it, modify the former "sram_info" identifiers
to carry a broader "soc_info" meaning.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
All tests should go into the new "tests" subdirectory. The idea is
that the separate Makefile in that directory will get invoked via
a top-level "make check".
The tests/Makefile should then take care of running all available
tests, returning an appropriate exit status. Future tests may be
functional, examine code metrics (coverage analysis), or both.
For a start, I'd simply like to check that sunxi-fexc is able to
properly compile all the .fex files from linux-sunxi/sunxi-boards.
(Note: This currently FAILS and will probably require adjustments
to both sunxi-tools and the .fex repository. To work around this,
for now I'm applying patches to fix sunxi-boards.)
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
This removes the "-g -O0" default (to leave them up to the user
CFLAGS), and adds a switch to ignore "unused result" warnings.
The latter is relevant when trying to compile nand-part.c with
optimizations enabled.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
The previous commit had introduced a new build rule that made
sunxi-pio always (cross-)compile as part of TARGET_TOOLS. This
originated from a misunderstanding, and is wrong - sunxi-pio
should be part of TOOLS instead.
sunxi-pio is a "dual mode" utility. When run natively on a sunxi
SoC, it can mmap() and manipulate the PIO registers directly. But
it also supports file-based operation, to be used in conjunction
with sunxi-fel (after uploading fel-pio.bin thunk code). This
should work over USB from non-sunxi hosts, and thus puts sunxi-pio
in the TOOLS category. See the fel-gpio shell script for details.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Build system improvements
|
|
This appends sunxi-meminfo to the TARGET_TOOLS, and adds a new rule
to fix the compilation of sunxi-pio (by making it *cross-compile*
for the target).
Additionally adds a new build target "make install-misc".
For more details, see github issues #69 and #70.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Fixing the (currently erroneous) compilation of sunxi-pio will
cause "make target-tools" to require a suitable cross-compiler
installed. Otherwise "make target-tools" fails to build.
As that is part of our default target ("make all"), we might
possibly introduce a build breakage on quite a few systems.
Avoid this situation by redefining "make tools" as the default,
and change "make install" to "make install-tools", i.e. limit
the standard targets to those builds that only rely on the host
toolchain. From now, if you actually want to include the cross-
compiling steps, use "make all" or "make install-all" instead.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Also: Add the winsock2 library to LIBS for Windows. When not
linking against it, the usage of WS2 conversion functions from
portable_endian.h would cause unresolved symbols.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
By defining NO_MMAP it's now possible to avoid the usage of
mmap() and munmap(). This benefits platforms that don't support
these functions, e.g. Windows.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
The Makefile will now use a script (autoversion.sh) to update
version.h, which in turn defines a VERSION string and gets
included from common.h.
The idea is that version.h normally receives a git-describe
based identifier that represents the current checkout. In
cases where git might not be available, e.g. for builds from
a tarball, the script will instead fall back to a predefined
version (that should reflect the most recent release tag).
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Add new uart0-helloworld-sdboot.sunxi bootable test image
|
|
This is a universal bootable image, which just prints a hello
message on UART0. For example, it is useful as a test payload
when debugging the SPI boot functionality:
https://linux-sunxi.org/Bootable_SPI_flash
Changes in v2:
- A workaround for https://patchwork.ozlabs.org/patch/622173
- Also print the type of the used bootable media
Changes in v3:
- Bernhard Nortmann's workaround for
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63803
More details in https://github.com/linux-sunxi/sunxi-tools/pull/44
Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
|
Generating raw NAND images is particularly useful for boot0 images
creation since the mainline driver is not supporting the funky layout
used by Allwinner's ROM code to load the boot0 binary from NAND.
This tools also allows one to generate raw images for 'normal' partitions
so that they can be flashed before soldering on the NAND on the board
(using a regular NAND programmer).
The tool takes care of generating ECC bytes and randomizing data as
expected by the NAND controller, and re-arranging the ECC/data sections
correctly.
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
|
|
Now that we have a better understanding of what's causing the issue
that prevented entering FEL sometimes, we can adjust the workaround
code to a proper solution, i.e. skip over the problematic location.
Since the code amounts to less than a dozen ARM instructions, I've
decided to rewrite it as assembly code - fel-sdboot.S replaces the
former fel-sdboot.c.
The commit also includes a new binary (bin/fel-sdboot.sunxi) with
these changes.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
|
Add DISCARD directives to the linker scripts and also -marm option
to GCC command line. Without this, certain toolchains may build
Thumb2 code by default. Also junk sections may be present in the
final binary and they need to be removed.
This helps at least when using the following Linaro toolchain:
gcc-linaro-5.1-2015.08-x86_64_arm-linux-gnueabihf.tar.xz
Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Reviewed-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
"make binfiles" should allow building ARM binaries more easily.
Factor out common $(ARM_ELF_FLAGS).
Also rewrite some rules using $< and $@, to avoid repeating
filenames. And trim down on the number of rules using patterns
for objcopy (%.elf -> %.bin) and mksunxiboot (%.bin -> %.sunxi).
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
After eliminating all warnings, we can disallow them for future
builds. This is done by passing an additional "-Werror" flag
from the Travis build step. Introducing new warnings will cause
a (CI) build failure from now on.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Commit 73c20eea7bf0f12795ab94685fbb98eda0cf2cce removed that symbol
from fel.c - this adds it back (in the Makefile) to address #22.
Caveat: This probably requires you to use "make OS=NetBSD". I have
currently no way of testing it; we're only checking Linux and OSX
builds.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
We'll be testing both gcc and clang builds on Linux. As for now,
Travis CI only supports clang for OSX - so exclude gcc currently.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
For Linux, this requires additional #defines, see
https://gist.github.com/panzi/6856583#gistcomment-1656524
Placing those #defines into portable_endian.h would mean we
depend on the specific order of #includes (whatever pulls
in endian.h first, including other system includes). Avoid
this by using symbols provided "globally" via the Makefile.
Also nuke the _NETBSD_SOURCE definition in fel.c
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
|
|
Signed-off-by: Justin Swartz <justin.swartz@risingedge.co.za>
Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
|
This patch adds two new source files that will deal with code
related to progress callbacks and display. I have decided to
keep this separate, as there will be many smaller routines
involved, which otherwise would bloat fel.c unnecessarily.
For starters, let's also move the gettime() function there.
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
Reviewed-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
|
|
So it doesn't error out if the symlink already exists (E.G. is pointing to
the old name).
Also add the -n option for consistency with the install target.
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
|
|
Allow for separate installation of tools and target-tools, to aid in packaging.
By default everything the tools are installed into /usr/local/bin but this can
be overridden using PREFIX= or BINDIR= on the make invocation.
To enable this it was necessary to split fex2bin and bin2fex out from $(TOOLS)
into $(FEXC_LINKS), because install(1) does not seem to have a mode which
preserves symlinks so it needs to be done separately.
Supports DESTDIR to allow for convenient installation into a staging dir for
distro packaging convenience.
Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
Acked-by: Peter Korsgaard <peter@korsgaard.com>
|
|
Target tools are those which are only useful on a target sunxi system (i.e.
which probe hardware etc).
Currently this is only sunxi-pio. At first I thought sunxi-nand-part might be
included, but I think that is useful on NAND images as well as actual devices.
This will allow for easier packaging, by letting packagers only include the
target tools when building for a suitable ARM architecture.
Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
Acked-by: Peter Korsgaard <peter@korsgaard.com>
|
|
Several of the tools here are too generic and/or short for distro packaging
purposes (which like to try and avoid naming clashes in $PATH). Prefix the
following with "sunxi-":
- fexc
- bootinfo
- fel
- pio
- meminfo
Do not prefix any of the fel "payloads" or raw binaries since they would not
normally be installed in $PATH.
Do not prefix "phoenix_info", since "phoenix" already seems like an appropriate
prefix for this particular tool.
Update in-tree callers, README and .gitignore accordingly.
Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
Acked-by: Peter Korsgaard <peter@korsgaard.com>
|
|
Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
|
|
* rename a10-meminfo to meminfo
* add static build to Makefile
* fix operand warning
* built binary verified on proper linux and android
Signed-off-by: Luc Verhaegen <libv@skynet.be>
|
|
I'd like to package sunxi-tools for Debian and therefore it is important for
the licensing information to be complete/accurate. I believe the intention was
for everything here to be GPL2+ by default, since that is the license on every
file which has one and COPYING contains GPL2.
Early on the license applied to this repo was GPLv3 however this was changed to
GPL2+ by Alejandro in 79ea14d4e050 at which point he had been the only
contributor.
This patch adds the standard GPL2+ stanza used already in sunxi-tools.git or
the MIT license stanza when requested by the copyright holder to various files
which were missing one as follows:
adb-devprobe.sh
fel-gpio
According to git all of these were written by Henrik. Copyright years
according to git. Henrik requested that these be put under an MIT license,
so that is what has been done.
boot_head.lds
fel-pio.lds
fel-sdboot.lds
jtag-loop.lds
According to git all of these were written by Henrik. Copyright years
according to git. According to Henrik "These linker scripts are all GPLv2+
as the C / ASM sources they refer to".
include/endian_compat.h
The content of this file was originally added to fel.c (commit
c71ff92c02d3), which had a GPL2+ stanza at the time, by Eric Molitor and later
those lines were moved by Alejandro (commit bcde0fc72170) into this file.
I originally added GPL2+ from fel.c and added Eric's copyright with the
correct year according to git but Eric said "Ack but also would prefer
MIT/Dual :)", so it has now been changed to MIT.
include/types.h:
Henrik originally added some of these lines to bootinfo.c, along with a
GPL2+ stanza, in the original version (commit c26e5ff80af6). Later on
Alejandro moved them into this file (commit 329a13ed75e5) and added more.
I've copied the stanza from bootinfo.c and added both copyrights with the
years according to git. Authors:
Henrik, who says "OK".
Alejandro Mery
Makefile:
GPL2+ with copyrights and years according to git. Authors are:
Alejandro Mery
Henrik Nordstrom, who says "Yes"
Pat Wood, who says "Fine with me"
usb-boot:
Henrik is the primary author, added MIT license on Henrik's request with
his copyright and years according to git. Authors are:
Henrik Nordstrom, who says "Yes, that too should be MIT"
Alejandro Mery (typo fix)
Michal Suchanek (typo fix)
Everyone affected by the above is CCd.
This probably seems pretty obvious to most people, sorry for being so pedantic
about it. It will save hassel when it comes to getting it into Debian though.
Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
Cc: Henrik Nordstrom <henrik@henriknordstrom.net>
Cc: Eric Molitor <eric@molitor.org>
Cc: Alejandro Mery <amery@geeks.cl>
Cc: Pat Wood <Pat.Wood@efi.com>
Cc: Michal Suchanek <hramrach@gmail.com>
---
v2: Gathered feedback from the authors
- Pat said "Fine with me"
- Henrik asked that adb-devprobe.sh, fel-gpio and usb-boot be MIT, acked
*.lds, types.h and Makefile
- Explicitly listed authors of Makefile and usb-boot
- Michal Suchanek make a typo fix to usb-boot but wasn't CCd, sorry.
- Reworded commit message due to some bits now being MIT on request of the
author.
|
|
Build one nand-part program to handle both A10 and A20 mbr header formats.
Changed -f option to take an "a10" or "a20" argument to specify which mbr
format to force.
Signed-off-by: Patrick Wood <patrickhwood@gmail.com>
|
|
allow setting of partition 1 size/offset
if -f option is used, force writing of MBR header, even if CRC or
header magic/version are incorrect (for recovery only)
|
|
bootloader
|
|
|
|
|
|
|