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.-2017.02-x86_64_aarch64-linux-gnu.tar.xz ~/FriendlyARM/toolchain/
$ cd ~/FriendlyARM/toolchain
$ tar -xf gcc-linaro-6.3.-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 

开始编译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= seek=
$ dd if=u-boot.itb of=/dev/sdX bs= seek=

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

(3)编译kernel:

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

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

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

$ 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这款开源硬件,以及简单介绍了开发这个小玩具之前所要搭建的一些开发环境。

NanoPi NEO Plus2开发环境搭建的更多相关文章

  1. 基于全志H3芯片的ARM开发环境搭建

    基于全志H3芯片的ARM开发环境搭建 最近买了个友善之臂的NanoPi M1板子,又在网上申请了个NanoPi NEO板子,这两个都是基于全志H3芯片的Crotex-A7四核ARM开发板,两个板子可以 ...

  2. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  3. IntelliJ IDEA安装及jsp开发环境搭建

    一.前言 现在.net国内市场不怎么好,公司整个.net组技术转型,就个人来说还是更喜欢.net,毕竟不是什么公司都像微软一样财大气粗开发出VS这样的宇宙级IDE供开发者使用,双击sln即可打开项目, ...

  4. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  5. node.js之开发环境搭建

    一.安装linux系统 (已安装linux可跳此步骤) 虚拟机推荐选择:VirtualBox 或者 Vmware (专业版永久激活码:5A02H-AU243-TZJ49-GTC7K-3C61N) 我这 ...

  6. TODO:小程序开发环境搭建

    TODO:小程序开发环境搭建 1.第一步当然是要先注册小程序了 2.登录到小程序 a)完善小程序信息,如名称,图标,描述 3.绑定开发者 4.获取AppID,并设置服务器信息 5.下载并安装开发者工具 ...

  7. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  8. Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建

    目前,微软针对Windows IoT计划支持的硬件包括树莓派2,Minnow Board MAX 和Galileo (Gen 1和Gen 2).其中,Galileo (Gen 1和Gen 2)运行的是 ...

  9. Eclipse swt开发环境搭建

    原料: eclipse swt.下载链接为: Eclipse 4.6.2 Release Build: 4.6.2 配置说明: Developing SWT applications using Ec ...

随机推荐

  1. SpringMVC数组参数

    前端 var moduleids = moduleArr.join(','); //一定要切换成,分割的字符串传到后台 后台 @RequestParam List<String> modu ...

  2. spark源码解析--Shuffle输出追踪者--MapOutputTracker

    Shuffle输出追踪者--MapOutputTracker 这个组件作为shuffle的一个辅助组件,在整个shuffle模块中具有很重要的作用.我们在前面一系列的分析中,或多或少都会提到这个组件, ...

  3. php 读取excel 时间列

    用PHP做一个导入excel功能,发现读取excel时间列的时候总是数据不对,去网上查找了这个函数,转换了一下就好了,真尼玛迷茫了,什么情况,先记录一下,以后再研究吧. 函数如下: function ...

  4. Alpha4

    一.站立式会议照片 二.工作进展 (1) 昨天已完成的工作 a. 实现用户登录时获取用户信息功能 b. 实现个人目标列表,允许用户在个人目标界面浏览已设置的目标 c. 继续实现目标广场列表 (2)今天 ...

  5. HTTP的发展历史和各个版本差别

    HTTP前世今生 1989年,蒂姆·伯纳斯-李发表论文确立了三项关键技术: URI: 统一资源标志符,作为互联网上资源的唯一身份 HTML: 超文本标记语言,描述超文本文档 HTTP: 超文本传输协议 ...

  6. python中for循环里去修改列表注意的事项

    你的微信好友当中有 5 个推销的,他们存在一个列表 # black_list=['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机'] # 当中, 请把这 5 个人分别从 black_l ...

  7. nginx设置开机自启

    环境:centos7 nginx1.16.1 方法一:(适用于centos7以上版本) 使用systemctl工具 方法二:(使用多种linux) 使用nginx官方的脚本,设置开机自启

  8. 显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?

    在使用深度学习框架的过程中一定会经常碰到这些东西,虽然anaconda有时会帮助我们自动地解决这些设置,但是有些特殊的库却还是需要我们手动配置环境,但是我对标题上的这些名词其实并不十分清楚,所以老是被 ...

  9. 201671010450-姚玉婷-实验十四 团队项目评审&课程学习总结

    项目 内容 所属科目 软件工程http://www.cnblogs.com/nwnu-daizh 作业要求 https://www.cnblogs.com/nwnu-daizh/p/11093584. ...

  10. adb命令操作蓝牙

    打开和关闭蓝牙BT adb root adb shell svc bluetooth enable adb shell svc bluetooth disable UI层 查询:adb shell s ...