美文网首页
rk3399pro通过修改内核&编译支持luat air720上

rk3399pro通过修改内核&编译支持luat air720上

作者: 奋斗_登 | 来源:发表于2020-05-08 18:10 被阅读0次

编译环境: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

九、参考:

https://ask.openluat.com/article/79
https://ask.openluat.com/article/37
https://blog.csdn.net/kkae8643150/article/details/102489178
http://t.rock-chips.com/wiki.php?mod=view&id=26
https://ask.openluat.com/article/906

相关文章

  • rk3399pro通过修改内核&编译支持luat air720上

    编译环境:ubuntu 18.0.4的PC机 一、安装编译依赖库 二、下载gcc-linaro-6.3.1-201...

  • 16-Openwrt patch生成

    在开源模块的基础上修改代码,更多的时候是通过打补丁的方式进行修改。 1.内核patch生成 1.1 编译内核模块命...

  • 内核模块学习

    linux内核的框架很大,组件很多,如果把所有东西全编译进内核,内核会很大,如果我们要进行修改时,还要重新编译内核...

  • S3C2440移植linux3.4.2内核之内核裁剪

    上一节S3C2440移植linux3.4.2内核之支持YAFFS文件系统我们修改了内核支持了yaffs2文件系统,...

  • 内存文件系统

    ramdisk Linux内核2.0/2.2就已经支持,为了能够使用Ramdisk,我们在编译内核时须将block...

  • CentOS7编译自己的内核模块

      部门已经有固定下来的内核编译方式。迁出完整代码后,加载环境变量文件,直接make即可重新编译内核。修改了某个模...

  • Android4.0.3 的编译 (iTop4412)

    如果想要支持wifi,在编译好内核之后,还需要执行编译模块的命令 “make modules,再执行编译后面 An...

  • Linux内核移植

    移植目标 1.获取Linux内核源码; 2修改内核,使内核启动能正确挂载根文件系统rootfs(即选择内核支持的文...

  • Vagrant启动自己编译的内核

    上一篇为Guest Ubuntu编译内核我们为Vagrant的Guest Ubuntu编译了内核,现在我们要在Va...

  • Pixel修改kernel内核调试

    下载内核源码 准备环境需要Android源码下的交叉编译器,在Android系统源码下 修改系统调用修改sysca...

网友评论

      本文标题:rk3399pro通过修改内核&编译支持luat air720上

      本文链接:https://www.haomeiwen.com/subject/nwcqnhtx.html