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>
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>
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>
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>
* 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)