README.md 5.87 KB
Newer Older
1
# sunxi-tools
2
[![License](http://img.shields.io/badge/License-GPL-green.svg)](LICENSE.md)
3
[![Build Status](https://travis-ci.org/linux-sunxi/sunxi-tools.svg?branch=master)](https://travis-ci.org/linux-sunxi/sunxi-tools)
4
[![Releases](https://img.shields.io/github/release/linux-sunxi/sunxi-tools.svg)](https://github.com/linux-sunxi/sunxi-tools/releases)
5
[![Commits](https://img.shields.io/github/commits-since/linux-sunxi/sunxi-tools/v1.4.svg)](https://github.com/linux-sunxi/sunxi-tools/compare/v1.4...master)
6

7
Copyright (C) 2012  Alejandro Mery <amery@geeks.cl>
8
9
10
<br>For a full list of contributors, see
[this link](https://github.com/linux-sunxi/sunxi-tools/contributors)
or use the command `git shortlog -se --no-merges`.
11

12
13
Command line utilities to work with devices based on [Allwinner SoC]s:
sun4i, sun5i, ... - that's why the 'x' in the package name.
Alejandro Mery's avatar
Alejandro Mery committed
14

15
16
### sunxi-fexc
`.fex` file (de)compiler
17

18
	Usage: ./sunxi-fexc [-vq] [-I <infmt>] [-O <outfmt>] [<input> [<output>]]
19
20
21
22

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

23
24
25
26
### 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.
Alejandro Mery's avatar
Alejandro Mery committed
27

28
29
### fex2bin
compatiblity shortcut to call `sunxi-fexc` to compile a `.fex` file
Bernhard Nortmann's avatar
Bernhard Nortmann committed
30
into the binary form used by the legacy 3.4 kernel ("linux-sunxi").
Alejandro Mery's avatar
Alejandro Mery committed
31

32
### sunxi-fel
33
34
35
36
37
38
39
40
41
42
43
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
44
with `./sunxi-fel --list --verbose`.
45

46
### fel-gpio
47
Simple wrapper (script) around `sunxi-pio` and `sunxi-fel`
48
to allow GPIO manipulations via FEL
49

50
51
### fel-sdboot
ARM native sdcard bootloader forcing the device into FEL mode
52

53
54
55
56
57
58
59
60
### 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).

61
### sunxi-pio
62
Manipulate PIO registers/dumps
63

64
65
66
### sunxi-nand-part
Tool for manipulating Allwinner NAND partition tables

67
68
69
### sunxi-nand-image-builder
Tool used to create raw NAND images (including boot0 images)

70
71
72
73
74
75
### 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_)
76
77
78

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

80
81
82
83
84
85
86
87
88
89
90
### 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
91

92
93
94
95
### 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:
96

97
98
	make CROSS_COMPILE=arm-linux-gnueabihf- sunxi-script_extractor
---
99

100
101
102
103
104
## 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
105
106
107
108
109
110
111
needed. Development versions of zlib and libfdt are also required.

To install the dependencies on Ubuntu 20.04 using package manager:

```bash
sudo apt install libusb-1.0-0-dev libz-dev libfdt-dev
```
112
113
114
115
116
117
118
119
120

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
121
122
123
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*.
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<br>_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.
147
Currently this means `phoenix_info` and `sunxi-nand-image-builder`.
148
149
150
151

* `make install-misc`
builds *misc* and installs the resulting binaries.

152
## License
Alejandro Mery's avatar
Alejandro Mery committed
153
This software is licensed under the terms of GPLv2+ as defined by the
154
155
Free Software Foundation, details can be read in the [LICENSE.md](LICENSE.md)
file.
156

157
[allwinner soc]: http://linux-sunxi.org/Allwinner_SoC_Family
158
[fel mode]: http://linux-sunxi.org/FEL