A collection of command line tools for ARM devices with Allwinner SoCs.
Go to file
Andre Przywara 34da6cf5b9 fel_lib: make internal functions as static
Some functions are only used internally in fel_lib.c, consequently their
prototypes are not exported in fel_lib.h.

Mark those functions as "static", to make this clear to the reader and
improve the generated code.

Signed-off-by: Andre Przywara <osp@andrep.de>
2022-02-18 13:57:09 +00:00
bin fel: Remove obsolete fel-pio (thunk) code 2016-12-30 12:35:24 +01:00
include portable_endian.h: A more uniform fix for the various BSD flavours 2016-11-29 13:50:09 +01:00
tests unify-fex: Use int64_t and portable format specifiers for its output 2016-11-13 15:56:32 +01:00
thunks Makefile: Improve auto-detection of ARM cross compiler 2017-02-11 14:02:33 +01:00
.gitignore Add support for auto-updated version information 2016-10-21 21:46:03 +02:00
.travis.yml travis-ci: Add and activate "make check" build step 2016-11-12 13:38:40 +01:00
adb-devprobe.sh Add copyright headers to various files. 2014-07-01 08:04:19 +01:00
autoversion.sh (Fix permissions on autoversion.sh) 2016-11-29 14:07:51 +01:00
boot_head.lds Fix compatibility with Linaro toolchains for building ARM binaries 2016-05-06 13:33:15 +02:00
boot_head.S boot_head, a little boot header to work around broken bootloaders 2012-10-11 17:16:08 +02:00
bootinfo.c Fix some issues that showed up as compiler warnings with mingw64 2016-10-26 21:37:29 +02:00
common.h common.h: Rename errf() to pr_error(), add pr_fatal() 2016-12-07 08:15:03 +01:00
fel_lib.c fel_lib: make internal functions as static 2022-02-18 13:57:09 +00:00
fel_lib.h fel: Skip uploading empty image 2021-01-11 09:34:06 +00:00
fel-gpio fel: Remove obsolete fel-pio (thunk) code 2016-12-30 12:35:24 +01:00
fel-remotefunc-compiler.rb fel: Add SPI flash programmer implementation 2018-07-09 09:16:24 +01:00
fel-remotefunc-spi-data-transfer.c fel: Add SPI flash programmer implementation 2018-07-09 09:16:24 +01:00
fel-remotefunc-spi-data-transfer.h fel: Add SPI flash programmer implementation 2018-07-09 09:16:24 +01:00
fel-sdboot.lds Fix compatibility with Linaro toolchains for building ARM binaries 2016-05-06 13:33:15 +02:00
fel-sdboot.S fel-sdboot: Fix header corruption workaround, implement in assembly 2016-05-28 12:32:55 +02:00
fel-spiflash.c spi: Add H616 support 2020-11-19 20:22:24 +00:00
fel-spiflash.h fel: Add SPI flash programmer implementation 2018-07-09 09:16:24 +01:00
fel.c fel: Add FIT image parsing and loading 2021-01-12 12:30:55 +00:00
fexc.c Fix two warnings about implicit fallthrough. 2018-07-09 09:16:25 +01:00
fexc.h fexc: add uboot output 2012-09-29 18:42:17 +02:00
find-arm-gcc.sh Makefile: Improve auto-detection of ARM cross compiler 2017-02-11 14:02:33 +01:00
fit_image.c fit-image: Fix endianess conversion 2022-01-13 23:56:34 +00:00
fit_image.h fel: Add FIT image parsing and loading 2021-01-12 12:30:55 +00:00
jtag-loop.c jtag-loop: correct build instructions 2012-08-15 10:31:22 +02:00
jtag-loop.lds Fix compatibility with Linaro toolchains for building ARM binaries 2016-05-06 13:33:15 +02:00
jtag-loop.S jtag-loop: correct build instructions 2012-08-15 10:31:22 +02:00
LICENSE.md Convert license file to Markdown syntax 2016-10-22 17:21:11 +02:00
Makefile sunxi-fel: add manpage 2022-01-28 22:39:59 +00:00
meminfo.c meminfo: Replace sys/io.h by direct register accesses. 2020-10-08 23:01:31 +02:00
nand-common.h nand-part: added/updated open source copyright headers 2013-09-19 02:24:25 +02:00
nand-image-builder.c Fix some issues that showed up as compiler warnings with mingw64 2016-10-26 21:37:29 +02:00
nand-part-a10.h nand-part: create one nand-part program to handle both A10 and A20 2013-09-19 02:24:25 +02:00
nand-part-a20.h nand-part: create one nand-part program to handle both A10 and A20 2013-09-19 02:24:25 +02:00
nand-part-main.c Have programs display version information in their usage help 2016-10-24 14:53:02 +02:00
nand-part.c nandpart: fix strncpy compiler warning 2022-01-13 23:56:04 +00:00
phoenix_info.c Have programs display version information in their usage help 2016-10-24 14:53:02 +02:00
pio.c Fix two warnings about implicit fallthrough. 2018-07-09 09:16:25 +01:00
progress.c fel: support FEL progress gauge via dialog utility 2015-12-16 08:20:46 +02:00
progress.h fel: support FEL progress gauge via dialog utility 2015-12-16 08:20:46 +02:00
README.md README: Add more information about other requirements 2021-08-17 08:34:07 +03:00
script_bin.c common.h: Rename errf() to pr_error(), add pr_fatal() 2016-12-07 08:15:03 +01:00
script_bin.h fexc: Convert version[0] header field to filesize 2016-11-10 13:59:43 +01:00
script_extractor.c script_extractor: Remove unnecessary size argument 2015-12-08 13:05:20 +01:00
script_fex.c common.h: Rename errf() to pr_error(), add pr_fatal() 2016-12-07 08:15:03 +01:00
script_fex.h Relicensed as GPLv2+ 2012-06-15 22:34:22 +02:00
script_uboot.c common.h: Rename errf() to pr_error(), add pr_fatal() 2016-12-07 08:15:03 +01:00
script_uboot.h fexc: add uboot output 2012-09-29 18:42:17 +02:00
script.c fexc: script: add script_find_entry() helper 2012-10-01 10:34:56 +02:00
script.h fexc: Fix thinko in script decompiler 2016-05-25 00:36:11 +02:00
soc_info.c fel: add support for R329 2021-07-20 17:25:43 +08:00
soc_info.h soc_info: Introduce SRAM size 2020-12-31 18:13:51 +00:00
sunxi-fel.1 sunxi-fel: add manpage 2022-01-28 22:39:59 +00:00
uart0-helloworld-sdboot.c uart0-helloworld-sdboot: add support for R329 2021-07-20 17:25:43 +08:00
uart0-helloworld-sdboot.lds Add new uart0-helloworld-sdboot.sunxi bootable test image 2016-06-03 06:04:44 +03:00

sunxi-tools

License Build Status Releases Commits

Copyright (C) 2012 Alejandro Mery amery@geeks.cl
For a full list of contributors, see this link or use the command git shortlog -se --no-merges.

Command line utilities to work with devices based on Allwinner SoCs: sun4i, sun5i, ... - that's why the 'x' in the package name.

sunxi-fexc

.fex file (de)compiler

Usage: ./sunxi-fexc [-vq] [-I <infmt>] [-O <outfmt>] [<input> [<output>]]

infmt:  fex, bin  (default:fex)
outfmt: fex, bin  (default:bin)

bin2fex

compatibility shortcut to call sunxi-fexc to decompile a script.bin blob back into .fex format used by Allwinner's SDK to configure the boards.

fex2bin

compatiblity shortcut to call sunxi-fexc to compile a .fex file into the binary form used by the legacy 3.4 kernel ("linux-sunxi").

sunxi-fel

script interface for USB communication with the FEL handler built in to the CPU. You usually activate FEL mode by pushing the uboot / recovery button at poweron, or by having your device "fail over" to FEL when no other boot option is available. See http://linux-sunxi.org/FEL/USBBoot for a detailed usage guide.

When called with no arguments, sunxi-fel will display a short usage summary.

Note: Unless you select a specific device using the --dev or --sid options, the tool will access the first Allwinner device (in FEL mode) that it finds. You can print a list of all FEL devices currently connected/detected with ./sunxi-fel --list --verbose.

fel-gpio

Simple wrapper (script) around sunxi-pio and sunxi-fel to allow GPIO manipulations via FEL

fel-sdboot

ARM native sdcard bootloader forcing the device into FEL mode

uart0-helloworld-sdboot

ARM native sdcard bootloader, which is only printing a short "hello" message to the UART0 serial console. Because it relies on runtime SoC type detection, this single image is bootable on a wide range of Allwinner devices and can be used for testing. Additionally, it may serve as a template/example for developing simple bare metal code (LED blinking and other similar GPIO related things).

sunxi-pio

Manipulate PIO registers/dumps

sunxi-nand-part

Tool for manipulating Allwinner NAND partition tables

sunxi-nand-image-builder

Tool used to create raw NAND images (including boot0 images)

jtag-loop.sunxi

ARM native boot helper to force the SD port into JTAG and then stop, to ease debugging of bootloaders.

sunxi-bootinfo

Dump information from Allwinner boot files (boot0 / boot1)

--type=sd	include SD boot info
--type=nand	include NAND boot info (not implemented)

phoenix_info

gives information about a phoenix image created by the phoenixcard utility and optionally extracts the embedded boot code & firmware file from their hidden partitions.

sunxi-meminfo

Tool for reading DRAM settings from registers. Compiled as a static binary for use on android and other OSes. To build this, get a toolchain and run:

make CROSS_COMPILE=arm-linux-gnueabihf- sunxi-meminfo

sunxi-script_extractor

A simple tool, which can be executed on a rooted Android device to dump the script.bin blob from RAM via reading /dev/mem. To build this, get a toolchain and run:

make CROSS_COMPILE=arm-linux-gnueabihf- sunxi-script_extractor

Building

Compilation requires the development version of libusb-1.0 (include header and library) to be installed for sunxi-fel. Unless you explicitly pass LIBUSB_CFLAGS and LIBUSB_LIBS to the make utility, pkg-config is also needed. Development versions of zlib and libfdt are also required.

To install the dependencies on Ubuntu 20.04 using package manager:

sudo apt install libusb-1.0-0-dev libz-dev libfdt-dev

Available build targets:

  • make tools builds tools that are useful on the host. This is what most people will want, and our default target (when simply using make).

  • make target-tools builds tools that are intended for the target (Allwinner SoC), using a cross-compiler. The Makefile will try to auto-detect a suitable toolchain prefix, and falls back to arm-none-eabi- otherwise. If needed, you may override this by explicitly setting CROSS_COMPILE.
    Hint: When compiling 'natively' on the target platform you may simply use an empty toolchain prefix here (make target-tools CROSS_COMPILE= or make all CROSS_COMPILE=).

  • make all builds both tools and target-tools.

  • make install-tools builds tools and then copies/installs them to a filesystem location. The destination is affected by settings for DESTDIR, PREFIX and possibly BINDIR. For details, please refer to the Makefile. You may use make install as a shortcut for this.

  • make install-target-tools builds target-tools and then copies/installs them to a filesystem location selected by DESTDIR, PREFIX and possibly BINDIR - see make install-tools above.

  • make install-all builds and installs both tools and target-tools.

  • make misc builds miscellaneous (host) utilities that are not part of our 'standard' suite. Currently this means phoenix_info and sunxi-nand-image-builder.

  • make install-misc builds misc and installs the resulting binaries.

License

This software is licensed under the terms of GPLv2+ as defined by the Free Software Foundation, details can be read in the LICENSE.md file.