NanoPi K1 Plus/zh

From FriendlyELEC WiKi
Revision as of 10:05, 20 March 2018 by Kangjing (Talk | contribs) (更新日志)

Jump to: navigation, search

English

1 介绍

NanoPi K1 Plus1.jpg
NanoPi K1 Plus2.jpg
NanoPi K1 Plus3.jpg
  • NanoPi K1 Plus采用了采用全志64位四核Cortex™-A53处理器H5,包含64和32bit两种运行模式,集成了高性能NEON多媒体处理引擎,并内置六核Mail450 GPU,支持众多视频格式,具备超强的多格式高清视频硬件编码器/解码解码能力。
  • NanoPi K1 Plus配备2GB DDR3内存,板载WiFi模块、DVP摄像头、带有千兆以太网、USB、HDMI、红外遥控、3.5mm耳机接口、I2S等接口,支持TF卡启动运行系统,并可扩展eMMC模块。
  • NanoPi K1 Plus尺寸与树莓派3相同,40Pin GPIO接口与之兼容,可搭配树莓派外壳使用。
  • 可支持运行Ubuntu Core,Armbian等嵌入式操作系统。

2 资源特性

  • CPU: Allwinner H5, Quad-core 64-bit high-performance Cortex™-A53
  • GPU: Hexa-core Mali450
  • DDR3 RAM: 2GB
  • 以太网: 10/100/1000M 以太网口, 采用RTL8211E网络传输芯片
  • Wireless:802.11 b/g/n 板载PCB天线
  • 红外:板载红外接收模块
  • 音频:3.5mm耳机座/Via HDMI
  • Mic:板载咪头
  • eMMC: 板载eMMC模块接口
  • I2S:板载I2S接口(7Pin, 2.54mm排针)
  • MicroSD Slot: MicroSD卡槽一个
  • USB Host: 3 x USB 2.0 Host, 标准A型接口
  • Micro USB: 1 x USB 2.0, 有OTG功能, 可作为电源输入和数据传输
  • HDMI: HDMI 2.0, Type-A型口, 支持4K显示
  • GPIO扩展接口: 40 Pin,2.54mm排针, 包含I2C, ADC, GPIO, UART, PWM, SPDIF, CVBS等
  • 调试串口:4Pin,2.5mm单排针
  • 按键:GPIO按键一个(用户自定义其功能)
  • LED:电源指示灯一个, 系统状态指示灯一个
  • 电源接口:MicroUSB接口
  • PCB Size:56 x 85mm,6层,沉金工艺
  • 供电: DC 5V/2A

3 接口布局和尺寸

3.1 接口布局

NanoPi-K1-Plus接口布局
  • GPIO管脚定义
Pin# Name Linux gpio Pin# Name Linux gpio
1 SYS_3.3V 2 VDD_5V
3 I2C0_SDA / GPIOA12 4 VDD_5V
5 I2C0_SCL / GPIOA11 6 GND
7 GPIOG11 203 8 UART1_TX / GPIOG6 198
9 GND 10 UART1_RX / GPIOG7 199
11 UART2_TX / GPIOA0 0 12 GPIOA6 6
13 UART2_RTS / GPIOA2 2 14 GND
15 UART2_CTS / GPIOA3 3 16 UART1_RTS / GPIOG8 200
17 SYS_3.3V 18 UART1_CTS / GPIOG9 201
19 SPI0_MOSI / GPIOC0 64 20 GND
21 SPI0_MISO / GPIOC1 65 22 UART2_RX / GPIOA1 1
23 SPI0_CLK / GPIOC2 66 24 SPI0_CS / GPIOC3 67
25 GND 26 SPDIF-OUT / GPIOA17 17
27 I2C1_SDA / GPIOA19 / PCM0_CLK / I2S0_BCK 19 28 I2C1_SCL / GPIOA18 / PCM0_SYNC / I2S0_LRCK 18
29 GPIOA20 / PCM0_DOUT / I2S0_SDOUT 20 30 GND
31 GPIOA21 / PCM0_DIN/ I2S0_SDIN 21 32 GPIOA7 7
33 GPIOA8 8 34 GND
35 UART3_CTS / SPI1_MISO / GPIOA16 16 36 UART3_TX / SPI1_CS / GPIOA13 13
37 GPIOA9 9 38 UART3_RTS / SPI1_MOSI / GPIOA15 15
39 GND 40 UART3_RX / SPI1_CLK / GPIOA14 14


  • eMMC接口管脚定义
Pin# Name Pin# Name
1 eMMC_D0 2 eMMC_D1
3 eMMC_D2 4 eMMC_D3
5 eMMC_D4 6 eMMC_D5
7 eMMC_D6 8 eMMC_D7
9 eMMC_DS 10 GND
11 eMMC_CMD 12 eMMC_CLK
13 NC 14 GND
15 NC 16 1.8V OUT
17 eMMC_RST 18 3.3V OUT
19 GPIOY_5 20 GND
  • Debug Port(UART0)
Pin# Name
1 GND
2 VDD_5V
3 UART_TX
4 UART_RX
  • 7Pin I2S接口定义
Pin# Name
1 GND
2 SYS_3.3V
3 I2S0_BCK
4 I2S0_LRCK
5 I2S0_SDOUT
6 I2S0_SDIN
7 I2S_MCLK
说明
  1. SYS_3.3V: 3.3V电源输出
  2. VDD_5V: 5V电源输入/输出。输入范围:4.7~5.6V
  3. 全部信号引脚均为3.3V电平
  4. 更详细的信息请查看原理图:NanoPi_K1_Plus_V1.0_1712_Schematic.pdf

3.2 机械尺寸

NanoPi_K1_Plus_V1.0_1712 Dimensions

详细尺寸:NanoPi_K1_Plus_V1.0_1712_dxf.zip

4 快速入门

4.1 准备工作

启动NanoPi K1 Plus前,请先准备好以下硬件

  • NanoPi K1 Plus主板
  • TF卡: Class10或以上的 8GB SDHC卡
  • 一个MicroUSB接口的外接电源,要求输出为5V/2A
  • 一台支持HDMI输入的显示器或者电视
  • 一套USB键盘鼠标
  • 一台电脑,需要联网,建议使用Ubuntu 16.04 64位系统

4.2 经测试使用的TF卡

制作启动NanoPi K1 Plus的TF卡时,建议Class10或以上的 8GB SDHC卡。以下是经友善之臂测试验证过的高速TF卡:

  • SanDisk闪迪 TF 8G Class10 Micro/SD 高速 TF卡:

SanDisk MicroSD 8G

  • SanDisk闪迪 TF128G 至尊高速MicroSDXC TF 128G Class10 48MB/S:

SanDisk MicroSD 128G

  • 川宇 8G手机内存卡 8GTF卡存储卡 C10高速class10 micro SD卡:

chuanyu MicroSD 8G

4.3 制作带运行系统的SD卡/eMMC模块

4.3.1 快速从SD卡/eMMC模块启动NanoPi K1 Plus

首先访问下载地址下载需要的固件文件:

固件文件列表:
nanopi-k1-plus_friendlycore-xenial_4.x.y_YYYYMMDD.img.zip 基于UbuntuCore构建的FriendlyCore系统固件,使用Linux-4.x内核
nanopi-k1-plus_eflasher_4.x.y_YYYYMMDD.img.zip eflasher系统固件,使用Linux-4.x内核
烧写工具:
win32diskimager.rar Windows平台下的烧写工具,Linux系统可以用dd命令
4.3.1.1 烧写系统到SD卡
  • 将固件和烧写工具分别解压,在Windows下插入SD卡(限8G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
  • 当制作完成 SD 卡后,拔出 SD 卡插入 NanoPi K1 Plus 的 TF 卡槽,上电启动(注意,这里需要 5V/2A 的供电),你可以看到PWR灯常亮以及SATA灯闪烁,这时你已经成功启动 NanoPi K2。
4.3.1.2 烧写系统到eMMC模块
  • 将固件和烧写工具分别解压,在 Windows 下插入 eMMC(需使用MicroSD转eMMC模块适配器),以管理员身份运行 win32diskimager 工具, 在 win32diskimager 工具的界面上, 选择你的 SD 卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。

EMMC module 1.jpgEMMC module 4.jpg

  • 当烧写完成后,弹出MicroSD转eMMC模块适配器,将 eMMC 模块插入 NanoPi K1 Plus 的 eMMC 插槽,上电启动(注意,这里需要 5V/2A 的供电),你可以看到PWR灯常亮以及SATA灯闪烁,这时你已经成功启动 NanoPi K1 Plus。

400px

  • 当NanoPi K1 Plus同时接了 SD 卡和 eMMC 模块时,系统总是会从 SD 卡启动。只有不接 SD 卡时,才能从 eMMC 模块启动系统。

4.3.2 在Linux Desktop下通过脚本制作

  • 1) 将microSD/带eMMC的MicroSD转eMMC模块适配器插入Ubuntu的电脑,用以下命令查看你的SD卡设备名
dmesg | tail

当dmesg输出类拟信息 sdc: sdc1 sdc2时,则表示SD卡对应的设备名为 /dev/sdc,也通过用命令cat /proc/partitions来查看。

  • 2) 下载Linux下的制作脚本
git clone https://github.com/friendlyarm/sd-fuse_amlogic.git
cd sd-fuse_amlogic

4.3.3 NanoPi K2 扩展TF/eMMC模块分区

  • Android扩展分区,要在pc上执行下列操作, Ubuntu系统会自动扩展,无需进行此操作:
sudo umount /dev/sdx?
sudo parted /dev/sdx unit % resizepart 4 100 unit MB print
sudo resize2fs -f /dev/sdx4

(注:/dev/sdx请替换为实际的SD卡/eMMC模块设备文件名)

4.3.4 关于HDMI分辨率

对于HDMI的显示模式,Android则是会通过EDID获得HDMI设备如电视机所支持的显示模式,然后自动选择一个合适的分辨率。

4.4 运行Ubuntu core系统

4.4.1 Ubuntu core系统介绍

Ubuntu Core with Qt-Embedded,是一个没有X-windows环境,使用Qt-Embedded作为图形界面的轻量级Ubuntu系统,系统特性如下:

  • 支持HDMI输出
  • 支持WiFi连接
  • 支持千兆以太网
  • 支持蓝牙传输
  • 内建Qt-Embedded

得益于A53架构处理器强大的性能,2G内存以及千兆以太网,NanoPi-K2搭配Ubuntu系统非常适合作为IoT服务端,或DIY各类轻量级的服务器,如Nas等。

4.4.2 Ubuntu core系统的使用

将烧写了Ubuntu系统的SD卡插入NanoPi-K2并上电,在电视或者串口终端上均能看到如下所示的终端画面:
K2-ubuntu

要显示Qt-Embedded界面,在命令行执行:

$ sudo /opt/QtE-Demo/run.sh

在电视屏幕上可以看到如下画面,这是一个开源的Qt Demo程序:
K2-QtE

关于Ubuntu Core的详细使用指南,请查看此链接: Ubuntu Core with Qt-Embedded

5 如何编译系统

5.1 安装交叉编译器

  • 安装ARMv7交叉编译器

编译U-Boot需要ARMv7的交叉编译器,首先下载并解压编译器:

git clone https://github.com/friendlyarm/prebuilts.git
sudo mkdir -p /opt/FriendlyARM/toolchain
sudo tar xf prebuilts/gcc-x64/arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/

然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:

export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
export GCC_COLORS=auto

执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:

. ~/.bashrc

这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:

arm-linux-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gcc
COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/4.9.3/libexec/gcc/arm-cortexa9-linux-gnueabihf/4.9.3/lto-wrapper
Target: arm-cortexa9-linux-gnueabihf
Configured with: /work/toolchain/build/src/gcc-4.9.3/configure --build=x86_64-build_pc-linux-gnu
--host=x86_64-build_pc-linux-gnu --target=arm-cortexa9-linux-gnueabihf --prefix=/opt/FriendlyARM/toolchain/4.9.3
--with-sysroot=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-languages=c,c++
--with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3 --with-float=hard
...
Thread model: posix
gcc version 4.9.3 (ctng-1.21.0-229g-FA)
  • 安装AArch64交叉编译器

编译U-Boot和Linux需要AArch64的交叉编译器,可使用linaro toolchain:

wget http://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/aarch64-linux-gnu/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz
tar xf gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu.tar.xz
export PATH=~/gcc-linaro-4.9.4-2017.01-x86_64_aarch64-linux-gnu/bin:$PATH

可以修改 ~/.bashrc 将编译器的路径加入到PATH中。

5.2 编译U-Boot

下载U-Boot源代码并编译,注意分支是nanopi-k2-v2015.01:

git clone https://github.com/friendlyarm/u-boot.git uboot
cd uboot
git checkout nanopi-k2-v2015.01
make nanopi-k2_defconfig
make

编译成功结束后您将获得fip/gxb/u-boot.bin,可使用以下命令直接更新SD卡:

sudo ./fusing.sh /dev/sdc

使用以下命令直接更新SD卡

sudo ./fusing.sh /dev/sdc emmc

您也可以通过fastboot来更新正在运行的NanoPi K2板上SD的U-Boot,方法如下:
1) 在电脑上先用命令 sudo apt-get install android-tools-fastboot 安装 fastboot 工具;
2) 用串口配件连接NanoPi K2和电脑,在上电启动的2秒内,在串口终端上按下回车,进入 u-boot 的命令行模式;
3) 在u-boot 命令行模式下输入命令 fastboot usb 回车,进入 fastboot 模式;
4) 用microUSB线连接NanoPi K2和电脑,在电脑上输入以下命令烧写u-boot.bin:

fastboot flash bootloader fip/gxb/u-boot.bin

暂时无法通过fastboot更新eMMC模块上的U-boot。

5.3 编译Linux kernel

5.3.1 编译内核

  • 下载内核源代码
git clone https://github.com/friendlyarm/linux.git
cd linux
git checkout nanopi-k2-3.14.y

NanoPi K2内核所属的分支是nanopi-k2-3.14.y,在开始编译前先切换分支。

  • 编译Android内核
touch .scmversion
make ARCH=arm64 nanopi-k2_android_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image nanopi-k2.dtb

编译成功结束后,即会生成新的 arch/arm64/boot/dts/amlogic/nanopi-k2.dtb 和 arch/arm64/boot/Image ,用于替换掉SD卡boot分区下对应的文件。

  • 编译Ubuntu内核
touch .scmversion
make ARCH=arm64 nanopi-k2_ubuntu_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image nanopi-k2.dtb

5.3.2 如何使用新编译的内核

  • 更新SD卡上的内核

如果您是使用SD卡启动Android,则在PC上复制为Android编译的Image 和nanopi-k2.dtb 到SD卡的boot分区(即分区1,设备是/dev/sdX1)即可。

  • 通过adb直接更新

如果想直接更新正在运行中的板子,可通过adb将新的文件push到板子上,然后reboot即可,具体如下:

adb shell mount -t ext4 /dev/block/mmcblk0p1 /storage/sdcard1/
adb push arch/arm64/boot/Image /storage/sdcard1/
adb push arch/arm64/boot/dts/amlogic/nanopi-k2.dtb /storage/sdcard1/
adb reboot
  • 更新Android中预先编译的文件

如果想要生成新的Android boot.img,则需要使用新生成的文件替换Android源代码目录device/friendly-arm/nanopi-k2-kernel 下对应的文件,然后编译Android即可。

6 更新日志

6.1 2018-03-20

首次创建并发布。