64 Commits

Author SHA1 Message Date
Bernhard Nortmann
95d8d23989 fel: Remove obsolete fel-pio (thunk) code
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>
2016-12-30 12:35:24 +01:00
Bernhard Nortmann
1e219c0bb9 Makefile: Use uname for OS detection on *nix platforms
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
2016-12-28 13:47:30 +01:00
Bernhard Nortmann
aaa677d552 fel: Factor out a new FEL library
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>
2016-11-29 14:22:09 +01:00
Bernhard Nortmann
8640291376 fel: Factor out SoC information (and SRAM buffers) retrieval
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>
2016-11-13 21:33:58 +01:00
Bernhard Nortmann
5cbb0c91a4 tests: Introduce a basic testing framework
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>
2016-11-12 13:38:40 +01:00
Bernhard Nortmann
bf735b2c47 Makefile: Modify default CFLAGS
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>
2016-11-10 13:34:31 +01:00
Bernhard Nortmann
6cd51fe547 Makefile: Revert sunxi-pio change from 209633a
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>
2016-11-06 13:28:30 +01:00
Bernhard Nortmann
95d40f8fcf Makefile: Ensure that user-supplied CFLAGS get respected
Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
2016-10-29 18:48:07 +02:00
NiteHawk
40e6ff5db8 Merge pull request #73 from n1tehawk/20161027_issue70
Build system improvements
2016-10-29 11:34:12 +02:00
Bernhard Nortmann
209633ab1d Makefile: Unify rules for target-tools, narrow down on dependencies
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>
2016-10-29 11:16:24 +02:00
Bernhard Nortmann
5244e88f6b Makefile: Adjust default targets for "make" and "make install"
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>
2016-10-28 01:46:21 +02:00
Bernhard Nortmann
eb44a075db Makefile: allow overriding libusb Makefile variables externally
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>
2016-10-26 21:38:33 +02:00
Bernhard Nortmann
b496582b3d Have a workaround for missing mmap() in fexc.c and pio.c
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>
2016-10-26 21:37:29 +02:00
Bernhard Nortmann
5792814010 Add support for auto-updated version information
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>
2016-10-21 21:46:03 +02:00
Siarhei Siamashka
a4557874f0 Merge pull request #44 from ssvb/20160512-uart0-helloworld
Add new uart0-helloworld-sdboot.sunxi bootable test image
2016-06-03 06:17:24 +03:00
Siarhei Siamashka
958143e77b 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>
2016-06-03 06:04:44 +03:00
Boris Brezillon
e25f6e9024 Add a tool to generate raw NAND images
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>
2016-05-31 09:26:05 +02:00
Bernhard Nortmann
17164d8d9a fel-sdboot: Fix header corruption workaround, implement in assembly
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>
2016-05-28 12:32:55 +02:00
Siarhei Siamashka
776cf5543b Fix compatibility with Linaro toolchains for building ARM binaries
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>
2016-05-06 13:33:15 +02:00
Bernhard Nortmann
bbdae67440 Makefile: Add "binfiles" target and simplify rule sets
"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>
2016-05-06 13:14:32 +02:00
Bernhard Nortmann
3cf1ef5b2f travis-ci: Be more strict on build checks
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>
2016-05-04 22:34:27 +02:00
Bernhard Nortmann
805d2a8e16 Makefile: Provide a way to pass explicit _NETBSD_SOURCE
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>
2016-05-04 13:44:52 +02:00
Bernhard Nortmann
438620e832 travis-ci: Extend build matrix, disable email notifications
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>
2016-05-04 10:29:51 +02:00
Bernhard Nortmann
73c20eea7b Makefile: Have portable_endian.h properly expose all functions
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>
2016-05-03 08:02:09 +02:00
Justin Swartz
236e9f4ff4 Makefile: Add sunxi-script_extractor target
Signed-off-by: Justin Swartz <justin.swartz@risingedge.co.za>
Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
2015-12-16 08:44:32 +02:00
Bernhard Nortmann
70951fa99a fel: Introduce progress framework
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>
2015-12-07 12:28:22 +01:00
Peter Korsgaard
9bf1de0ad8 Makefile: use force option when creating symlinks
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>
2015-10-27 06:36:46 +02:00
Ian Campbell
0f69187846 Makefile: Add an install rule
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>
2015-10-23 23:20:41 +03:00
Ian Campbell
bf4ec9a017 Makefile: Split out target tools rules
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>
2015-10-23 23:20:41 +03:00
Ian Campbell
f1cb74d828 Makefile: Prefix most tools with sunxi-
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>
2015-10-23 23:20:41 +03:00
Siarhei Siamashka
a69bbe9693 Makefile: 'fel' tool depends on fel-to-spl-thunk.h
Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
2015-09-08 13:44:29 +03:00
Luc Verhaegen
d4e34bcb5a meminfo: rename and add to build
* 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>
2014-08-14 22:55:13 +02:00
Ian Campbell
227c7e031f Add copyright headers to various files.
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.
2014-07-01 08:04:19 +01:00
Patrick Wood
5d0ee5037b nand-part: create one nand-part program to handle both A10 and A20
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>
2013-09-19 02:24:25 +02:00
Pat Wood
dd94a2f117 build both A10 and A20 nand-part executables
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)
2013-07-23 00:42:19 -04:00
Henrik Nordstrom
1d8769b44b Rename fel-boot to fel-sdboot to avoid confusion with new fel-boot FEL bootloader 2013-05-16 01:53:10 +02:00
Henrik Nordstrom
22c3e2768c Merge branch 'master' of github.com:amery/sunxi-tools 2012-10-11 17:16:17 +02:00
Henrik Nordstrom
985cea0433 Boot header to work around broken bootloaders 2012-10-11 17:04:14 +02:00
Alejandro Mery
987a169b75 fexc: add uboot output 2012-09-29 18:42:17 +02:00
Henrik Nordstrom
bcdc4cd7ec cleanup 2012-09-04 21:55:04 +02:00
Henrik Nordstrom
61abcd092a fel-boot: Add Makefile recipe 2012-09-04 21:52:56 +02:00
Henrik Nordstrom
71295c2b8a jtag-loop: Add Makefile recipe 2012-09-04 21:50:32 +02:00
Henrik Nordstrom
be2a89d975 fel-pio.bin: Add a jump table in the beginning to ease usage 2012-09-04 21:36:45 +02:00
Alejandro Mery
d382cfe3cb build: pass -Iinclude/ to start adding structure 2012-08-07 00:05:56 +00:00
Alejandro Mery
c7ea2b6e08 nand-part: rename mbr to a more meaningful name 2012-08-06 23:56:02 +00:00
Alejandro Mery
3fc53401f3 build: add mbr to Makefile 2012-08-07 00:38:23 +02:00
Alejandro Mery
0d2d96c484 pio: add pio print < PIO to turn a PIO dump into human readable 2012-07-31 16:01:46 +02:00
Alejandro Mery
3affc3bd5f build: fix make .gitignore 2012-07-31 16:00:34 +02:00
Henrik Nordstrom
c26e5ff80a bootinfo for dumping information from boot0/boot1 headers 2012-07-13 03:38:53 +02:00
Henrik Nordstrom
75005abcff phoenix_info dumping info on phoenix sdcard image parts 2012-07-02 08:54:42 +02:00