• NanoPi NEO Plus2开发环境搭建


    1、前言

    NanoPi NEO Plus2是友善电子推出的一款非常小巧精致的开源硬件,该开源硬件的CPU是基于Allwinner公司的64位四核ARM Cortex-A53处理器H5,并且内置了六核Mail450 GPU,该开源硬件集成了1GB DDR3内存,标配8GB eMMC高速闪存,板载了WiFi蓝牙模块和以太网接口等,支持从Mico SD卡启动运行系统。

    对于该开源硬件的更多详细信息可参考下面链接:

    http://www.arm9.net/nanopi-neo-plus2.asp

    接下来欣赏一下板子的布局图和接口示意图:

     

    接下来是引脚接口图:

     

    更多关于NanoPi NEO Plus2开源硬件的资料,可去官方Wiki页面查看。

    2、Linux系统烧写

    先准备好一张高速的TF卡以及一个读卡器,还有给开发板供电的电源适配器,电源需要5V/2A输出,接下来介绍如何将官方提供的固件烧写到TF卡里面,有两种方法如下:

    (1)Windows下使用烧写工具

    在Windows下可以使用烧写工具Win32 Disk Imager软件进行烧写,先准备好友善官方提供好的固件,对其解压,例如固件:

    nanopi-neo-plus2_sd_friendlycore-xenial_4.14_arm64_20190918.img.zip

    上面给出的文件是基于Ubuntu Core构建的系统固件,固件是基于Linux-4.14内核,对其固件解压后,打开软件进行烧写:

    在软件上面选择好TF卡的盘符,然后选择要烧写的固件,点击Write按钮进行烧写:

     

    烧写成功后如下所示:

     

     (2)Linux系统下使用dd命令

    首先在Linux终端下解压镜像:

    $ unzip nanopi-neo-plus2_sd_friendlycore-xenial_4.14_arm64_20190918.img.zip

    将TF卡插入到Linux系统上,使用df命令查看哪些设备已经挂载:

    $ df -h

     

    由此可见插入的TF卡设备名称为/dev/sdc1,只有一个分区,为了防止在写入镜像时,有其它读取或写入,需要将挂载的设备进行卸载:

    $ umount /dev/sdc1

    然后使用dd命令将镜像进行写入:

    $ sudo dd bs=4M if=nanopi-neo-plus2_sd_friendlycore-xenial_4.14_arm64_20190918.img 
    of=/dev/sdc

    在上面的命令中bs代表一次写入多大的块,bs是blocksize的缩写,if参数后面是镜像的路径,of参数后面为写入的设备。

    烧写完成后,将产生boot分区和根文件系统分区,分区内容如下:

     

    最后,将TF卡插入到NanoPi NEO Plus2的Mico SD卡接口,使用USB转串口工具将开发板的Debug串口和PC的USB接口进行连接,打开串口终端软件,将开发板进行上电登入到系统。

    登入界面如下所示:

     

    成功登入系统后,便可以进行这个小玩具的开发了。

     

    3、开发环境搭建

    (1)安装交叉编译工具链

    先在官方提供的地址内下载交叉编译工具链,然后解压编译器:

    $ mkdir ~/FriendlyARM/toolchain -p
    $ mv gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz ~/FriendlyARM/toolchain/
    $ cd ~/FriendlyARM/toolchain
    $ tar -xf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz

    将交叉编译工具链的路径添加到用户的环境变量中:

    $ vim ~/.bashrc

    在文件最后添加如下:

     

    使用下面的命令让其环境变量马上生效:

    $ source ~/.bashrc

    最后,查看交叉编译工具链版本,检查是否安装成功:

    $ aarch64-linux-gnu-gcc -v

    输出结果如下,说明安装成功:

     

    (2)编译u-boot

    在上面中,已经安装好了交叉编译工具链,接下来简单介绍如何进行u-boot编译:

    先安装一些软件依赖:

    $ sudo apt-get install swig python-dev python3-dev device-tree-compiler

    使用git对u-boot源码下载,并切换到对应的分支:

    $ git clone git@github.com:Cqlismy/u-boot.git -b sunxi-v2017.x --depth 1

    开始编译u-boot源码:

    $ cd u-boot/
    $ make nanopi_h5_defconfig CROSS_COMPILE=aarch64-linux-gnu-
    $ make CROSS_COMPILE=aarch64-linux-gnu-

    编译完成后输出结果如下:

     

    在u-boot源码的spl目录将生成需要的文件sunxi-spl.bin,在源码根目录生成u-boot.itb文件,使用dd命令可更新TF卡上的u-boot,如下:

    将TF卡插入到Linux系统后,执行下面命令:

    $ cd u-boot
    $ dd if=spl/sunxi-spl.bin of=/dev/sdX bs=1024 seek=8
    $ dd if=u-boot.itb of=/dev/sdX bs=1024 seek=40

    对于/dev/sdX为TF卡上的启动分区。

    (3)编译kernel:

    首先下载Linux内核源码,并切换到对应的分支:

    $ git clone git@github.com:Cqlismy/linux.git -b sunxi-4.14.y --depth 1

    接下来开始编译内核源码:

    $ cd linux/
    $ touch .scmversion
    $ make sunxi_arm64_defconfig ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
    $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

    编译成功后如下所示:

     

    将会在源码的arch/arm64/boot目录下生成需要的Image镜像文件,在arch/arm64/boot/dts/allwinner目录下生成dtb文件。

    假设TF卡的boot分区挂载在/media/SD/boot,可以使用下面命令更新镜像文件和设备树:

    $ cd linux
    $ cp arch/arm64/boot/Image /media/SD/boot
    $ cp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb /media/SD/boot

    另外,假设NanoPi NEO Plus2已经通过WiFi或者以太网接口接入网络,可以在Linux宿主机中通过scp命令进行设备树二进制文件和内核镜像更新:

    $ cd linux
    $ scp arch/arm64/boot/Image root@192.168.137.162:/boot
    $ scp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb root@192.168.137.162:/boot

     需要注意的是,在使用scp命令进行文件传输时,将会提示要求输入NanoPi开发板root用户的密码,输入fa,然后回车即可。 

    如果想编译和更新驱动模块的话,可以使用下面命令:

    $ cd linux
    $ make modules ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

    当TF卡的rootfs分区挂载在/media/SD/rootfs时,使用下面命令更新rootfs的驱动模块:

    $ make modules_install INSTALL_MOD_PATH=/media/SD/rootfs ARCH=arm64 
    CROSS_COMPILE=aarch64-linux-gnu-

    4、小节

    本文主要简单地介绍了NanoPi NEO Plus2这款开源硬件,以及简单介绍了开发这个小玩具之前所要搭建的一些开发环境。

  • 相关阅读:
    TApplication元件的OnIdle事件
    Query1AfterScroll 与 DataSource1DataChange 区别
    禁用表外键
    oracle al32utf8 字符长度
    Oracle表空间等操作
    delphi组件说明
    delhpi控件替换
    程序提示Google Internet Authority G2 证书不可用
    PostMessage用法
    OnKeyPress OnKeyDown区别
  • 原文地址:https://www.cnblogs.com/Cqlismy/p/11600837.html
Copyright © 2020-2023  润新知