编译环境:ubuntu 18.0.4的PC机

一、安装编译依赖库

sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler \

gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools \

linaro-image-tools gcc-4.8-multilib-arm-linux-gnueabihf gcc-arm-linux-gnueabihf libssl-dev \

gcc-aarch64-linux-gnu g+conf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make \

binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget \

libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client \

subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev texinfo \

liblz4-tool genext2fs lib32stdc++6

二、下载gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu

wget http://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

三、下载rk339pro内核源码

git clone https://github.com/rockchip-toybrick/kernel

四、修改内核源文件

修改make.sh(注意改成gcc-linaro的路径)

#!/bin/bash

VERSION="2.0"

JOB=`sed -n "N;/processor/p" /proc/cpuinfo|wc -l`

DTB=toybrick-$2

TKCC=/data/software/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-

function help()

{

echo "Usage: ./make.sh os board"

echo

echo "Parameter:"

echo "1) os: should be android or linux"

echo "2) board:"

echo " - prod: TB-RK3399ProD"

echo " - prop: TB-RK3399ProP"

echo " - prox: TB-RK3399ProX"

echo " - 96ai: TB-96AI"

echo

echo "e.g. ./make.sh android prod"

echo " ./make.sh android prop"

echo " ./make.sh android 96ai"

echo " ./make.sh android prox"

echo " ./make.sh linux prod"

echo " ./make.sh linux prop"

echo " ./make.sh linux 96ai"

echo " ./make.sh linux prox"

}

function make_extlinux_conf()

{

echo "label rockchip-kernel-4.4" > boot_linux/extlinux/extlinux.conf

echo " kernel /extlinux/Image" >> boot_linux/extlinux/extlinux.conf

echo " fdt /extlinux/toybrick.dtb" >> boot_linux/extlinux/extlinux.conf

echo " append earlycon=uart8250,mmio32,0xff1a0000 initrd=/initramfs-toybrick-${VERSION}.img root=PARTUUID=614e0000-0000-4b53-8000-1d28000054a9 rw rootwait rootfstype=ext4" >> boot_linux/extlinux/extlinux.conf

}

if [ $# -lt 2 ];then

help

exit 1

fi

case $1 in

android)

make rockchip_defconfig

make ARCH=arm64 rk3399pro-${DTB}-android.img -j${JOB}

;;

linux)

rm -rf boot_linux

mkdir -p boot_linux/extlinux

make rockchip_linux_defconfig

case $2 in

prod)

DTB=rk3399pro-toybrick-prod-linux

make ARCH=arm64 ${DTB}-edp.img CROSS_COMPILE=${TKCC} -j${JOB}

make ARCH=arm64 ${DTB}-mipi.img CROSS_COMPILE=${TKCC} -j${JOB}

cp -f arch/arm64/boot/dts/rockchip/${DTB}-edp.dtb boot_linux/extlinux/toybrick-edp.dtb

cp -f arch/arm64/boot/dts/rockchip/${DTB}-mipi.dtb boot_linux/extlinux/toybrick-mipi.dtb

;;

prop)

DTB=rk3399pro-toybrick-prop-linux

;;

96ai)

DTB=rk3399pro-toybrick-96ai-linux

;;

prox)

DTB=rk3399pro-toybrick-prox-linux

make ARCH=arm64 ${DTB}-edp.img -j${JOB}

make ARCH=arm64 ${DTB}-mipi.img -j${JOB}

cp -f arch/arm64/boot/dts/rockchip/${DTB}-edp.dtb boot_linux/extlinux/toybrick-edp.dtb

cp -f arch/arm64/boot/dts/rockchip/${DTB}-mipi.dtb boot_linux/extlinux/toybrick-mipi.dtb

;;

*)

help

exit 1

;;

esac

make ARCH=arm64 ${DTB}.img CROSS_COMPILE=${TKCC} -j${JOB}

cp -f arch/arm64/boot/dts/rockchip/${DTB}.dtb boot_linux/extlinux/toybrick.dtb

cp -f arch/arm64/boot/dts/rockchip/${DTB}.dtb boot_linux/extlinux/toybrick-default.dtb

cp -f arch/arm64/boot/Image boot_linux/extlinux/

make_extlinux_conf

cp -f initramfs-toybrick-${VERSION}.img boot_linux/

cp -f rescue.sh boot_linux/

if [ "`uname -i`" == "aarch64" ]; then

echo y | mke2fs -b 4096 -d boot_linux -i 8192 -t ext2 boot_linux.img $((64 * 1024 * 1024 / 4096))

else

genext2fs -b 32768 -B $((64 * 1024 * 1024 / 32768)) -d boot_linux -i 8192 -U boot_linux.img

fi

;;

*)

help

exit 1

;;

esac

exit 0

Add VID add PID

File: [KERNEL]/drivers/usb/serial/option.c

static const struct option_blacklist_info longssung_u9300_blacklist = {

.reserved = BIT(4),

};

*/

/********************************************************************/

static const struct usb_device_id option_ids[] = {

//+add by airm2m for Air72x

{ USB_DEVICE(0x1286, 0x4e3d) },

//-add by airm2m for Air72x

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_QUAD_LIGHT) },

{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_NDIS) },

五、编译

初次编译大约5分钟左右

./make.sh linux prod

编译完成后根目录会有内核镜像:boot_linux.img

六、下载内核

使用官方工具 AndroidTool_Release_v2.64,将上一步编译好的内核下载至rk3399pro(可以只下载boot_linux.img)

image.png

7、网络参数设置

一切编译好之后,将air720D插入rk3399pro的mini pcie口并且把sim卡插入(注意别把sim卡插反了)

启动后查看设备

ls /dev/ttyUSB*

设置网络参数:

设置网卡1 内网ip /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)

# Include files from /etc/network/interfaces.d:

source-directory /etc/network/interfaces.d

auto lo

#开机自动连接网络

auto eth0

iface lo inet loopback

allow-hotplug eth0

#static表示使用固定ip,dhcp表述使用动态ip

iface eth0 inet static

#设置ip地址

address 192.168.1.8

netmask 255.255.255.0

gateway 192.168.1.1

dns-nameservers 114.114.114.114 8.8.8.8

此时查看ifconfig ,如果没有出现 rndis_host 1-1:1.0 eth1 中的 eth1 ,则发送ifconfig -a ,此时发现有eth1 但是 没有ip 地址,发送 udhcpc -i eth1 出现地址后,即可使用此网卡进行上网

#下载

sudo apt install udhcpc

#执行

udhcpc -i eth1

出现地址后,即可使用此网卡进行上网

八、通讯air720获取iccid和imei

#可用minicom工具

sudo apt install minicom

#打开串口

sudo minicom -D /dev/ttyUSB1

九、参考:

libusb 串口 android,rk3399pro通过修改内核编译支持luat air720上网及串口通讯相关推荐

  1. 树莓派镜像备份/内核编译和更换/EC200U上网

    树莓派镜像备份/内核编译和更换/EC200U上网 操作涉及树莓派linux内核替换,由于我的树莓板子里跑了ROS,以免环境破坏,所以先进行镜像备份. 备份本机树莓派img 工具:win32diskim ...

  2. 编译android 一加,手机内核编译教程(一加6安卓9为例实战)

    前人栽树后人乘凉- 1.同步代码啦 git clone https://github.com/flar2/OnePlus6.git -b ElementalX-3.00 2.交叉编译工具链下载 解压到 ...

  3. 【移植Linux 3.4.2内核之四】修改内核代码支持YAFFS文件系统

    上一篇文章,我们从0制作jffs2文件系统,因为我们的内核本身就支持iffs2文件系统,但是它不支持yaffs文件系统.今天我们就来修改内核代码,让内核支持yaffs文件系统的格式. 1.首先我们获取 ...

  4. android 相机功能修改,Android11不再支持更改默认相机程序,再也不能用美颜相机拍照了...

    据悉,最细Android11系统将不再支持更改默认相机程序,原因是以保护隐私为由,据悉更新了安卓11之后你就再也不能用各种美颜相机拍照,只能使用默认相机拍照了,具体情况如何快和Xda小编一起看看吧. ...

  5. linux 内核 ntfs,Linux大脑 内核 内核编译(NTFS)

    Linux大脑 "内核" 关于它 什么是内核 kernel(内核)是操作系统的核心,相当于人的大脑,掌控所有的硬件设备的控制权,也就是希望计算机帮你完成各项工作,那都需要通过内核的 ...

  6. Android Linux内核编译调试

    对于在Windows上写代码写习惯的人,调试是必不可少的手段,但是转到Android以后,发现调试手段异常简陋,跟Windows简直不是一个级别,特别是Android的内核调试,网上资料也相对较少,不 ...

  7. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...

  8. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...

  9. Android逆向之旅---应用的反调试方案解析(附加修改IDA调试端口和修改内核信息)

    一.前言 在前一篇文章中详细介绍了 Android现阶段可以采用的几种反调试方案策略,我们在破解逆向应用的时候,一般现在第一步都回去解决反调试,不然后续步骤无法进行,当然如果你是静态分析的话获取就没必 ...

  10. android内核编译教程,Android内核开发:系统编译输出的镜像文件

    主要介绍一下源码编译输出的几个重要的镜像文件,这里把bootloader源码和Linux内核源码的编译输出也算在其中,因为毕竟Android系统缺少了这两个部分在设备上也是跑不起来的. 1. MLO, ...

最新文章

  1. 为了探究不同光照处理_浅谈中考物理实验探究易错题
  2. 具有FastUtil的精简Java集合
  3. 玩转oracle 11g(39):oracle11g密码过期后的解决方法
  4. spring用的很开心的标签(随时增加)
  5. elasticsearch scroll 一页最大数据量_elasticsearch 百亿级数据检索案例与原理
  6. 《大数据》再获新荣誉——“综合性人文社会科学”学科最受欢迎期刊
  7. matlab 三维点 边界曲面,不用matlab如何从散点数据绘制极坐标三维曲面图?
  8. java编程贪心算法背包问题,贪心算法----部分背包问题(java实现)
  9. 13001.udp广播接收程序(python)
  10. Spring/Spring MVC-面试题
  11. java怎样控制迭代周期_如何在Java中迭代日期范围?
  12. 全网首发:怎样制作CDKEY(7)-新思路
  13. linux 占用缓存前10_Linux查看内存使用情况应该使用什么命令
  14. python_PDF合成软件_ZHOU125disorder_
  15. 网络营销练习题(黑大电商专业kaoti)
  16. wifi各协议最高速率
  17. 服务器运行cad慢,cad启动很慢的三种解决方法
  18. 【2013】【论文笔记】利用graphene产生THz——
  19. thinkpad选择启动项_联系ThinkPad笔记本怎么设置第一启动项
  20. 700 boost yeezy_公司级Adidas Yeezy Boost 700上脚测评

热门文章

  1. 01.第一章 初等概率论
  2. dsp的ad标志位是什么_DSP简简单单学习之AD采样
  3. 内卷到底是什么意思?
  4. 基于web的大数据可视化平台
  5. 让机器人告别乱碰乱撞,激光导航让扫地机“睁开双眼”
  6. 信息 | 美国留学之计算机专业【转】
  7. ICMP协议的作用是什么?
  8. 什么是超大附件?邮箱的超大附件怎么打开?哪个邮箱发送附件大?
  9. 模仿全能扫描王实现文档和证件扫描
  10. CTF压缩包隐写类(zip、RAR、zip伪加密)