1、sunxi-tools介绍
sunxi-tools是一组用于全志SoC系列芯片的开源命令行工具,全志的SoC一般以sun开头,x为数字,以i结尾。对于sun4i,sun5i,sun6,sun8i,sun9i.等等系列都可以使用这个工具。比如手上的这个板子是H616,它的名字是sun50i-H616。
sunxi-tools是一组工具集,这组工具可以用于对全志SoC进行片上程序的封装、FEX和二进制转换、PIO配置、FEL工厂工程模式等等一系列有用的工具。
比如我们这次要用到的这个工具集中的sunxi-fel工具没,我们需要编译一个最新的版本,就需要用到最新的工具包源码,进行一个最新版本的编译。
但是由于下载的编译好的版本貌似并不支持H616的uboot,因此需要编译新一个sunxi-tools版本。
2、构建说明
Ubuntu 18.04需要先安装以下依赖包
sudo apt install pkg-config libusb-1.0-0-dev zlib1g-dev binutils libfdt-dev
接下来拉取代码
git clone https://github.com/linux-sunxi/sunxi-tools.git
编译需要使用到libusb-1.0的头文件和库,将会成为sunxi-fel
的依赖。
要配置这个库的依赖,可以考虑显性的配置一个变量LIBUSB_CFLAGS
和LIBUSB_LIBS ,不过还是推荐通过pkg-config的去自动编译这个依赖。
3、编译
cd sunxi-tools
开始默认的编译
make
不过推荐参考以下make参数,去编译目标。
make tools
可以构建一些有用的工具,和make
作用相同。make target-tools
构建工具可以使用交叉编译链进行编译到目标平台上。可以通过指定变量的方式指定交叉编译链前缀,比如make target-tools CROSS_COMPILE=arm-none-eabi-
。make all
会同时构建以上两种。make install-tools
构建工具和安装到一个指定的文件系统位置上,这个位置可以通过DESTDIR
、PREFIX
、BINDIR
指定。make misc
构建主机上各种各样的实用工具。例如phoenix_info
和sunxi-nand-image-builder
.
4、工具
1、FEX格式
FEX是全志芯片特有的一种SoC工作参数文件,包含了对外设接口的一切配置参数,包括GPIO、DRAM、显示屏等等各种参数。记录格式是传统INI格式,包含[节],每个[节]下面包含 键 = 值 格式的配置行。
类似
[product]
version = "1.0"
machine = "A10-EVB-V1.2"
- 1
- 2
- 3
2、sunxi工具包
sunxi-fexc是一个用于转换fex和二进制描述的文件的程序,可以双向转换fex和bin描述文件。这个工具编译完成后还有两个快捷链接,bin2fex和fex2bin,功能如同链接文件名称。
3、sunxi-pio
操作各种PIO设置,比如GPIO配置等等。
可以用于对PIO寄存器进行dump操作或者通过直接的mmap进行直接硬件访问。
可能用到的不多。
4、sunxi-tools
5、sunxi-fel
这个程序提供了用于和全志SoC进行通讯和控制的脚本接口,除非指定–dev或者–sid,否则工具会访问第一个全志FEL模式的设备。可以通过sunxi-fel --list --verbose
来查看FEL设备列表。
FEL 是一种利用主机USB与全志SoC 的Boot ROM进行通讯的一种低级别手段。被用于最初始的片上编程活动以及设备恢复的手段。
进入FEL模式,根据不同的板子可能有不同的进入方法。有的可以进行boot0或boot1初始化,有的不行。
如果你打算使用FEL模式去获取设备信息,可以考虑选取一种方法初始化到boot1状态。不同的板子可能有好几种方法,包括不限于:
- 1、如果你的板子上有个专门的按钮,可以通过开机时保持按住这个按钮,可以进入FEL模式
- 2、有可能通过VOL+或其他按钮在开机时保持按住,进入boot1
- 3、通过串口控制台UART
……
等等
对于Orange Pi Zero 2 (H616),只要在不插TF卡的状态下,USB连接,既可以进入FEL模式。
在Ubuntu或其他Linux发行版情况下可以通过libusb库直接连接设备。
在Windows上需要Zadig安装WinUSB驱动来实现。
6、usb-boot
已经废弃的遗留的USB启动程序。
7、fel-pio
可以在FEL模式下启用IO寄存器访问。这个程序不应该直接使用。
8、fel-sdboot
一个用于ARM本地启动代码,用来强制进入FEL模式,可以直接启动到FEL模式而无需按任何按钮。
9、jtag-loop
jtag模式
10、sunxi-bootinfo
从 Allwinner 设备中拉取启动文件(boot0/boot1)
11、meminfo
这是一个设备端工具,可以读取寄存器信息并且打印所有需要添加到uboot的设备支持。这个工具要求静态编译,以便也可用于Android系统。
12、script-extractor
设备端工具,用于读取RAM中魔法地址0x4300000中的script.bin数据并且保存到文件中,这个工具需要静态编译,可用于Android设备中。不过要注意的是这个文件只能用于基于FEX的内核中,在基于主线内核的设备树没有任何作用。
13、phoenix-info
读取通过 phoenixcard工具创建的SD卡镜像信息并且从隐藏分区中释放嵌入式启动代码和固件文件,不过对于LiveSuit 的镜像没有用。
14、sunxi-nand-part
sunxi-nand-part 是专门为sunxi 的NAND设备重新分区的工具。应当以设备的架构交叉编译,而且需要对内核打一个特别的补丁,为将整个NAND作为一个块设备暴露使用。
4、运行uboot
通过以下命令可以在开发板上运行我们编译好的uboot
./sunxi-fel uboot u-boot-sunxi-with-spl.bin
- 1
参考文献:
1.Sunxi-tools
2.BROM
3.FEL/USBBoot
4.Github:sunxi-tools
5.FEL
6.LiveSuit images