Ubuntu下编译最新版本全志开源FEL模式工具sunxi-tools_全志 fel-程序员宅基地

技术标签: H616  Orange PI  linux  Allwinner  嵌入式  

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 构建工具和安装到一个指定的文件系统位置上,这个位置可以通过DESTDIRPREFIXBINDIR指定。
  • make misc 构建主机上各种各样的实用工具。例如phoenix_infosunxi-nand-image-builder.

4、工具

1、FEX格式

FEX是全志芯片特有的一种SoC工作参数文件,包含了对外设接口的一切配置参数,包括GPIO、DRAM、显示屏等等各种参数。记录格式是传统INI格式,包含[节],每个[节]下面包含 键 = 值 格式的配置行。
类似

[product]
version = "1.0"
machine = "A10-EVB-V1.2"
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.Sunxi-tools
2.BROM
3.FEL/USBBoot
4.Github:sunxi-tools
5.FEL
6.LiveSuit images

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lp8800/article/details/119877808

智能推荐

python difflib 编辑距离_Python Edit_Distance包_程序模块 - PyPI - Python中文网-程序员宅基地

文章浏览阅读413次。编辑距离用于计算序列之间编辑距离和对齐的python模块。我需要一种方法来计算python中序列之间的编辑距离。我没有能够找到任何合适的库来实现这一点,所以我自己编写了一个。在那里似乎有许多可用于计算编辑的编辑距离库两个字符串之间的距离,但不是两个序列之间的距离。这完全是用python编写的。这种实现可能是在python中优化为更快。如果在C中实现。库API是根据difflib.sequencem..._edit distance python lib

antd upload组件 手动上传-程序员宅基地

文章浏览阅读3.8k次,点赞2次,收藏15次。antd 的upload组件是点开对话框后,按下确实就会上传,而且如果多选文件也会反复调用后端接口来完成上传。因为项目需要,所以要实现手动上传,和一次性上传多个文件(调用一次后端接口)在实现这个功能时,我翻阅了很多博客,可能是因为版本原因,很多代码都无用,最后还是通过翻阅官方文档,才最终实现。..._antd upload

sqlite3 环境搭建_sqlite 部署-程序员宅基地

文章浏览阅读246次。注意 第一步在一个文件下打开终端然后 sqlite3 student.db(创建一个数据库),然后再create stu。callback 回调函数 (只有sql为查询语句的时候,才会执行此语句)6--删除一列(sqlite3 不支持) 用下面方法。功能 :打开sqlite 数据库。功能 :关闭sqlite 数据库。基本sql命令,不以 . 夹头,db:指向sqlite句柄的指针。将新表的名字改为原来表的名字。sqlite3的基本命令。功能:执行一条sql语句。以 . 开头的命令。_sqlite 部署

canal-adapter趟坑实践:canal-server的kafka SASLPLAIN方式鉴权适配_canal adapter kafka sasl-程序员宅基地

文章浏览阅读1.4w次。前言canal-server同步到kafka本身是支持Kerberos方式的鉴权的,但是鉴于项目现在使用的kafka集群使用的是SASL/PLAIN的鉴权方式,所以需要对canal-server同步kafka做一下适配改造。准备kafka SASL/PLAIN鉴权的搭建我参考的这篇文章kafka SASL/PLAIN鉴权的搭建了解如何使用java向以SASL/PLAIN方式鉴权的kafk..._canal adapter kafka sasl

Android adb shell相关命令_android的shell命令工具:设备规范管理-程序员宅基地

文章浏览阅读711次。adb(调试桥):debug工具。adb作用:借助adb工具,可以管理设备或手机模拟器状态。adb相关操作命令如下: 1. 显示系统中全部Android平台: android list targets2. 显示系统中全部AVD(模拟器): android list avd3. 创建AVD(模拟器): android create avd_android的shell命令工具:设备规范管理

Centos 7.9 在线安装 VirtualBox 7.0_centos安装virtualbox-程序员宅基地

文章浏览阅读769次,点赞10次,收藏7次。Centos 7.9 在线安装 VirtualBox 7.0_centos安装virtualbox

随便推点

Autodesk官方卸载工具软件安装教程-程序员宅基地

文章浏览阅读1.4w次,点赞9次,收藏10次。Autodesk卸载工具是一个专门用于Autodesk软件的卸载工具,可以自动识别电脑中的所有Autodesk软件,只需一键点击就能将Autodesk的软件完美卸载,并且不保留任何痕迹,这款卸载工具就可以帮助用户全面卸载Autodesk软件。_autodesk官方卸载工具

JDBC报错:Cannot find class: com.mysql.jdbc.Driver-程序员宅基地

文章浏览阅读4.9k次。1.配置书写错误:配置文件value值引号内不能有空格,属性文件配置信息末尾不能有空格(1)打开属性文件中com.mysql.jdbc.Driver后发现多了一个空格(如下我标出了),所以写属性文件时一定别多输入多余的空格了。 jdbc.driverClassName=com.mysql.jdbc.Driver(此处有空格)(2)配置文件中的value值的" "号中前面或..._cannot find class: com.mysql.jdbc.driver

软件常用术语_软件术语-程序员宅基地

文章浏览阅读1.8k次。软件常用术语,免得你面对各种设计模式头发晕_软件术语

Machine Learning 2 - 非线性回归算法分析_非线性回归分析方法-程序员宅基地

文章浏览阅读2.8k次。2017-08-02@erixhao 技术极客TechBoosterAI 机器学习第二篇 - 非线形回归分析。我们上文深入本质了解了机器学习基础线性回归算法后,本文继续研究非线性回归。非线性回归在机器学习中并非热点,并且较为小众,且其应用范畴也不如其他广。鉴于此,我们本文也将较为简单的介绍,并不会深入展开。非线性回归之后,我们会继续经典机器学习算法包括决策_非线性回归分析方法

hive基本函数_josn mincol-程序员宅基地

文章浏览阅读164次。一、关系运算:1.等值比较: =语法:A=B操作类型:所有基本类型描述:如果表达式A与表达式B相等,则为TRUE;否则为FALSE举例:hive>select 1 from lxw_dual where 1=1;12.不等值比较: <>语法: A <> B操作类型:所有基本类型描述:如果表达式A为NULL,或者表..._josn mincol

FI 与SD MM相关接口配置_sd 和fi 接口产生什么凭证?-程序员宅基地

文章浏览阅读767次。1 FI/SD 借口配置FI/SD通过tcode VKOA为billing设置过帐科目,用户可以创建自己的科目定义数据表。 科目是做到COA级的,通过KOFI/KOFK这两个condition type确定分别过帐到FI和CO凭证中。 由于PricingProc.是同Sale_sd 和fi 接口产生什么凭证?

推荐文章

热门文章

相关标签