linux开发板增加adb功能

前言

本文将以100ask的imx6ull开发板为例,在开发板增加adb功能,该功能可以用于文件传输和开发调试;可以将pc端的文件传输到开发板。

一、Buildroot配置

Buildroot配置,需要将adb功能打开并加usb功能配置脚本

1、打开adb相关配置

进入buildroot目录执行配置命令:

make menuconfig

 
 
  • 1

打开adb相关配置,如下图所示
linux开发板增加adb功能

2、添加配置脚本

进入100ask_imx6ull-sdk/Buildroot_2019.02/board/100ask/bash/etc/init.d目录,进行如下步骤:
1、新建一个usb目录

mkdir usb

 
 
  • 1

2、在init.d目录下新建文件

vi S91usb
并添加如下内容,配置usb composit:
#! /bin/sh
CONFIGS_HOME=/sys/kernel/config/usb_gadget/demo
case "$1" in
  start)
        modprobe libcomposite
        mount none /sys/kernel/config -t configfs
        mkdir /sys/kernel/config/usb_gadget/demo
        cd /sys/kernel/config/usb_gadget/demo
        mkdir strings/0x409
        echo 0x1802 >  idVendor
        echo 0x1d06 >  idProduct
        echo 0x0100 >  bcdDevice
        echo "1234567ab" > strings/0x409/serialnumber
        echo "stack" > strings/0x409/manufacturer
        echo "usb composite" > strings/0x409/product
        mkdir -p /sys/kernel/config/usb_gadget/demo/configs/c.1
        mkdir -p /sys/kernel/config/usb_gadget/demo/configs/c.1/strings/0x409
        echo "adb+xxxx" > $CONFIGS_HOME/configs/c.1/strings/0x409/configuration
        echo 0xc0 > $CONFIGS_HOME/configs/c.1/bmAttributes
        echo 500 > $CONFIGS_HOME/configs/c.1/MaxPower

        /etc/init.d/usb/uvc $1
        /etc/init.d/usb/adb $1
        ls /sys/class/udc > $CONFIGS_HOME/UDC
        ;;
stop)
        echo none > /sys/kernel/config/usb_gadget/demo/UDC
        /etc/init.d/usb/adb $1
        ;;
*)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit $?


3、在usb目录下新建adb配置文件

vi adb
并添加如下内容:
#!/bin/sh
#
# Start adb....
#
case "$1" in
  start)
        cd /sys/kernel/config/usb_gadget
        killall adbd
        mkdir -p demo/functions/ffs.adb
        ln -s demo/functions/ffs.adb demo/configs/c.1
        mkdir -p /dev/usb-ffs/adb

        adb_dev="imx6ull-adb-dev"
        if [ ! -f "/usr/data/disableadb"  ];then
                echo "Starting adb ..."
                echo -n $adb_dev > demo/strings/0x409/serialnumber
                cd -
                mount -t functionfs adb /dev/usb-ffs/adb
                adbd &
                sleep 1
        else
                echo "Not start adb"
                echo -n $adb_dev > demo/strings/0x409/serialnumber
                cd -
        fi
        ;;
  stop)
        killall adbd
        sleep 1
        umount /dev/usb-ffs/adb
        rm /sys/kernel/config/usb_gadget/ -rf
        rm /sys/kernel/config/usb_gadget/ -rf
        umount /sys/kernel/config
        ;;
  restart|reload)
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit $?

二、配置linux kernel

1、linux 内核usb gadget功能配置

进入kernel目录下,执行命令:

make menuconfig

 
 
  • 1

配置如下图所示:
linux开发板增加adb功能

三、功能使用示例

1、编译烧写

将之前配置后的buildroot和kernel进行重新编译,进入Buildroot执行编译命令,并烧写新生成的emmc.img。

2、使用adb在pc端登录开发板

在pc执行命令:

adb shell

 
 
  • 1

登录效果如下图所示:
linux开发板增加adb功能

2、使用adb传输文件到开发板

执行命令:

adb push filename /

 
 
  • 1

通过上述命令可以将名为filename的文件传输到开发板的根目录下,注意使用adb传输文件一次只能传输一个文件。

上一篇:【深度学习pytorch】卷积神经网络


下一篇:【Git】windows平台使用git(已存在远程仓库,此文只是搭建环境,并把仓库克隆至本地即可)