Difference between revisions of "NanoPi K2"

From FriendlyELEC WiKi
Jump to: navigation, search
Line 1: Line 1:
 
[[NanoPi K2/zh|查看中文]]
 
[[NanoPi K2/zh|查看中文]]
 +
 +
==介绍==
 +
[[File:NanoPi K2-1.jpg|thumb|300px]]
 +
[[File:NanoPi K2-2.jpg|thumb|300px]]
 +
[[File:NanoPi K2-3.jpg|thumb|300px]]
 +
* NanoPi K2采用了Amlogic公司64位四核A53主控S905, 内置五核Mali450 GPU, 最高运行主频可达2GHz,支持众多视频格式,具备超强的视频解码能力。
 +
* NanoPi K2配备2GB DDR3内存,集成WiFi蓝牙,带有千兆以太网,USB,HDMI,红外遥控等接口,支持TF卡启动运行系统,并可扩展eMMC模块,尺寸与树莓派3相同,接口与之兼容,可运行Android, Ubuntu, 等嵌入式操作系统。
 +
* 需要特别说明的是,NanoPi K2支持动态电压调频(DVFS),无需散热装置即可长时间稳定流畅播放高清视频。它非常适合客制化高清播放广告机,网络高清机顶盒等方面的应用,以及创客,爱好者们DIY制作家庭娱乐设备, 多媒体服务器,高速并行计算机等装置。
 +
 +
==资源特性==
 +
* CPU: Amlogic S905, Quad-core ARM Cortex-A53@1.5GHz, DVFS
 +
* GPU: Penta-core ARM Mali™-450
 +
* RAM: 2GB DDR3
 +
* 以太网: 10/100/1000M (RTL8211F)
 +
* Wireless:802.11 b/g/n
 +
* Bluetooth:4.0 dual mode
 +
* 天线: Wi-Fi和蓝牙共用, 板载陶瓷天线, 同时提供IPX接口
 +
* 红外:板载红外接收模块
 +
* 音频:Via HDMI/蓝牙
 +
* eMMC: 板载eMMC模块接口
 +
* I2S:板载I2S接口, 7Pin, 2.54mm排针
 +
* SD: microSD卡槽一个
 +
* USB Host: 4 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单排针
 +
* 按键:电源按键一个
 +
* LED:电源指示灯一个, 系统状态指示灯一个
 +
* 电源接口:DC电源接口, microUSB接口
 +
* PCB Size:56x85mm,6层,沉金工艺
 +
* 供电: DC 5V/2A
 +
 +
==接口布局和尺寸==
 +
===接口布局===
 +
[[File:NanoPi-K2-IF-001.png |thumb|600px|NanoPi-K2接口布局]]
 +
 +
* '''GPIO管脚定义'''
 +
::{| class="wikitable"
 +
|-
 +
|Pin# || Name          ||Pin#  || Name   
 +
|-
 +
|1    || SYS_3.3V  ||2    || VDD_5V
 +
|-
 +
|3    || GPIODV_24/I2C_SDA_A      ||4    || VDD_5V
 +
|-
 +
|5    ||GPIODV_25/I2C_SCK_A      ||6    || GND
 +
|-
 +
|7    || GPIOY_0      ||8    || GPIOY_13/UART_TX_C
 +
|-
 +
|9    || DGND          ||10    || GPIOY_13/UART_RX_C
 +
|-
 +
|11  || GPIOY_1      ||12    || GPIOY_16/PWM_A
 +
|-
 +
|13  || GPIOY_2      ||14    || GND
 +
|-
 +
|15  || GPIOY_3      ||16    || GPIOY_15/PWM_F
 +
|-
 +
|17  || SYS_3.3V ||18    || GPIOY_4
 +
|-
 +
|19  || GPIOY_5    ||20    || GND
 +
|-
 +
|21  || GPIOY_7    ||22    || GPIOY_6
 +
|-
 +
|23  || GPIOY_9    ||24    || GPIOY_8
 +
|-
 +
|25  || DGND          ||26    || GPIOY_10
 +
|-
 +
|27  || GPIODV_26/I2C_SDA_B      ||28    || GPIODV_27/I2C_SCK_B
 +
|-
 +
|29  || GPIOY_11/SPDIF_IN        ||30    || GND
 +
|-
 +
|31  || GPIOAO_5    ||32    || GPIOY_12/SPDIF_OUT
 +
|-
 +
|33  || GPIOH_3      ||34    || GND
 +
|-
 +
|35  || GPIOCLK_1    ||36    || CVBS
 +
|-
 +
|37  || AIN1    ||38    || 1.8V Vref Out
 +
|-
 +
|39  || GND          ||40    || AIN0
 +
|}
 +
 +
* '''eMMC接口管脚定义'''
 +
::{| class="wikitable"
 +
|-
 +
|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)'''
 +
::{| class="wikitable"
 +
|-
 +
|Pin# || Name     
 +
|-
 +
|1    || GND   
 +
|-
 +
|2    || VDD_5V   
 +
|-
 +
|3    || UART_TX_AO_A   
 +
|-
 +
|4    || UART_RX_AO_A
 +
|}
 +
* '''7Pin I2S接口定义'''
 +
::{| class="wikitable"
 +
|-
 +
|Pin# || Name     
 +
|-
 +
|1    || GND   
 +
|-
 +
|2    || SYS_3.3V   
 +
|-
 +
|3    || I2S_SCLK 
 +
|-
 +
|4    || I2S_LRCLK
 +
|-   
 +
|5    || I2S_DATA_OUT
 +
|-
 +
|6    || I2S_DATA_IN
 +
|-
 +
|7    || I2S_MCLK
 +
|}
 +
 +
:'''说明'''
 +
::#SYS_3.3V: 3.3V电源输出
 +
::#VDD_5V: 5V电源输入/输出。输入范围:4.7~5.6V
 +
::#全部信号引脚均为3.3V电平
 +
::#更详细的信息请查看原理图:[http://wiki.friendlyarm.com/wiki/images/d/d1/NanoPi-K2-1701-Schematic.pdf NanoPi-K2-1701-Schematic.pdf]
 +
 +
===机械尺寸===
 +
[[File:NanoPi-K2-1701-Dim.png|frameless|500px|NanoPi K2 Dimensions]]
 +
 +
::详细尺寸:[http://wiki.friendlyarm.com/wiki/images/2/26/NanoPi-K2-1701-dxf.zip NanoPi-K2-1701-dxf.zip]
 +
 +
==快速入门==
 +
===准备工作===
 +
启动NanoPi K2前,请先准备好以下硬件
 +
* NanoPi K2主板
 +
* TF卡: Class10或以上的 8GB SDHC卡
 +
* 一个DC接口的外接电源,要求输出为5V/2A
 +
* 一台支持HDMI输入的显示器或者电视
 +
* 一套USB键盘鼠标
 +
* 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统
 +
 +
===经测试使用的TF卡===
 +
制作启动NanoPi K2的TF卡时,建议Class10或以上的 8GB SDHC卡。以下是经友善之臂测试验证过的高速TF卡:
 +
*SanDisk闪迪 TF 8G Class10 Micro/SD 高速 TF卡:
 +
[[File:SanDisk MicroSD.png|frameless|100px|SanDisk MicroSD 8G]]
 +
*SanDisk闪迪 TF128G 至尊高速MicroSDXC TF 128G Class10 48MB/S:
 +
[[File:SanDisk MicroSD-01.png|frameless|100px|SanDisk MicroSD 128G]]
 +
*川宇 8G手机内存卡 8GTF卡存储卡 C10高速class10 micro SD卡:
 +
[[File:SanDisk MicroSD-02.png|frameless|100px|chuanyu MicroSD 8G]]
 +
 +
===制作一张带运行系统的SD卡===
 +
====快速从SD卡启动NanoPi K2====
 +
首先访问[http://pan.baidu.com/s/1c2MQ1P2 下载地址1]下载需要的固件文件:<br />
 +
* 您需要准备一张4G或以上容量的SDHC卡,该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。
 +
 +
::{| class="wikitable"
 +
|-
 +
|colspan=2|固件文件列表:
 +
|-
 +
|s905-android-sd4g-YYYYMMDD.img.zip    || Android5.1系统固件               
 +
|-
 +
|colspan=2|烧写工具: 
 +
|-
 +
|win32diskimager.rar || Windows平台下的烧写工具,Linux系统可以用dd命令
 +
|-
 +
|}
 +
 +
*将固件和烧写工具分别解压,在Windows下插入SD卡(限8G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
 +
*当制作完成 SD 卡后,拔出 SD 卡插入 NanoPi K2 的 BOOT 卡槽,上电启动(注意,这里需要 5V/2A 的供电),你可以看到绿灯以及蓝灯长亮,这时你已经成功启动 NanoPi K2。<br />
 +
 +
====在Linux Desktop下通过脚本制作====
 +
* 1) 将microSD插入Ubuntu的电脑,用以下命令查看你的SD卡设备名
 +
<syntaxhighlight lang="bash">
 +
dmesg | tail
 +
</syntaxhighlight>
 +
当dmesg输出类拟信息 sdc: sdc1 sdc2时,则表示SD卡对应的设备名为 /dev/sdc,也通过用命令cat /proc/partitions来查看。
 +
 +
*2) 下载Linux下的制作脚本
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/sd-fuse_amlogic.git
 +
cd sd-fuse_amlogic
 +
</syntaxhighlight>
 +
 +
*3) 以下是制作启动Android的SD卡的方法
 +
<syntaxhighlight lang="bash">
 +
su
 +
./fusing.sh /dev/sdx
 +
</syntaxhighlight>
 +
(注:/dev/sdx请替换为实际的SD卡设备文件名) <br />
 +
制作包中未包含Android烧写文件,第一次使用时会提示需要下载,输入Y下载,N或10秒未输入则取消。
 +
 +
====NanoPi K2 扩展TF卡分区====
 +
* Android扩展分区,要在pc上执行下列操作:
 +
<syntaxhighlight lang="bash">
 +
sudo umount /dev/sdx?
 +
sudo parted /dev/sdx unit % resizepart 4 100 unit MB print
 +
sudo resize2fs -f /dev/sdx4
 +
</syntaxhighlight>
 +
(注:/dev/sdx请替换为实际的SD卡设备文件名)
 +
 +
====关于HDMI分辨率====
 +
对于HDMI的显示模式,Android则是会通过EDID获得HDMI设备如电视机所支持的显示模式,然后自动选择一个合适的分辨率。
 +
 +
===运行Android===
 +
* 将制作好SD卡插入NanoPi K2,连接HDMI,最后接电源,NanoPi K2会从SD卡启动。你可以看到板上PWR灯以及蓝灯常亮,这说明系统已经开始启动了,同时电视上也将能看到系统启动的画面。<br />
 +
[[File:NanoPi-K2-4.jpg|frameless|NanoPi K2 Android5.1]]
 +
* 如同所有PC, 正确的关机对NanoPi K2而言很重要,否则可能会损坏安装在MicroSD卡中的系统文件,导致下次无法顺利启动运行,如要关机,直接按PWR按键即可。
 +
 +
==如何编译系统==
 +
 +
===安装交叉编译器===
 +
* 安装ARMv7交叉编译器
 +
编译U-Boot需要ARMv7的交叉编译器,首先下载并解压编译器:
 +
<syntaxhighlight lang="bash">
 +
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/
 +
</syntaxhighlight>
 +
 +
然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:
 +
<syntaxhighlight lang="bash">
 +
export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
 +
export GCC_COLORS=auto
 +
</syntaxhighlight>
 +
 +
执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:
 +
<syntaxhighlight lang="bash">
 +
. ~/.bashrc
 +
</syntaxhighlight>
 +
 +
这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:
 +
<syntaxhighlight lang="bash">
 +
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)
 +
</syntaxhighlight>
 +
 +
* 安装AArch64交叉编译器
 +
编译U-Boot和Linux需要AArch64的交叉编译器,可使用linaro toolchain:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
可以修改 ~/.bashrc 将编译器的路径加入到PATH中。
 +
 +
===编译U-Boot===
 +
下载U-Boot源代码并编译,注意分支是nanopi-k2-v2015.01:
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/uboot.git
 +
cd uboot
 +
git checkout nanopi-k2-v2015.01
 +
make nanopi-k2_defconfig
 +
make
 +
</syntaxhighlight>
 +
 +
编译成功结束后您将获得fip/gxb/u-boot.bin,可使用以下命令直接更新SD卡:
 +
<syntaxhighlight lang="bash">
 +
sudo ./fusing.sh /dev/sdc
 +
</syntaxhighlight>
 +
 +
您也可以通过fastboot来更新正在运行的NanoPi K2板上SD的U-Boot,方法如下:<br />
 +
1) 在电脑上先用命令 sudo apt-get install android-tools-fastboot 安装 fastboot 工具;<br />
 +
2) 用串口配件连接NanoPi K2和电脑,在上电启动的2秒内,在串口终端上按下回车,进入 u-boot 的命令行模式;<br />
 +
3) 在u-boot 命令行模式下输入命令 fastboot usb 回车,进入 fastboot 模式;<br />
 +
4) 用microUSB线连接NanoPi K2和电脑,在电脑上输入以下命令烧写u-boot.bin:<br />
 +
<syntaxhighlight lang="bash">
 +
fastboot flash bootloader fip/gxb/u-boot.bin
 +
</syntaxhighlight>
 +
 +
===编译Linux kernel===
 +
====编译内核====
 +
* 下载内核源代码
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/linux.git
 +
cd linux
 +
git checkout nanopi-k2-3.14.y
 +
</syntaxhighlight>
 +
NanoPi K2内核所属的分支是nanopi-k2-3.14.y,在开始编译前先切换分支。
 +
* 编译Android内核
 +
<syntaxhighlight lang="bash">
 +
make ARCH=arm64 nanopi-k2_defconfig
 +
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image nanopi-k2.dtb
 +
</syntaxhighlight>
 +
编译成功结束后,即会生成新的 arch/arm64/boot/dts/amlogic/nanopi-k2.dtb 和 arch/arm64/boot/Image ,用于替换掉SD卡boot分区下对应的文件。
 +
 +
====如何使用新编译的内核====
 +
* 更新SD卡上的内核
 +
如果您是使用SD卡启动Android,则在PC上复制为Android编译的Image 和nanopi-k2.dtb 到SD卡的boot分区(即分区1,设备是/dev/sdX1)即可。<br />
 +
 +
* 通过adb直接更新
 +
如果想直接更新正在运行中的板子,可通过adb将新的文件push到板子上,然后reboot即可,具体如下:
 +
<syntaxhighlight lang="bash">
 +
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
 +
</syntaxhighlight>
 +
 +
* 更新Android中预先编译的文件
 +
如果想要生成新的Android boot.img,则需要使用新生成的文件替换Android源代码目录device/friendly-arm/nanopi-k2-kernel 下对应的文件,然后编译Android即可。
 +
 +
===编译Android===
 +
* 搭建编译环境
 +
搭建编译Android的环境建议使用64位的Ubuntu 14.04,安装需要的包即可。
 +
<syntaxhighlight lang="bash">
 +
sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zip
 +
sudo apt-get install flex libncurses5-dev zlib1g-dev gawk minicom
 +
</syntaxhighlight>
 +
更多说明可查看 https://source.android.com/source/initializing.html 。
 +
 +
* 下载Android5.1源代码
 +
Android源代码的下载需要使用repo,其安装和使用请查看 https://source.android.com/source/downloading.html 。
 +
<syntaxhighlight lang="bash">
 +
mkdir android && cd android
 +
repo init -u https://github.com/friendlyarm/android_manifest.git -b nanopi-k2-lollipop
 +
repo sync
 +
</syntaxhighlight>
 +
其中“android”是指工作目录。<br />
 +
 +
* 编译系统
 +
<syntaxhighlight lang="bash">
 +
source build/envsetup.sh
 +
lunch nanopi_k2-userdebug
 +
make -j8
 +
</syntaxhighlight>
 +
编译成功完成后,目录 out/target/product/nanopi-k2 下包含可用于烧写的image文件。
 +
::{| class="wikitable"
 +
|-
 +
|filename    || partition || Description 
 +
|-
 +
|u-boot.bin  || bootloader|| -
 +
|-
 +
|boot.img    || boot      || -
 +
|-
 +
|cache.img    || cache    || -
 +
|-
 +
|userdata.img || userdata  || -
 +
|-
 +
|system.img  || system    || -
 +
|-
 +
|partmap.txt  || -        || 分区描述文件
 +
|-
 +
|}
 +
 +
* 烧写到SD卡
 +
如果是采用SD卡启动Android,可复制编译生成的image文件到sd-fuse_amlogic/android/ 下,使用脚本即可烧到到SD卡,具体请查看[[#在Linux Desktop下通过脚本制作]]。
 +
 +
* 使用fastboot更新
 +
板子启动后通过串口快速按任意键进入uboot命令行模式,输入命令fastboot usb即可更新Android。<br />
 +
连接USB线,然后PC端输入以下命令:
 +
<syntaxhighlight lang="bash">
 +
cd out/target/product/nanopi-k2
 +
sudo fastboot flash boot boot.img
 +
sudo fastboot flash cache cache.img
 +
sudo fastboot flash userdata userdata.img
 +
sudo fastboot flash system system.img
 +
sudo fastboot reboot
 +
</syntaxhighlight>

Revision as of 02:17, 13 April 2017

查看中文

1 介绍

NanoPi K2-1.jpg
NanoPi K2-2.jpg
NanoPi K2-3.jpg
  • NanoPi K2采用了Amlogic公司64位四核A53主控S905, 内置五核Mali450 GPU, 最高运行主频可达2GHz,支持众多视频格式,具备超强的视频解码能力。
  • NanoPi K2配备2GB DDR3内存,集成WiFi蓝牙,带有千兆以太网,USB,HDMI,红外遥控等接口,支持TF卡启动运行系统,并可扩展eMMC模块,尺寸与树莓派3相同,接口与之兼容,可运行Android, Ubuntu, 等嵌入式操作系统。
  • 需要特别说明的是,NanoPi K2支持动态电压调频(DVFS),无需散热装置即可长时间稳定流畅播放高清视频。它非常适合客制化高清播放广告机,网络高清机顶盒等方面的应用,以及创客,爱好者们DIY制作家庭娱乐设备, 多媒体服务器,高速并行计算机等装置。

2 资源特性

  • CPU: Amlogic S905, Quad-core ARM Cortex-A53@1.5GHz, DVFS
  • GPU: Penta-core ARM Mali™-450
  • RAM: 2GB DDR3
  • 以太网: 10/100/1000M (RTL8211F)
  • Wireless:802.11 b/g/n
  • Bluetooth:4.0 dual mode
  • 天线: Wi-Fi和蓝牙共用, 板载陶瓷天线, 同时提供IPX接口
  • 红外:板载红外接收模块
  • 音频:Via HDMI/蓝牙
  • eMMC: 板载eMMC模块接口
  • I2S:板载I2S接口, 7Pin, 2.54mm排针
  • SD: microSD卡槽一个
  • USB Host: 4 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单排针
  • 按键:电源按键一个
  • LED:电源指示灯一个, 系统状态指示灯一个
  • 电源接口:DC电源接口, microUSB接口
  • PCB Size:56x85mm,6层,沉金工艺
  • 供电: DC 5V/2A

3 接口布局和尺寸

3.1 接口布局

NanoPi-K2接口布局
  • GPIO管脚定义
Pin# Name Pin# Name
1 SYS_3.3V 2 VDD_5V
3 GPIODV_24/I2C_SDA_A 4 VDD_5V
5 GPIODV_25/I2C_SCK_A 6 GND
7 GPIOY_0 8 GPIOY_13/UART_TX_C
9 DGND 10 GPIOY_13/UART_RX_C
11 GPIOY_1 12 GPIOY_16/PWM_A
13 GPIOY_2 14 GND
15 GPIOY_3 16 GPIOY_15/PWM_F
17 SYS_3.3V 18 GPIOY_4
19 GPIOY_5 20 GND
21 GPIOY_7 22 GPIOY_6
23 GPIOY_9 24 GPIOY_8
25 DGND 26 GPIOY_10
27 GPIODV_26/I2C_SDA_B 28 GPIODV_27/I2C_SCK_B
29 GPIOY_11/SPDIF_IN 30 GND
31 GPIOAO_5 32 GPIOY_12/SPDIF_OUT
33 GPIOH_3 34 GND
35 GPIOCLK_1 36 CVBS
37 AIN1 38 1.8V Vref Out
39 GND 40 AIN0
  • 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_AO_A
4 UART_RX_AO_A
  • 7Pin I2S接口定义
Pin# Name
1 GND
2 SYS_3.3V
3 I2S_SCLK
4 I2S_LRCLK
5 I2S_DATA_OUT
6 I2S_DATA_IN
7 I2S_MCLK
说明
  1. SYS_3.3V: 3.3V电源输出
  2. VDD_5V: 5V电源输入/输出。输入范围:4.7~5.6V
  3. 全部信号引脚均为3.3V电平
  4. 更详细的信息请查看原理图:NanoPi-K2-1701-Schematic.pdf

3.2 机械尺寸

NanoPi K2 Dimensions

详细尺寸:NanoPi-K2-1701-dxf.zip

4 快速入门

4.1 准备工作

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

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

4.2 经测试使用的TF卡

制作启动NanoPi K2的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卡

4.3.1 快速从SD卡启动NanoPi K2

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

  • 您需要准备一张4G或以上容量的SDHC卡,该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。
固件文件列表:
s905-android-sd4g-YYYYMMDD.img.zip Android5.1系统固件
烧写工具:
win32diskimager.rar Windows平台下的烧写工具,Linux系统可以用dd命令
  • 将固件和烧写工具分别解压,在Windows下插入SD卡(限8G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
  • 当制作完成 SD 卡后,拔出 SD 卡插入 NanoPi K2 的 BOOT 卡槽,上电启动(注意,这里需要 5V/2A 的供电),你可以看到绿灯以及蓝灯长亮,这时你已经成功启动 NanoPi K2。

4.3.2 在Linux Desktop下通过脚本制作

  • 1) 将microSD插入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
  • 3) 以下是制作启动Android的SD卡的方法
su
./fusing.sh /dev/sdx

(注:/dev/sdx请替换为实际的SD卡设备文件名)
制作包中未包含Android烧写文件,第一次使用时会提示需要下载,输入Y下载,N或10秒未输入则取消。

4.3.3 NanoPi K2 扩展TF卡分区

  • Android扩展分区,要在pc上执行下列操作:
sudo umount /dev/sdx?
sudo parted /dev/sdx unit % resizepart 4 100 unit MB print
sudo resize2fs -f /dev/sdx4

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

4.3.4 关于HDMI分辨率

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

4.4 运行Android

  • 将制作好SD卡插入NanoPi K2,连接HDMI,最后接电源,NanoPi K2会从SD卡启动。你可以看到板上PWR灯以及蓝灯常亮,这说明系统已经开始启动了,同时电视上也将能看到系统启动的画面。

NanoPi K2 Android5.1

  • 如同所有PC, 正确的关机对NanoPi K2而言很重要,否则可能会损坏安装在MicroSD卡中的系统文件,导致下次无法顺利启动运行,如要关机,直接按PWR按键即可。

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/uboot.git
cd uboot
git checkout nanopi-k2-v2015.01
make nanopi-k2_defconfig
make

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

sudo ./fusing.sh /dev/sdc

您也可以通过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

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内核
make ARCH=arm64 nanopi-k2_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分区下对应的文件。

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即可。

5.4 编译Android

  • 搭建编译环境

搭建编译Android的环境建议使用64位的Ubuntu 14.04,安装需要的包即可。

sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zip
sudo apt-get install flex libncurses5-dev zlib1g-dev gawk minicom

更多说明可查看 https://source.android.com/source/initializing.html

  • 下载Android5.1源代码

Android源代码的下载需要使用repo,其安装和使用请查看 https://source.android.com/source/downloading.html

mkdir android && cd android
repo init -u https://github.com/friendlyarm/android_manifest.git -b nanopi-k2-lollipop
repo sync

其中“android”是指工作目录。

  • 编译系统
source build/envsetup.sh
lunch nanopi_k2-userdebug
make -j8

编译成功完成后,目录 out/target/product/nanopi-k2 下包含可用于烧写的image文件。

filename partition Description
u-boot.bin bootloader -
boot.img boot -
cache.img cache -
userdata.img userdata -
system.img system -
partmap.txt - 分区描述文件
  • 烧写到SD卡

如果是采用SD卡启动Android,可复制编译生成的image文件到sd-fuse_amlogic/android/ 下,使用脚本即可烧到到SD卡,具体请查看#在Linux Desktop下通过脚本制作

  • 使用fastboot更新

板子启动后通过串口快速按任意键进入uboot命令行模式,输入命令fastboot usb即可更新Android。
连接USB线,然后PC端输入以下命令:

cd out/target/product/nanopi-k2
sudo fastboot flash boot boot.img
sudo fastboot flash cache cache.img
sudo fastboot flash userdata userdata.img
sudo fastboot flash system system.img
sudo fastboot reboot