嵌入式Linux中ADB安装教程 (嵌入式linux adb安装)

嵌入式系统是一种特殊的计算机系统,它通常被用来作为嵌入式设备的控制核心。嵌入式系统的特性包括紧凑的体积、较低的功耗、高可靠性和特定的实时性要求等。这些特性使得嵌入式系统在许多领域得到广泛应用,例如便携式设备、智能家居、医疗设备等。

在嵌入式系统开发中,ADB(Android Debug Bridge)是一种非常常用的工具,它可以连接开发机和嵌入式设备,并进行调试、安装、卸载应用程序等操作。但是在嵌入式Linux中,ADB并不是默认安装的,需要进行手动安装。本文将介绍在嵌入式Linux中安装ADB的步骤。

步骤一:安装开发工具链

在进行ADB安装之前,需要安装开发工具链,以便能够在嵌入式系统上进行交叉编译。开发工具链包含了交叉编译器、库等工具,可以用来编译嵌入式系统的应用程序。通常情况下,开发工具链的安装方式与嵌入式系统的构建方式有关,因此本文不作赘述,读者可以参考相关开发文档进行安装。

步骤二:下载ADB源码

在进行ADB安装之前,需要先下载ADB源码。ADB源码可以从Android官方网站上下载,地址为:https://android.googlesource.com/platform/system/core/+/eclr-release/adb。

下载完成后,将源码文件解压缩至任意目录。在解压缩过程中,可能会出现部分文件或目录不被解压的情况,这是由于ADB源码依赖于其他源码,解压非完整源码会导致编译失败。因此,在解压缩之前,需要确认所有的源码文件都已经下载完整。

步骤三:交叉编译ADB

在完成步骤一和步骤二之后,可以开始进行ADB的交叉编译了。具体步骤如下:

1. 进入ADB源码目录:cd adb

2. 设置编译环境变量:

export CROSS_COMPILE=/bin/arm-linux-gnueabihf-

export CC=/bin/arm-linux-gnueabihf-gcc

export LD=/bin/arm-linux-gnueabihf-ld

export AR=/bin/arm-linux-gnueabihf-ar

其中,表示开发工具链所在的路径。这些变量的作用分别是:

CROSS_COMPILE:指定交叉编译器的路径和前缀。

CC:指定交叉编译器的路径和名称。

LD:指定链接器的路径和名称。

AR:指定静态库生成器的路径和名称。

3. 运行make命令编译ADB:

make

编译过程可能会比较漫长,取决于嵌入式系统的性能和编译选项的设置。在编译完成后,可以在out/host/linux-x86/bin目录下找到adb可执行文件。

步骤四:设置ADB环境变量

在完成编译之后,需要将ADB的路径加入环境变量中,以便在任意路径下都可以使用ADB。在嵌入式Linux中,可以使用以下命令设置环境变量:

export PATH=$PATH:

其中,表示adb可执行文件所在的路径。

步骤五:测试ADB

在完成以上步骤后,可以在嵌入式系统上测试ADB是否已经安装成功。可以通过以下命令测试:

adb devices

如果输出结果为“device”,则表示ADB已经可以正常使用。如果输出为空,或者显示“unauthorized”,则表示设备和PC之间的连接存在问题,需要进一步检查设备和PC之间的连接是否正常。

相关问题拓展阅读:

怎样在Ubuntu下安装Android SDK/ADB

Ubuntu电脑安装Android SDK/裤漏虚ADB   之一步,你要下载Linux版Android SDK的安装或文件包,然后你需要从Android SDK Manager内下载Platform Tools Package   请从Google官方获取Android SDK安装或文件包,通常情况,你下载的文件名为android-sdk_rxx-linux.tgz的形式,rxx代表版本,比如,r16版,即android-sdk_r16-linux.tgz,r24版,即android-sdk_r24-linux.tgz   请放置Android SDK安装或文件包在你的用户搜猜主目录   胡燃在你的Ubuntu电脑上打开终端窗口   解压Android SDK文件: cd ~ tar -zxvf android-sdk_r16-linux.tgz   在~/android-sdk-linux/tools字目录,有一个叫做android的可执行文件,尽管名字是android,但它实际上是Android SDK Manager   运行Android SDK Manager: ./~/android-sdk-linux/tools/android   选择Android SDK Tools与Android SDK Platform-tools项,点Install packages安装Platform Tools Package工具包。

  Ubuntu电脑安装Android SDK/ADB

  之一步,你要下载Linux版Android SDK的安装或文件包,然后你需要从Android SDK Manager内下载Platform Tools

Package

  请从Google官方获取Android

SDK安装或文件包,通常情况,你下载的文件名为android-sdk_rxx-linux.tgz的形式,rxx代表版本,比如,r16版,即android-sdk_r16-linux.tgz,r24版,即android-sdk_r24-linux.tgz

  请放置Android SDK安装或文件包在你的用户主目录

  在你的Ubuntu电脑上打开终端窗口

  解压Android SDK文件:

cd ~

tar -zxvf android-sdk_r16-linux.tgz

  在~/android-sdk-linux/tools字目录,有一个叫做android的可执行文件,尽管名字是android,但它实际上是Android

SDK Manager

  运行Android SDK Manager:

./~/android-sdk-linux/tools/android

  选择Android SDK

Tools与Android SDK Platform-tools项,点Install

packages安雹谨装Platform Tools

Package工具包。包括ADB与Fastboot可执行的文件在内的工具包都会被下载,由于下载的文件较多而需要一定的时间,你能去喝点东西

  你下载的Platform Tools

Package工具包文件将位于新创建的~/android-sdk-linux/platform-tools目录

  第二步,修改ADB与Fastboot可执行文件的默认PATH路径环境。PATH环境变量可以是在~/.profile(或~/.bash_profile)或者~/.bashrc文件内修改,~/.profile文件是读取所有交互式Shell的登录,~/.bashrc文件读取所有非交互式Shell的登录(如sftp),瞎肆高在大多数默认情况下,~/.profile文件导入所有~/.bashrc文件的设置。PATH命令设定的改变必须包括/android-sdk-linux/tools与/android-sdk-linux/platform-tools目录

  kevdog的PATH命令设定通过Ubuntu系统内初始的默认编辑器Gedit在~/.bashrc文件底部增加了一行:

export

PATH=${PATH}:${HOME}/android-sdk-linux/tools:${HOME}/android-sdk-linux/platform-tools

  第三步,我们需要为Ubuntu创建udev设备管理规则,从而让设备在通磨尺过USB端口连接到电脑时能被正确地识别

  将设备连接到电脑,然后执行命令:

lsu

  你会看到类似于下面的输出信息:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation

2.0 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004

Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 Device 001:

ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 063: ID 04e8:6860

Samsung Electronics Co., Ltd

  由于kevdog的设备是Samsung的某款设备,因此你能看到相应的识别信息:

Bus 001 Device 063: ID

04e8:6860 Samsung Electronics Co., Ltd

  我们来解释下上面的识别信息:

  Bus 001 Device

063,设备端的名称是/dev/bus/u/001/063,即这个信息可以帮助我们确定设备端的名称

  04e8,vendorID,即供货商编号

  6860,productID,即产品编号

  使用设备端的名称/dev/bus/u/001/063可以让我们查询设备的属性,查询这些属性有时很有必要,因为udev设备管理匹配设备是基于特定标准的。为此,我们需要一个正确的udev设备匹配规则集,这个过程的之一步就是查询能被连接或插入到我们规则集的准则,这可以通过udevadm程序来实现,并且有两种方式现,它们生成的输出信息为我们的设备构建udev设备管理规则:

  udevadm查询udev设备管理规则方法1:

udevadm info -q all -n

根据原作者的实际情况,设备端名称是/dev/bus/u/001/063,因此命令是:

udevadm info -q all -n /dev/bus/u/001/063

你会看到类似于下面的输出信息:

$ udevadm info -q all -n /dev/bus/u/001/063

P:

/devices/pci0000:00/0000:00:1d.7/u1/1-8

N: bus/u/001/063

S:

libmtp-1-8

S: GalaxyNexus

E: UDEV_LOG=3

E:

DEVPATH=/devices/pci0000:00/0000:00:1d.7/u1/1-8

E: MAJOR=189

E:

MINOR=62

E: DEVNAME=/dev/bus/u/001/063

E: DEVTYPE=u_device

E:

DRIVER=u

E: PRODUCT=4e8/6860/216

E: TYPE=0/0/0

E: BUSNUM=001

E: DEVNUM=063

E: SUBSYSTEM=u

E: ID_MTP_DEVICE=1

E:

ID_MEDIA_PLAYER=samsung_galaxy-s2

E: ID_VENDOR=samsung

E:

ID_VENDOR_ENC=samsung

E: ID_VENDOR_ID=04e8

E: ID_MODEL=Galaxy

E:

ID_MODEL_ENC=Galaxy

E: ID_MODEL_ID=6860

E: ID_REVISION=0216

E:

ID_SERIAL=samsung_Galaxy_0146B

E:

ID_SERIAL_SHORT=0146B

E: ID_BUS=u

E:

ID_USB_INTERFACES=:ffff00:ff4201:

E: DEVLINKS=/dev/libmtp-1-8

/dev/GalaxyNexus

E: TAGS=:udev-acl:

我们使用的规则从有E:(E=ENV=Device

Property设备属性值)的行开始

  udevadm查询udev设备管理规则方法2:

udevadm info -a -p $(udevadm info -q path

-n )

根据原作者的实际情况,设备端名称是/dev/bus/u/001/063,因此命令是:

udevadm info -a -p

$(udevadm info -q path -n /dev/bus/u/001/063)

你会看到类似于下面的输出信息:

$ udevadm info -a -p $(udevadm info -q path -n /dev/bus/u/001/063)

Udevadm info starts with the device specified by the devpath and then

walks up the chain of parent devices. It prints for every device

found,

all possible attributes in the udev rules key format.

A rule to match, can

be composed by the attributes of the device

and the attributes from one

single parent device.

looking at device

‘/devices/pci0000:00/0000:00:1d.7/u1/1-8’:

KERNEL==”1-8″

SUBSYSTEM==”u”

DRIVER==”u”

ATTR{configuration}==””

ATTR{bNumInterfaces}==” 2″

ATTR{bConfigurationValue}==”1″

ATTR{bmAttributes}==”80″

ATTR{bMaxPower}==”500mA”

ATTR{urbnum}==”29″

ATTR{idVendor}==”04e8″

ATTR{idProduct}==”6860″

ATTR{bcdDevice}==”0216″

ATTR{bDeviceClass}==”00″

ATTR{bDeviceSubClass}==”00″

ATTR{bDeviceProtocol}==”00″

ATTR{bNumConfigurations}==”1″

ATTR{bMaxPacketSize0}==”64″

ATTR{speed}==”480″

ATTR{busnum}==”1″

ATTR{devnum}==”63″

ATTR{devpath}==”8″

ATTR{version}==” 2.00″

ATTR{maxchild}==”0″

ATTR{quirks}==”0x0″

ATTR{avoid_reset_quirk}==”0″

ATTR{authorized}==”1″

ATTR{manufacturer}==”samsung”

ATTR{product}==”Galaxy”

ATTR{serial}==”0146B”

looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/u1’:

KERNELS==”u1″

SUBSYSTEMS==”u”

DRIVERS==”u”

ATTRS{configuration}==””

ATTRS{bNumInterfaces}==” 1″

ATTRS{bConfigurationValue}==”1″

ATTRS{bmAttributes}==”e0″

ATTRS{bMaxPower}==” 0mA”

ATTRS{urbnum}==”1403″

ATTRS{idVendor}==”1d6b”

ATTRS{idProduct}==”0002″

ATTRS{bcdDevice}==”0300″

ATTRS{bDeviceClass}==”09″

ATTRS{bDeviceSubClass}==”00″

ATTRS{bDeviceProtocol}==”00″

ATTRS{bNumConfigurations}==”1″

ATTRS{bMaxPacketSize0}==”64″

ATTRS{speed}==”480″

ATTRS{busnum}==”1″

ATTRS{devnum}==”1″

ATTRS{devpath}==”0″

ATTRS{version}==” 2.00″

ATTRS{maxchild}==”8″

ATTRS{quirks}==”0x0″

ATTRS{avoid_reset_quirk}==”0″

ATTRS{authorized}==”1″

ATTRS{manufacturer}==”Linux 3.0.0-14-generic

ehci_hcd”

ATTRS{product}==”EHCI Host Controller”

ATTRS{serial}==”0000:00:1d.7″

ATTRS{authorized_default}==”1″

looking at parent device ‘/devices/pci0000:00/0000:00:1d.7’:

KERNELS==”0000:00:1d.7″

SUBSYSTEMS==”pci”

DRIVERS==”ehci_hcd”

ATTRS{vendor}==”0x8086″

ATTRS{device}==”0x27cc”

ATTRS{subsystem_vendor}==”0x103c”

ATTRS{subsystem_device}==”0x3010″

ATTRS{class}==”0x0c0320″

ATTRS{irq}==”20″

ATTRS{local_cpus}==”ff”

ATTRS{local_cpulist}==”0-7″

ATTRS{dma_mask_bits}==”32″

ATTRS{consistent_dma_mask_bits}==”32″

ATTRS{broken_parity_status}==”0″

ATTRS{msi_bus}==””

ATTRS{companion}==””

looking at

parent device ‘/devices/pci0000:00’:

KERNELS==”pci0000:00″

SUBSYSTEMS==””

DRIVERS==””

我们使用的规则从有ATTRS(ATTRS=Device

Attributes设备属性)的行开始

  不管是ENV,还是ATTRS,我们可以构建一个udev设备管理规则集。规则集的名称可以随意,根据原作者的意图,我们叫做51-android.rules:

  你能这样建立规则集文件:

gksu gedit /etc/udev/rules.d/51-android.rules

  之后,请在规则集文件中加入相关的规则,以原作者的规则来看,注意是一行一个:

SUBSYSTEM==”u”,

ENV{ID_VENDOR_ID}==”04e8″, ENV{ID_MODEL}==”Galaxy”, MODE=”0666″,

SYMLINK+=”GalaxyNexus”

SUBSYSTEM==”u”, ENV{ID_VENDOR_ID}==”04e8″,

ENV{ID_MODEL_ID}==”6860″, MODE=”0666″, SYMLINK+=”GalaxyNexus”

SUBSYSTEM==”u”, ATTR{idVendor}==”04e8″, ATTR{idProduct}==”6860″,

ATTR{product}==”Galaxy” MODE=”0666″, SYMLINK+=”GalaxyNexus”

如上面所加的规则,这些规则匹配准则是SUBSYSTEM,

ENV,ATTR,它只会修改设备的模式MODE(0666=rw-rw-rw-)与创建链接于/dev/GalaxyNexus的GalaxyNexus标识。当然,更多的指令可以分配给设备,如插入或移除设备时的执行命令,你能这样指定指令:

ACTION==”add”, RUN+=””

ACTION==”remove”,

RUN+=””

例如,我们要设定设备在插入或弹出时播放一个声音或MP3文件,可以如下指令设定:

ACTION==”add”, RUN+=”/usr/local/bin/NexusMount.sh”

ACTION==”remove”, RUN+=”/usr/local/bin/NexusUnmount.sh”

需要注意的是,每个ACTION指令设定必须在它自己的命令行;目录必须正确;指令可以是多重设定

  一旦规则构建完成,我们需要保存/etc/udev/rules.d/51-android.rules规则文件

  在你执行规则集前,测试一下通常是一个好主意,因为那样你能很容易地找出编写规则集的错误:

  你能使用udevadm工具简单地完成规则集的测试:

udevadm info -q path -n d=

根据原作者的设备端名/dev/bus/u/001/063,测试行为:

udevadm test –action=”SUBSYSTEM==”u”, ENV{ID_VENDOR_ID}==”04e8″,

ENV{ID_MODEL}==”Galaxy” MODE=”0666″, SYMLINK+=”GalaxyNexus”” $(udevadm info -q

path -n /dev/bus/u/001/063)

虽然测试输出行相当长,两行输出信息正确地识别规则集的指令设定:

udev_rules_apply_to_event: MODE 0666

/etc/udev/rules.d/51-android.rules:1

udev_rules_apply_to_event: LINK

‘GalaxyNexus’ /etc/udev/rules.d/51-android.rules:1

  一旦你确认了规则集正确,请重启udev设备管理服务:

sudo service udev restart

  第四步,退出电脑的登录,然后重新登录回

  在设备插入的情况下,执行ADB命令,如确认设备连接:

$ adb devices

你会看到设备识别号信息,根据原作者的设备,它是

0146Bdevice

  如果你的设备已启动在Fastboot模式,许多设备不启动可能也行,你能执行Fastboot命令,如标准的Fastboot设备:

$

fastboot devices

怎样搭建一个嵌入式开发平台(ARM LINUX)?

搭建嵌入式Linux平台其实就是在宿主机与目标机之配侍间的连接,宿主机一般就是PC,目标机就是开发板。软件:在宿主机上需要Linux的发行版,目标机上需要移植Linux内核。交叉编译实现:先在宿主机上安装交叉工具链(ARM的),网上很多下载,也可以自行订制。然后用交叉工具链编译程序部署到目标机才可以运行。搭建平台还远不止这些,你还要移植bootloader(推荐U-Boot),移植Linux内核之后还圆禅要制作根文件系统(相当于计算机的硬盘),否则系统是无法启动的。

指导教程有很多,百度文库里面就有,只要搜索“Linux移植”一般整个搭建过程都会有叙述,但是整个的搭建过程因目标板、因内橘卖尘核、因交叉工具链等等的同而不同,没有普适的办法,整个移植的过程也会出现各种问题,耐心搭建吧,呵呵,祝你好运!

搭建嵌入式Linux平台其实就是在宿主机与目标机之间的连接,宿主机一般就是PC,目标机就是开发板。软件:在宿主机上需要Linux的发行版,目标机上需要移植Linux内核。交叉编译实现团指返:先在宿主机上安装交叉工具链(ARM的),网上很多下载,也可以自行订制。然后用交叉工具链编译程序部署到目标机才可以运行。搭建平台还远不止这些,你还要移植bootloader(推荐U-Boot),塌饥移植Linux内核之后还要制作根文件系统(相当于计算机的硬盘),否则系统是无法启动的。

指导教程有很多,百度文库里面就有,只要搜索“Linux移植”一般整个搭建过程都会有叙述,但是整个的搭建过程因目标板、因内核、因交叉工具链等等的同而不同,没有普适逗穗的办法,整个移植的过程也会出现各种问题,耐心搭建。

嵌入式Linux的ftp最游激常用来完成开发板和开发环境Linux系统之间的的文段手件传输功能神燃袜,避免了频繁的U盘拷贝的过程。

买一块 好点的 arm9 开发板,都会附带 教学视频的,这不是一两句能说清楚的。

关于嵌入式linux adb安装的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 嵌入式Linux中ADB安装教程 (嵌入式linux adb安装)