【U-Boot 之七】fastboot原理分析及uboot fastboot功能实践

news2024/11/28 23:42:32

  本文首先介绍了fastboot的基本原理,然后分析了uboot中fastboot的实现,最后,从实践的角度测试了fastboot协议及各种fastboot命令的使用方式等 。本文的仅按照我本人的实际测试过程进行了简单的描述。若有不当之处,欢迎各位大神不吝赐教,谢谢。

1. 综述

  首先明确一点,fastboot是一种通信协议。
  fastboot 协议是一种通过 USB 或以太网(UDP)与引导加载程序通信的机制。 它的设计非常简单,可以在各种设备和运行 Linux、macOS 或Windows 的主机上使用。实现的基本原理就是 PC 机通过 fastboot 协议与 bootloader 通信。

总结来说,就是如下几点
(1)fastboot是android使用的一种刷机方法。android系统设计了2种刷机方式:fastboot和recovery;
(2)fastboot使用usb作为物理传输。刷机其实是镜像传输+烧录,fastboot刷机时就是通过usb线来传输镜像的;
(3)fastboot也是uboot中的一个命令,uboot启动时手动进入命令行模式,此时如果需要刷机,则可以在命令行中执行fastboot命令,就可以让uboot进入fastboot模式,刷机就是在fastboot模式下进行的;
(4)若想通过uboot的fastboot命令实现刷机,需要主机端的fastboot软件配合(fastboot.exe)

2. 源码分析

待添加。。。

3. 工程实践

3.1 准备工作

3.1.1 下载fastboot.exe

  下载 fastboot 主机端的exe文件,网址为:https://developer.android.com/studio/releases/platform-tools?hl=zh-cn
在这里插入图片描述
  下载完成后,解压,然后进入文件夹,如下:在当前目录下,同时按下Shift+Ctrl,然后鼠标右键,选择“在此处打开 Powershell 窗口”,进入Powershell命令行
在这里插入图片描述
在这里插入图片描述

.\fastboot.exe connect udp:192.168.100.152:5554
该命令执行成功之后,无任何的响应,其中192.168.100.152为开发板的IP地址,端口号为5554(固定值),通过UDP进行通信

3.1.2 uboot配置与编译

待添加。。。

3.1.3 uboot磁盘分区(制作分区表)

  在启动 fastboot 进行文件传输之前,需要保证磁盘已经完成了分区,创建了分区表才行。我使用的开发板的存储机制为1G的eMMC,执行步骤如下:

  1. 启动开发板,进入uboot的命令行模式;
  2. 设置环境变量
=> setenv mbr_parts 'name=boot,start=4M,size=128M,bootable,id=0x0e; name=rootfs,size=10G,id=0x83'
  1. 将分区表写入eMMC
=> mbr write mmc 0
MBR: write success!
  1. 校验分区信息是否正确
=> mbr verify mmc 0
MBR: verify success!

注意:在我的开发板中,eMMC的设备为0,所以上边的操作的都是 mmc 0, 这个需要根据实际情况进行修改

3.1.4 uboot格式化分区

由于业务需要,需要对分区1进行格式化,格式化的命令为:fatformat mmc 0:1

fatformat mmc 0:1	/* 将mmc0的分区1格式化为FAT32 */

3.1.5 制作文件系统(rootfs)

可通过如下脚本直接制作出自己用于测试的文件系统(rootfs.ext4.img):
在这里插入图片描述

dd if=/dev/zero of=rootfs.ext4.img seek=524288 count=0 bs=1024
mkfs.ext4 -F -i 4096 rootfs.ext4.img -d rootfs
fsck.ext4 -pdvfD rootfs.ext4.img

需要注意的是,在运行的mkfs.sh脚本的目录下,必须有一个rootfs的文件夹才行(文件夹里可以放一些文件或者文件夹)

3.2 测试

进入Uboot命令行后,执行如下命令,可以查看fastboot的帮助信息:
在这里插入图片描述

通过帮助信息可以总结如下几点信息:

  1. fastboot 既可以使用 udp,也可以使用 usb 模式
  2. 可选参数 addr 指定的了 fastboot 缓冲区在内存中的首地址
  3. 可选参数 size 指定了 fastboot 缓冲区的大小,单位为:字节

3.3.1 udp方式

开发板端
命令:fastboot udp
在这里插入图片描述

windows主机端
命令:.\fastboot.exe -s udp:192.168.100.152:5554 flash mmcsda2 .\256.ext4.img
在这里插入图片描述

3.3.2 usb方式

开发板端
命令:fastboot usb 0
windows主机端
命令:.\fastboot.exe flash mmcsda2 .\256.ext4.img

参考文献:

  • https://zhuanlan.zhihu.com/p/518965515

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590185.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

专家警告AI可能会导致人类灭绝?

人工智能可能导致人类灭绝,包括 OpenAI 和 Google Deepmind 负责人在内的专家警告说 数十人支持在人工智能安全中心 的网页上发表的声明。 它写道:“减轻人工智能灭绝的风险应该与其他社会规模的风险(如流行病和核战争)一起成为全…

Linux系统安装RabbitMQ

rabbitmq安装 说明:本次使用centos7.9 安装虚拟机. 1. 安装依赖环境 在线安装依赖环境: yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xz2. 安装Erlang 根据课…

[原创]集权设施保护之LDAP协议

LDAP是一种目录访问协议,它规定了以树状结构的方式来存储和访问数据。然而协议是抽象的,要产生具体的功效,必须在应用中实现,比如AD域服务就实现了LDAP协议。 LDAP最明显的优势就是读取速度快,拥有极高的搜索效率。 可…

Drools规则引擎

Drools规则引擎 Drools规则引擎1、Drools简介2、Drools入门案例2.1、业务场景2.2、maven坐标2.3、编写xml配置文件(多方法)2.4、创建drl规则文件2.5、单元测试 3、Drools基础语法3.1、规则文件的构成3.2、规则体语法结构3.2.1、条件部分3.2.1.1、约束连接…

day4,day5 -java集合框架

List、Set、Map等常用集合类的特点和用法。 常用集合类(List、Set、Map 等)是 Java 中提供的数据结构,用于存储和操作一组数据。以下是它们的特点和用法: List(列表): 特点:有序集合&#xff0…

多元办公场景下,企业如何保障工作效率与数据安全流通?

为适应数字化转型需求,提升办公效率,很多企业对工作模式进行革新,并将更多协同办公工具引入工作流程。然而,这也扩大了企业内网对外的安全暴露面,企业亟需进一步加强底层基础设施的网络安全建设,严防勒索病…

分布式监控平台——Zabbix6.0

市场上常用的监控软件: 传统运维:zabbix、 Nagios云原生环境: Prometheus (go语言开发的) 一、zabbix概述 作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数…

内网渗透(八十六)之Exchange ProxyLogon攻击链利用

Exchange ProxyLogon攻击链利用 漏洞背景 2021年3月2日,微软发布了Exchange服务器的紧急安全更新,修复了如下7个相关的漏洞。 Exchange服务端请求伪造漏洞(CVE-2021-26855):未经身份验证的攻击者能够构造HTTP请求扫描内网并通过Exchange服务器进行身份验证。Exchange反序列…

基于SpringBoot的财务管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:…

王石创立“生物圈三号”发起“双碳同行者大会”,绿色家居企业参与其中

2023年5月27日 ,由万科集团创始人、深石集团创始人王石先生创立的碳中和社区品牌“生物圈三号”在深圳大梅沙成功举办了“回归未来双碳同行——生物圈三号双碳同行者大会暨全球运河穿越新书发布会”。 生物圈三号作为社区碳中和综合解决方案平台,为建筑、…

JVM-基础知识

JVM基础知识 JVM结构图 字节码文件 Java虚拟机不和包括Java在内的任何语言绑定,它只与字节码文件这种特定的二进制文件格式所关联. Class文件结构不仅仅是JVM的执行入口,更是Java生态圈的基础和核心. 字节码文件内容是什么 字节码是一种二进制的类文件,他的内容是JVM指令,而…

OpenAI竞对再被谷歌加注!4.5亿美元新融资到位,累计已吸金14.5亿美元

量子位 | 公众号 QbitAI OpenAI之外,第二不差钱的AI初创公司出现了! 研发出ChatGPT最强竞品Claude的Anthropic公司,在谷歌投资之后,再次官宣获得了4.5亿美元C轮融资。 这轮收购之后,Anthropic资金一跃达到14.5亿美元…

CPLEX Studio OPL项目介绍

参考B站视频:cplex入门到精通 1.理解 OPL 项目 CPLEX Studio 处理 OPL 项目文件(.project)、数据文件(.dat)、模型文件 (.mod)、设置文件(.ops)和运行配置(.oplproject)。 文件类型扩展名作用份数说明模型文件.mod模型存储和数据1~n必须数据文件.dat数据存储0~n非…

【代码随想录】刷题Day42

1.01背包问题 问题介绍:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 1.二维数组实现思想 1.dp[i][j]的含义:首先…

头羊部落亮相首届校园预制菜展,成为预制菜行业领头羊

由北京工商大学与北京市学校基建后勤管理事务中心共同主办的首届预制菜产业与智慧团餐高质量发展研讨会暨校园食材展(以下简称大会)于2023年5月26-27日在北京工商大学举办。 △首届预制菜产业与智慧团餐高质量发展研讨会在北京工商大学隆重举行 △预制菜…

【Python map()、filter() 和 reduce()】零基础也能轻松掌握的学习路线与参考资料

Python编程中常使用map()、filter()和reduce()函数来实现对数据集的操作,尤其是在处理数据时,这些函数非常有用。在本文中,将介绍这些函数的学习路线和优秀实践,并提供一些参考资料供读者参考。 一、Python map() 函数 Python中…

附录5-黑马头条案例

目录 1 效果 2 组件库vant 2.1 安装 2.2 配置 2.3 项目中的使用 2.3.1 引用 2.3.2 tabbar 底部切换 2.3.3 navbar 顶部标题 2.3.4 van-list 上拉触底更新 2.3.5 van-pull-refresh 下拉更新 2.3.6 v-cell 2.3.7 van-icon 2.3.8 自定义风格 3 保持滚…

做接口测试时遇到接口加密了该如何处理

对明文编码生成信息摘要,以防止被篡改。比如MD5使用的是Hash算法,无论多长的输入,MD5都会输出长度为128bits的一个串。 摘要算法不要秘钥,客户端和服务端采用相同的摘要算法即可针对同一段明文获取一致的密文。 对称加密 对称加…

C语言获取AIX单网卡的多IP地址

环境配置 在AIX上,可以使用smitty tcpip命令给单个网卡配置多个IP别名。操作步骤如下: 选择Further Configuration 选择Network Interfaces 选择 Network Interfaces Selection 选择 Configure Aliases 5.选择Add an IPV4 Network Alias 选择需要配…

Vue3:组合式写法入门

Vue3&#xff1a;组合式写法入门 Date: May 11, 2023 认识Vue3 1. Vue3组合式API体验 通过 Counter 案例 体验Vue3新引入的组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script><script setup> imp…