Difference between revisions of "NanoPi M2/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(制作一张带运行系统的microSD卡)
Line 1: Line 1:
[[NanoPi M2|English]]
+
<span style="color:#ff0000"> 此页面目前仍处于编辑状态中,请稍后查看...<br></span>
 +
[[NanoPi M1|English]]
 +
 
 
==介绍==
 
==介绍==
[[File:NanoPi M2-1.jpg|thumb|frameless|300px|Overview]]
+
[[File:NanoPi M1-1.jpg|thumb|frameless|300px|概览]]
[[File:NanoPi M2-2.jpg|thumb|frameless|300px|Front]]
+
[[File:NanoPi M1-2.jpg|thumb|frameless|300px|正面]]
[[File:NanoPi M2-3.jpg|thumb|frameless|300px|Back]]
+
[[File:NanoPi M1-3.jpg|thumb|frameless|300px|背面]]
[[File:NanoPi M2-4.jpg|thumb|frameless|300px]]
+
[[File:NanoPi M1-4.jpg|thumb|frameless|300px|外壳]]
* NanoPi M2(以下简称M2)是友善之臂团队面向创客、嵌入式爱好者,电子艺术家、发烧友等群体推出的一款完全开源的掌上创客神器,它的大小只有树莓派的大约2/3,可运行Ubuntu Core、Debian、Android5.1、Ubuntu Mate等操作系统。
+
* NanoPi M1(以下简称M1)是友善之臂团队面向创客、嵌入式爱好者,电子艺术家、发烧友等群体推出的又一款完全开源的掌上创客神器,它的大小只有树莓派的大约2/3,可运行Debian、Ubuntu-MATE、Ubuntu-Core、Android等操作系统。
* 相比树莓派2B,NanoPi M2采用了三星A9高性能处理器S5P4418,集成千兆以太网,并采用了AXP228电源管理芯片,可支持软件开关机和睡眠唤醒等功能,M2采用microUSB供电。
+
* NanoPi M1采用了全志高性能处理器Allwinner H3,集成以太网、红外接收、视频/音频输出等接口,支持HDMI、AVOUT视频输出等功能。
* 尽管体积很小,M2依然保持了相当丰富的接口,诸如HDMI,千兆网口,3.5mm的音频输出,4个USB口,板载麦克风等,并且兼容树莓派GPIO口,另外还支持I2C电容触摸LCD显示屏,摄像头接口,独立的调试串口等。
+
* 尽管体积很小,设计却紧凑美观。NanoPi M1引出了相当丰富的接口,包括HDMI、以太网、USB-Host、USB-OTG、DVP camera和AVOUT(音频+视频)等。而且集成了板载麦克风,红外接收器,并且兼容树莓派GPIO口,并且拥有独立的调试串口等。
  
 
==资源特性==
 
==资源特性==
* CPU: S5P4418, 动态运行主频400Mhz~1.4GHz
+
* CPU:Allwinner H3, Quad-core Cortex-A7@1.2GHz
* PMU 电源管理:AXP228,支持软件关机和睡眠唤醒等
+
* GPU:Mali400MP2@600MHz,Supports OpenGL ES2.0
* DDR3 RAM: 1GB
+
* DDR3 RAM:512MB
* MicroSD Slot x1
+
* 网络:10/100M以太网
* 网口: 千兆以太网接口(RTL8211E)
+
 
* 音频:3.5mm耳机座/Via HDMI
 
* 音频:3.5mm耳机座/Via HDMI
* 麦克风: 板载麦克风
+
* 麦克风:板载麦克风
* USB Host: 4 x USB 2.0 Host , 其中两个是标准A型接口, 另外两个是2.54mm排针
+
* 红外:板载红外接收模块
* Micro USB: 1 x USB 2.0 Client
+
* USB Host:Type A型号,USB 2.0 x 3
* LCD接口: 45pin,  0.5mm间距FPC贴片座,支持全彩TFT LCD (RGB:8-8-8)
+
* MicroSD Slot:x1
* HDMI: 符合1.4a规范, Type-A连接器, 1080P60输出
+
* MicroUSB :支持供电和数据传输,有OTG功能
* DVP Camera接口:0.5mm间距竖直贴片FPC座,包含ITU-R BT 601/656 8-bit,I2C和IO
+
* 视频输出: HDMI 1.4 1080P高清显示, CVBS
* GPIO1: 2.54mm间距,40pin, 兼容RPi的GPIO,含UART, SPI, I2C, PWM, IO等管脚资源
+
* DVP Camera接口:24pin,0.5mm间距竖直贴片FPC座
 
* 调试串口:4Pin,2.54mm排针
 
* 调试串口:4Pin,2.54mm排针
* 按键: 电源按键一个, 复位按键一个
+
* GPIO: 40pin, 2.54mm间距,兼容RasberryPi2的扩展GPIO,含UART, SPI, I2C, PWM, IO等管脚资源
* LED: 电源LED一个, 系统指示LED一个
+
* 按键:电源按键x1,复位按键x1
* RTC: 支持RTC, 板上有备份电池接口
+
* PC Size: 64 x 50mm
* PCB Size: 64x56mm,6层,沉金工艺
+
* Power Supply: DC 5V/2A
* 供电: DC 5V/2A
+
* OS/Software: u-boot,Debian,Ubuntu-MATE,Ubuntu-Core
* OS/Software: u-boot, Android5.1, Debian8
+
[[File:NanoPi M1-B03.png|frameless|500px|compact]]
[[File:NanoPi 2M-B03.png|frameless|500px|compact]]
+
  
 
==接口布局和尺寸==
 
==接口布局和尺寸==
 
===接口布局===
 
===接口布局===
[[File:NanoPi-M2-1602-if01.png |thumb|600px|NanoPi M2接口布局]]
+
[[File:NanoPi-M1-1602-if01.png |thumb|500px|NanoPi M1接口布局]]
  
 
* '''GPIO管脚定义'''
 
* '''GPIO管脚定义'''
Line 45: Line 45:
 
|3    || I2C0_SDA      ||4    || VDD_5V
 
|3    || I2C0_SDA      ||4    || VDD_5V
 
|-  
 
|-  
|5    || I2C0_SCL      ||6    || DGND
+
|5    || I2C0_SCL      ||6    || GND
 
|-
 
|-
|7    || GPIOD8/PPM       ||8    || UART3_TXD/GPIOD21
+
|7    || GPIOG11       ||8    || UART1_TX/GPIOG6
 
|-
 
|-
|9    || DGND         ||10    || UART3_RXD/GPIOD17  
+
|9    || GND         ||10    || UART1_RX/GPIOG7  
 
|-
 
|-
|11  || UART4_TX/GPIOB29       ||12    || GPIOD1/PWM0
+
|11  || UART2_TX/GPIOA0       ||12    || PWM1/GPIOA6
 
|-
 
|-
|13  || GPIOB30       ||14    || DGND
+
|13  || UART2_RTS/GPIOA2       ||14    || GND
 
|-
 
|-
|15  || GPIOB31     ||16    || GPIOC14/PWM2
+
|15  || UART2_CTS/GPIOA3     ||16    || UART1_RTS/GPIOG8
 
|-
 
|-
|17  || SYS_3.3V ||18    || GPIOB27
+
|17  || SYS_3.3V ||18    || UART1_CTS/GPIOG9
 
|-
 
|-
|19  || SPI0_MOSI/GPIOC31     ||20    || DGND
+
|19  || SPI0_MOSI/GPIOC0     ||20    || GND
 
|-
 
|-
|21  || SPI0_MISO/GPIOD0     ||22    || UART4_RX/GPIOB28
+
|21  || SIP0_MISO/GPIOC1     ||22    || UART2_RX/GPIOA1
 
|-
 
|-
|23  || SPI0_CLK/GPIOC29    ||24    || SPI0_CS/GPIOC30
+
|23  || SPI0_CLK/GPIOC29    ||24    || SPI0_CS/GPIOC3
 
|-
 
|-
|25  || DGND         ||26    || GPIOB26
+
|25  || GND         ||26    || SPDIF-OUT/GPIOA17
 
|-
 
|-
|27  || I2C1_SDA     ||28    || I2C1_SCL
+
|27  || I2C1_SDA/GPIOA19    ||28    || I2C1_SCL/GPIOA18
 
|-
 
|-
|29  || GPIOC8       ||30    || DGND
+
|29  || GPIOA20       ||30    || GND
 
|-
 
|-
|31  || GPIOC7      ||32    || GPIOC28
+
|31  || GGPIOA21    ||32    || GPIOA7
 
|-
 
|-
|33  || GPIOC13/PWM1       ||34    || DGND
+
|33  || GPIOA8       ||34    || GND
 
|-
 
|-
|35  || SPI2_MISO/GPIOC11   ||36    || SPI2_CS/GPIOC10
+
|35  || UART3_CTS/SPI1_MISO/GPIOA16   ||36    || UART3_TX/SPI1_CS/GPIOA13
 
|-
 
|-
|37  || AliveGPIO3     ||38    || SPI2_MOSI/GPIOC12
+
|37  || GPIOA9     ||38    || UART3_RTS/SPI1_MOSI/GPIOA15
 
|-
 
|-
|39  || DGND         ||40    || SPI2_CLK/GPIOC9
+
|39  || GND         ||40    || UART3_RX/SPI1_CLK/GPIOA14
 
|}
 
|}
以上的定义跟NanoPi2的有所不同, 这是它们的对照表:[[40 pins GPIO comparison table]]
+
 
 
* '''Debug Port(UART0)'''
 
* '''Debug Port(UART0)'''
 
::{| class="wikitable"
 
::{| class="wikitable"
Line 87: Line 87:
 
|Pin# || Name       
 
|Pin# || Name       
 
|-
 
|-
|1    || DGND    
+
|1    || GND    
 
|-
 
|-
 
|2    || VDD_5V     
 
|2    || VDD_5V     
Line 95: Line 95:
 
|4    || UART_RXD0  
 
|4    || UART_RXD0  
 
|}
 
|}
 +
 
* '''DVP Camera IF 管脚定义'''
 
* '''DVP Camera IF 管脚定义'''
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|Pin# || Name      
+
|Pin# || Name     || Description 
 
|-
 
|-
|1, 2 || SYS_3.3V
+
|1, 2 || SYS_3.3V || 3.3V电源输出给外部摄像头模块
 
|-
 
|-
|7,9,13,15,24 || DGND
+
|7,9,13,15,24 || GND || 参考地, 0V
 
|-
 
|-
|3    || I2C0_SCL
+
|3    || I2C2_SCL || I2C时钟信号
 
|-  
 
|-  
|4    || I2C0_SDA  
+
|4    || I2C2_SDA || I2C数据信号
 
|-
 
|-
|5    || GPIOB14
+
|5    || GPIOE15  || 普通GPIO, 施加给外部摄像头模块的控制信号
|-
+
|6    || GPIOB16
+
|-
+
|8,10  || NC
+
|-
+
|11  || VSYNC
+
|-
+
|12  || HREF
+
|-
+
|14  || PCLK
+
|-
+
|16-23 || Data bit7-0
+
|}
+
* '''RGB LCD IF 管脚定义'''
+
::{| class="wikitable"
+
 
|-
 
|-
|Pin# || Name  || Description 
+
|6    || GPIOE14 || 普通GPIO, 施加给外部摄像头模块的控制信号
 
|-
 
|-
|1, 2 || VDD_5V || 5V输出, 可以给LCD模组供电
+
|8    || MCLK      || 提供给外部摄像头模块的时钟信号
 
|-
 
|-
|11,20,29, 37,38,39,40, 45|| DGND || 参考地, 0电位
+
|10  || NC || 没有连接
 
|-
 
|-
|3-10    || Blue LSB to MSB  || RGB的蓝色信号
+
|11  || VSYNC || 外部摄像头模块输出给CPU的行信号
 
|-  
 
|-  
|12-19   || Green LSB to MSB || RGB的绿色信号
+
|12  || HREF/HSYNC || 外部摄像头模块输出给CPU的场信号
 
|-
 
|-
|21-28   || Red LSB to MSB  || RGB的红色信号
+
|14   || PCLK      || 外部摄像头模块输出给CPU的像数点信号
 
|-
 
|-
|30      || GPIOB25          || 普通GPIO, 用户可控制
+
|16-23 || Data bit7-0 || 数据信号
|-
+
|31      || GPIOC15          || 一线协议信号, 以实现LCD型号识别, 背光控制和电阻触摸的功能. 系统已占用, 用户不可重新设置.
+
|-  
+
|32      || XnRSTOUT Form CPU || 系统复位时向外输出低电平
+
|-
+
|33      || VDEN  || 指示RGB信号有效的信号
+
|-
+
|34      || VSYNC || 场信号
+
|-
+
|35      || HSYNC || 行信号
+
|-
+
|36      || LCDCLK || LCD频率, Pixel frequency
+
|-
+
|41      || I2C2_SCL  || I2C2的时钟信号, 用来传输电容屏触摸数据
+
|-
+
|42      || I2C2_SDA  || I2C2的数据信号, 用来传输电容屏触摸数据
+
|-
+
|43      || GPIOC16 || 电容触摸中断信号, 配合I2C2使用
+
|-
+
|44      || NC  || 没有任何连接
+
 
|}
 
|}
 
:'''说明'''
 
:'''说明'''
Line 163: Line 129:
 
::#VDD_5V: 5V电源输入/输出。当电压大于MicroUSB时,向板子供电,否则板子从MicroUSB取电。输入范围:4.7~5.6V
 
::#VDD_5V: 5V电源输入/输出。当电压大于MicroUSB时,向板子供电,否则板子从MicroUSB取电。输入范围:4.7~5.6V
 
::#全部信号引脚均为3.3V电平,输出电流为5mA,可以带动小负荷模块,io都不能带负载
 
::#全部信号引脚均为3.3V电平,输出电流为5mA,可以带动小负荷模块,io都不能带负载
::#GPIO1的定义与NanoPi2不完全相同, 已经在使用NanoPi2的老用户请仔细对照[[40 pins GPIO comparison table]]
+
::#更详细的信息请查看原理图:[http://wiki.friendlyarm.com/wiki/images/d/d8/NanoPi-M1-1603-Schematic.pdf NanoPi-M1-1603-Schematic.pdf]
::#更详细的信息请查看原理图:[http://wiki.friendlyarm.com/wiki/images/3/31/NanoPi-M2-1602-Schematic.pdf NanoPi-M2-1602-Schematic.pdf]
+
  
 
===机械尺寸===
 
===机械尺寸===
[[File:NanoPi M2_1512B_Dimensions.png|frameless|500px|NanoPi M2 Dimensions]]
+
[[File:NanoPi-M1-1603-dimensions.png|frameless|500px|]]
  
::详细尺寸:[http://wiki.friendlyarm.com/wiki/images/0/0b/NanoPi-M2-1602-Dimensions%28dxf%29.zip NanoPi-M2-1602-Dimensions(dxf).zip]
+
::详细尺寸:[http://wiki.friendlyarm.com/wiki/images/a/ad/NanoPi-M1-1603-dimensions%28dxf%29.zip pcb的dxf文件]
  
 
==快速入门==
 
==快速入门==
 
===准备工作===
 
===准备工作===
要开启你的NanoPi M2新玩具,请先准备好以下硬件
+
要开启你的NanoPi M1新玩具,请先准备好以下硬件
* NanoPi M2主板
+
* NanoPi M1主板
 
* microSD卡/TF卡: Class10或以上的 8GB SDHC卡
 
* microSD卡/TF卡: Class10或以上的 8GB SDHC卡
 
* 一个microUSB接口的外接电源,要求输出为5V/2A(可使用同规格的手机充电器)
 
* 一个microUSB接口的外接电源,要求输出为5V/2A(可使用同规格的手机充电器)
* 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
+
* 一台支持HDMI输入的显示器或者电视
 
* 一套USB键盘鼠标,同时连接还需要USB HUB (或选购串口转接板,要PC上进行操作)
 
* 一套USB键盘鼠标,同时连接还需要USB HUB (或选购串口转接板,要PC上进行操作)
 
* 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统
 
* 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统
 
 
===经测试使用的TF卡===
 
===经测试使用的TF卡===
制作启动NanoPi M2的TF卡时,建议Class10或以上的 8GB SDHC卡。以下是经友善之臂测试验证过的高速TF卡:
+
制作启动NanoPi M1的TF卡时,建议Class10或以上的 8GB SDHC卡。以下是经友善之臂测试验证过的高速TF卡:
 
*SanDisk闪迪 TF 8G Class10 Micro/SD 高速 TF卡:
 
*SanDisk闪迪 TF 8G Class10 Micro/SD 高速 TF卡:
 
[[File:SanDisk MicroSD.png|frameless|100px|SanDisk MicroSD 8G]]
 
[[File:SanDisk MicroSD.png|frameless|100px|SanDisk MicroSD 8G]]
Line 190: Line 154:
 
[[File:SanDisk MicroSD-02.png|frameless|100px|chuanyu MicroSD 8G]]
 
[[File:SanDisk MicroSD-02.png|frameless|100px|chuanyu MicroSD 8G]]
  
===制作一张带运行系统的microSD卡===
+
===制作一张带运行系统的TF卡===
 
====简易方法制作====
 
====简易方法制作====
首先访问[http://wiki.friendlyarm.com/wiki/nanopi2/download/ 此处的下载地址]下载需要的固件文件:<br />
+
首先访问[http://wiki.friendlyarm.com/wiki/nanopi-m1/download/ 此处的下载地址]下载需要的固件文件:<br />
  
 
::{| class="wikitable"
 
::{| class="wikitable"
 
|-
 
|-
|colspan=2|使用LCD或HDMI作来输出的用户,使用以下固件:
+
|colspan=2|使用以下固件:
 
|-
 
|-
|nanopi2-debian-sd4g.img.zip      || Debian系统固件                   
+
|nanopi-m1-debian-sd4g.img.zip      || Debian系统固件                   
|-
+
|nanopi2-android-sd4g.img.zip      || Android系统固件 
+
 
|-
 
|-
 
|colspan=2|烧写工具:   
 
|colspan=2|烧写工具:   
Line 207: Line 169:
 
|-  
 
|-  
 
|}
 
|}
 +
*将固件和烧写工具分别解压,在Windows下插入TF卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上,选择你的TF卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
 +
*当制作完成TF卡后,拔出TF卡插入NanoPi M1的BOOT卡槽,上电启动(注意,这里需要5V/2A的供电),你可以看到绿灯常亮以及蓝灯闪烁,这时你已经成功启动 NanoPi M1。<br />
  
*将固件和烧写工具分别解压,在Windows下插入SD卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
 
*当制作完成 SD 卡后,拔出 SD 卡插入 NanoPi M2的 BOOT 卡槽,上电启动(注意,这里需要 5V/2A 的供电),你可以看到绿灯常亮,蓝灯闪烁,这时你已经成功启动 NanoPi M2。<br />
 
  
====在Linux Desktop下通过脚本制作====
+
==Debian系统的使用==
* 1) 将microSD插入Ubuntu的电脑,用以下命令查看你的SD卡设备名
+
===扩展TF卡 rootfs分区===
 +
强烈建议做好系统运行卡之后立即进行rootfs分区的扩展,这将大大提升系统的性能,避免空间不足带来的各种繁琐问题。<br>
 +
将TF卡接在PC上,在PC上执行下列操作:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
dmesg | tail
+
sudo umount /dev/sdx?
 +
sudo parted /dev/sdx unit % resizepart 2 100 unit MB print
 +
sudo resize2fs -f /dev/sdx2
 
</syntaxhighlight>
 
</syntaxhighlight>
当dmesg输出类拟信息 sdc: sdc1 sdc2时,则表示SD卡对应的设备名为 /dev/sdc,也通过用命令cat /proc/partitions来查看。
+
/dev/sdx请替换为实际的TF卡设备文件名。
  
*2) 下载Linux下的制作脚本
 
<syntaxhighlight lang="bash">
 
git clone https://github.com/friendlyarm/sd-fuse_nanopi2.git
 
cd sd-fuse_nanopi2
 
</syntaxhighlight>
 
 
*3) 以下是制作启动Android的SD卡的方法
 
<syntaxhighlight lang="bash">
 
su
 
./fusing.sh /dev/sdx
 
</syntaxhighlight>
 
(注:/dev/sdx请替换为实际的SD卡设备文件名) <br />
 
制作包中未包含Android和Debian的烧写文件,第一次使用时会提示需要下载,输入Y下载,N或10秒未输入则取消。
 
 
*4) 以下是制作启动Debian的SD卡的方法
 
<syntaxhighlight lang="bash">
 
./fusing.sh /dev/sdx debian
 
</syntaxhighlight>
 
 
====关于LCD/HDMI分辨率====
 
系统启动时uboot会自动识别LCD,成功则会设置为该LCD的显示分辨率,失败则缺省会设置为HDMI 720P模式。<br />
 
如果要修改LCD的显示分辨率,可以直接修改内核中的文件 arch/arm/plat-s5p4418/nanopi2/lcds.c , 然后重新编译内核并更新即可。<br />
 
对于HDMI的显示模式,Android则是会通过EDID获得HDMI设备如电视机所支持的显示模式,然后自动选择一个合适的分辨率。如果使用的是Debian,则缺省是720P,可通过修改内核配置来切换为1080P。
 
 
===在电脑上修改SD卡上的系统===
 
如果你想在运行系统之前,先对系统做一些修改,可以参看本节内容,否则可以跳过本节。<br />
 
将制作好microSD卡插入一台运行Linux的电脑,可以挂载SD卡上的boot和rootfs等分区,对分区内容进行修改,通过在以下情况下你需要进行这些操作:<br />
 
1) 你想更改Kernel Command Line参数,则可以通过sd-fuse_nanopi2/tools目录下的fw_setenv工具来操作。<br />
 
查看当前的Command Line:
 
<syntaxhighlight lang="bash">
 
cd sd-fuse_nanopi2/tools
 
./fw_printenv /dev/sdc | grep bootargs
 
</syntaxhighlight>
 
目前的Android 5.1.1_r6启用了SELinux,缺省模式是enforcing,你可以通过Command Line来修改它,例如:
 
<syntaxhighlight lang="bash">
 
./fw_setenv /dev/sdc bootargs XXX androidboot.selinux=permissive
 
</syntaxhighlight>
 
即可修改为permissive模式,其中上面的XXX需要替换成原来的bootargs值。<br />
 
 
2) 更新内核 <br />
 
新版本的uboot在启动时如果识别到LCD,将读取SD卡boot分区的uImage,否则将读取uImage.hdmi。<br />
 
对于Android来说是同一个文件,因此直接使用新编译的uImage来替换SD卡boot分区下的文件即可。<br />
 
对于Debian来说,这2个文件是不相同的,使用新编译的支持LCD的uImage直接替换SD卡boot分区的文件,如果是支持HDMI的内核,则替换uImage.hdmi。<br />
 
 
===运行Android或Debian===
 
*将制作好microSD卡插入NanoPi M2,连接HDMI,最后连接电源(5V 2A),NanoPi M2会上电自动开机,看到板上的蓝色LED闪烁,这说明系统已经开始启动了,同时电视上也将能看到系统启动的画面。<br />
 
1)要在电视上进行操作,你需要连接USB鼠标和键盘;如果你选购了LCD配件,则可以直接使用LCD上面的触摸屏进行操作。<br />
 
2)如果您需要进行内核开发,你最好选购一个串口配件,连接了串口,则可以通过终端对NanoPi M2进行操作。<br />
 
*以下是串口的接法,假如你已经拿到串口,则可直接串口供电,不需要再通过microUSB供电,接上串口,即可调试:
 
[[File:PSU-ONECOM-M2.png|frameless|400px|PSU-ONECOM-M2]]
 
*如果提示输入密码,Debian的root用户的默认密码是两个字母fa。
 
 
===通过VNC和ssh登录Debian===
 
如果你是祼板运行系统(既没有连接LCD也没有连接HDMI),你可以使用手机或电脑到[http://www.realvnc.com/download/ 这里]下载并安装一个名为VNC Viewer的软件,用VNC连接到NanoPi M2,默认密码为:fa123456 。<br />
 
以下是在iPhone上用VNC登录NanoPi M2的画面:<br />
 
[[File:iphone6-vnc-nanopi2.png|frameless|400px|VNC to NanoPi2]]
 
<br />
 
你也可以通过 ssh -l root 192.168.8.1 命令在终端上登录,默认的root用户密码是 fa 。<br />
 
<br />
 
 
==Debian系统的使用==
 
 
===连接有线网络===
 
===连接有线网络===
NanoPi M2在加电开机前如果已正确的连接网线,则系统启动时会自动获取IP地址,如果没有连接网线、没有DHCP服务或是其它网络问题,则会导致获取IP地址失败,同时系统启动会因此等待约15~60秒的时间。
+
NanoPi M1在加电开机前如果已正确的连接网线,则系统启动时会自动获取IP地址,如果没有连接网线、没有DHCP服务或是其它网络问题,则会导致获取IP地址失败,同时系统启动会因此等待约15~60秒的时间。
 
* 1) 配置MAC地址
 
* 1) 配置MAC地址
 
板子没有提供有效的Ethernet的MAC地址,系统在连接网络时会自动生成一个随机的MAC地址,您可以修改 /etc/network/interfaces.d/eth0 ,配置一个固定的MAC地址:
 
板子没有提供有效的Ethernet的MAC地址,系统在连接网络时会自动生成一个随机的MAC地址,您可以修改 /etc/network/interfaces.d/eth0 ,配置一个固定的MAC地址:
Line 300: Line 205:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===安装Debian软件包===
+
===修改HDMI分辨率===
我们提供的是标准的Debian jessie系统,你可以使用apt-get等命令来安装软件包,如果板子是首次运行,需要先用以下命令更新软件包列表:
+
NanoPi M1 Debian系统的HDMI分辨率是由TF卡boot分区根目录下的script.bin决定的,默认使用的是1080p-60Hz的分辨率。<br>
 +
boot分区的script目录下已经有其他几种分辨率的scrpit.bin,假设你需要720p-60Hz的分辨率,你只需用script/script-720p-60.bin替换掉根目录的script.bin:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
apt-get update
+
# in TF card boot partition
 +
cp script/script-720p-60.bin ./script.bin
 
</syntaxhighlight>
 
</syntaxhighlight>
然后就可以安装软件包了,例如要安装ftp服务器,使用以下命令:
 
<syntaxhighlight lang="bash">
 
apt-get install vsftpd
 
</syntaxhighlight>
 
如果软件包下载速度不理想,你可以编辑 /etc/apt/sources.list 更换一个更快的源服务器,这个网址[http://www.debian.org/mirror/list]有一份完整的源镜像服务器列表,注意要选用一个带armhf架构的。
 
  
 
+
===HDMI输出声音===
==如何编译系统==
+
NanoPi M1 Debian系统默认从3.5mm耳机座输出声音,想从HDMI输出需要修改文件系统上的配置文件/etc/asound.conf如下:
 
+
===安装交叉编译器===
+
首先下载并解压编译器:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
git clone https://github.com/friendlyarm/prebuilts.git
+
pcm.!default {
sudo mkdir -p /opt/FriendlyARM/toolchain
+
    type hw
sudo tar xf prebuilts/gcc-x64/arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/
+
    card 1
</syntaxhighlight>
+
    device 0
 +
}
  
然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:
+
ctl.!default {
<syntaxhighlight lang="bash">
+
    type hw
export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
+
    card 1
export GCC_COLORS=auto
+
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
card 0代表3.5mm耳机孔,card 1代表HDMI音频。
  
执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:
+
===测试GPU===
 +
启动Debian系统,在HDMI界面下登录Debian,打开终端并运行命令:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
. ~/.bashrc
+
glmark2-es2
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
[[File:m1-gpu-glmark2.png|frameless|500px|m1-gpu-glmark2]]
  
这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:
+
===测试VPU===
 +
访问此处[http://pan.baidu.com/s/1eRefpT4 下载地址]下载视频文件,启动Debian系统,在HDMI界面下登录Debian,打开终端运行mplayer播放视频:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
arm-linux-gcc -v
+
mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau, ./big_buck_bunny_1080p_H264_AAC_25fps_7200K.MP4
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>
 
</syntaxhighlight>
 +
经测试,可流畅播放1080p视频。
  
===编译U-Boot===
+
===使用USB WiFi===
下载U-Boot源代码并编译,注意分支是nanopi2-lollipop-mr1:
+
NanoPi M1 Debian系统的内核已经将市面上大多数型号的USB WiFi编译成内核模块并集成在文件系统里了。只需将USB WiFi接上即可使用无线网络。
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/uboot_nanopi2.git
+
cd uboot_nanopi2
+
git checkout nanopi2-lollipop-mr1
+
make s5p4418_nanopi2_config
+
make CROSS_COMPILE=arm-linux-
+
</syntaxhighlight>
+
  
编译成功结束后您将获得u-boot.bin,您可以通过fastboot来更新正在运行的NanoPi M2板上SD的U-Boot,方法如下:<br />
+
==如何编译Debian系统==
1) 在电脑上先用命令 sudo apt-get install android-tools-fastboot 安装 fastboot 工具;<br />
+
下载源码,进入目录lichee:
2) 用串口配件连接NanoPi M2和电脑,在上电启动的2秒内,在串口终端上按下回车,进入 u-boot 的命令行模式;<br />
+
3) 在u-boot 命令行模式下输入命令 fastboot 回车,进入 fastboot 模式;<br />
+
4) 用microUSB线连接NanoPi M2和电脑,在电脑上输入以下命令烧写u-boot.bin:<br />
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
fastboot flash bootloader u-boot.bin
+
cd lichee
 
</syntaxhighlight>
 
</syntaxhighlight>
<br />
 
注意:不建议直接使用dd来更新SD卡,否则有可能会导致无法正常启动。<br />
 
  
===准备mkimage===
+
===编译完整源码===
编译内核需要用到U-Boot中的工具mkimage,因此,在编译内核uImage前,您需要保证您的主机环境可以成功运行它。<br />
+
一次性编译整个源码包,包括U-boot、Linux Kernel和Module:
你可以直接使用命令 sudo apt-get install u-boot-tools 来安装,也可以自己编译并安装:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
cd uboot_nanopi2
+
./build.sh -p sun8iw7p1 -b nanopi-h3
make CROSS_COMPILE=arm-linux- tools
+
./gen_script.sh
sudo mkdir -p /usr/local/sbin && sudo cp -v tools/mkimage /usr/local/sbin
+
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
gen_script.sh会打包所有可执行文件,并生成支持不同分辨率的script.bin。
 +
script.bin是全志系列cpu的硬件板级配置文件,相关信息请查看[http://linux-sunxi.org/Script.bin script.bin]
  
===编译Linux kernel===
+
===烧写系统到TF卡===
====编译内核====
+
烧写U-boot、Linux Kernel和script.bin到TF卡上:
* 下载内核源代码
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/linux-3.4.y.git
+
cd linux-3.4.y
+
git checkout nanopi2-lollipop-mr1
+
</syntaxhighlight>
+
NanoPi2内核所属的分支是nanopi2-lollipop-mr1,在开始编译前先切换分支。
+
* 编译Android内核
+
<syntaxhighlight lang="bash">
+
make nanopi2_android_defconfig
+
touch .scmversion
+
make uImage
+
</syntaxhighlight>
+
* 编译Debian内核
+
<syntaxhighlight lang="bash">
+
make nanopi2_linux_defconfig
+
touch .scmversion
+
make uImage
+
</syntaxhighlight>
+
编译成功结束后,新生成的内核烧写文件为 arch/arm/boot/uImage,此内核支持HDMI 720p输出,用于替换掉SD卡boot分区下的uImage.hdmi。<br />
+
如果要支持HDMI 1080p,则需要修改内核配置:
+
<syntaxhighlight lang="bash">
+
touch .scmversion
+
make nanopi2_linux_defconfig
+
make menuconfig
+
  Device Drivers -->
+
    Graphics support -->
+
      Nexell Graphics -->
+
        [ ] LCD
+
        [*] HDMI
+
        (0)  Display In  [0=Display 0, 1=Display 1]
+
              Resolution (1920 * 1080p)  --->
+
make uImage
+
</syntaxhighlight>
+
使用新生成的uImage替换掉SD卡boot分区下的uImage.hdmi即可获得HDMI 1080p输出。<br />
+
如果要编译支持LCD显示的内核,则需要修改内核配置:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
touch .scmversion
+
./burn_into_sd.sh /dev/sdx
make nanopi2_linux_defconfig
+
make menuconfig
+
  Device Drivers -->
+
    Graphics support -->
+
      Nexell Graphics -->
+
        [*] LCD
+
        [ ] HDMI
+
make uImage
+
 
</syntaxhighlight>
 
</syntaxhighlight>
启用LCD,同时取消HDMI,然后退出并保存配置,编译后即可获得支持LCD显示的uImage,用于替换SD卡boot分区下的uImage。
+
/dev/sdx请替换为实际的TF卡设备文件名,该脚本会烧写U-boot到TF卡中,并拷贝uImage和script.bin到TF卡boot分区。
  
====编译内核模块====
+
===编译U-boot===
Android包含内核模块,位于system分区的 /lib/modules/ 下,如果您有新的内核模块或者内核配置有变化,则需要重新编译。 <br />
+
首先编译内核源代码中的模块:
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
cd linux-3.4.y
+
./build.sh -p sun8iw7p1 -b nanopi-h3 -m uboot
make CROSS_COMPILE=arm-linux- modules
+
 
</syntaxhighlight>
 
</syntaxhighlight>
另外有2个内核模块的源代码位于Android源代码中,可使用以下命令来编译:
+
编译生成的可执行文件需打上补丁后才能烧写到TF卡上运行,执行./gen_script.sh脚本能完成打补丁的操作。<br>
<syntaxhighlight lang="bash">
+
如何手动打补丁请查看[http://linux-sunxi.org/H3_Manual_build_howto H3_Manual_build_howto]
cd /opt/FriendlyARM/s5p4418/android
+
./vendor/friendly-arm/build/common/build-modules.sh
+
</syntaxhighlight>
+
其中 “/opt/FriendlyARM/s5p4418/android” 是指Android源代码的TOP目录,使用参数“-h”可查看帮助。<br />
+
编译成功结束后,会显示生成的内核模块。
+
 
+
===编译Android===
+
  
* 搭建编译环境
+
===编译Linux Kernel===
搭建编译Android的环境建议使用64位的Ubuntu 14.04,安装需要的包即可。
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zip
+
./build.sh -p sun8iw7p1 -b nanopi-h3 -m kernel
sudo apt-get install flex libncurses5-dev zlib1g-dev gawk minicom
+
 
</syntaxhighlight>
 
</syntaxhighlight>
更多说明可查看 https://source.android.com/source/initializing.html 。
+
编译完成后uImage和内核模块均位于linux-3.4/output目录下。
  
* 下载源代码
+
===清理源码===
Android源代码的下载需要使用repo,其安装和使用请查看 https://source.android.com/source/downloading.html 。
+
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
mkdir android && cd android
+
./build.sh -p sun8iw7p1 -b nanopi-h3 -m clean
repo init -u https://github.com/friendlyarm/android_manifest.git -b nanopi2-lollipop-mr1
+
repo sync
+
 
</syntaxhighlight>
 
</syntaxhighlight>
其中“android”是指工作目录。
 
  
* 编译系统
+
==如何编译Android系统==
<syntaxhighlight lang="bash">
+
source build/envsetup.sh
+
lunch aosp_nanopi2-userdebug
+
make -j8
+
</syntaxhighlight>
+
编译成功完成后,目录 out/target/product/nanopi2/ 下包含可用于烧写的image文件。
+
 
+
==扩展连接==
+
===连接USB(FA-CAM202)200万摄像头模块===
+
*NanoPi M2使用Debian系统,假设你已接好LCD屏或者HDMI,进入系统后,点击左下角的菜单键“Other”-->xawtv9,打开USB Camera软件。进入“welcome  to  xawtv!”,选择OK即可进行拍照预览。
+
[[File:USB-camera-NanoPi-M2.png|frameless|500px|USB camera-M2]]
+
 
+
===连接CMOS 500万摄像头模块===
+
*NanoPi M2使用Android5.1系统,假设你已经接好LCD屏或者HDMI,进入系统后,直接点击“camera”图标,即可打开摄像头进行拍照。
+
[[File:CMOS-camera-NanoPi2-M2.png|frameless|500px|CMOS camera-M2]]
+
 
+
===连接USB摄像头使用OpenCV===
+
* OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。
+
* NanoPi M2跑Debian系统时,接USB Camera,可直接使用官方的OpenCV。<br>
+
1、以下介绍的是NanoPi M2用C++使用的OpenCV:
+
* 首先需要保证你的NanoPi M2能连外网,假如你有串口,直接串口登陆超级终端(或者ssh登陆)。进入系统后,输入用户名(root),密码(fa)登陆;
+
* 以下命令在超级终端执行:
+
<syntaxhighlight lang="bash">
+
apt-get update
+
apt-get install libcv-dev libopencv-dev
+
</syntaxhighlight>
+
 
+
2、NanoPi M2烧写Debian系统启动后,接上USB Camera,使用Debian系统自带的摄像头软件测试,确定摄像头能正常使用。<br>
+
3、通过终端执行命令,查看你的摄像头设备:
+
<syntaxhighlight lang="bash">
+
ls /dev/video*
+
</syntaxhighlight>
+
* 注:video9 是你的USB摄像头设备(注:video0到8均被其它设备占用了)
+
 
+
4、opencv的测试代码(官方C++示例代码)在 /home/fa/Documents/opencv-demo, 使用以下命令即可编译:
+
<syntaxhighlight lang="bash">
+
cd /home/fa/Documents/opencv-demo
+
make
+
</syntaxhighlight>
+
编译成功后,得到可执行文件demo <br />
+
5、这里特别说明:目前NanoPi M2的内核注册了9个video设备,而opencv的官方源码定义了最多只能使用8个Camera,所以这里需要临时删除一个video设备,以下命令则是删除video0:
+
<syntaxhighlight lang="bash">
+
rm /dev/video0
+
mv /dev/video9 /dev/video0
+
</syntaxhighlight>
+
 
+
6、以下步骤需要在NanoPi M2上连接键盘后执行:
+
<syntaxhighlight lang="bash">
+
./demo
+
</syntaxhighlight>
+
 
+
===连接USB WiFi===
+
* 点击此处,内核编译链接[http://wiki.friendlyarm.com/wiki/index.php/Matrix_-_USB_WiFi/zh]
+
  
 
==更多OS==
 
==更多OS==
Line 525: Line 294:
 
* 访问此处[http://pan.baidu.com/s/1hrbFm0s 下载地址]下载系统固件。
 
* 访问此处[http://pan.baidu.com/s/1hrbFm0s 下载地址]下载系统固件。
 
* 将固件解压后,在Windows下使用友善官方提供 win32diskimager 工具烧写即可。
 
* 将固件解压后,在Windows下使用友善官方提供 win32diskimager 工具烧写即可。
* 烧写完成后,将SD卡插入NanoPi M2,上电即可体验Ubuntu-Core。
+
* 烧写完成后,将TF卡插入NanoPi M1,上电即可体验Ubuntu-Core。
 
* 登录账号:root或fa ; 登录密码:fa
 
* 登录账号:root或fa ; 登录密码:fa
  
===Ubuntu-Mate===
+
===Ubuntu-MATE===
Ubuntu-Mate基于Ubuntu系统,使用的桌面环境是Mate-desktop,界面简洁易用,需配合LCD或者HDMI使用,可通过ssh登录。<br>
+
Ubuntu-MATE基于Ubuntu系统,使用的桌面环境是MATE-desktop,界面简洁易用,需配合HDMI使用,可通过ssh登录。<br>
 
仅提供给进阶爱好者交流使用,不对该系统提供专业技术支持。
 
仅提供给进阶爱好者交流使用,不对该系统提供专业技术支持。
 
* 访问此处[http://pan.baidu.com/s/1boiCWWJ 下载地址]下载系统固件。
 
* 访问此处[http://pan.baidu.com/s/1boiCWWJ 下载地址]下载系统固件。
* 将固件解压后,在Windows下使用友善官方提供 win32diskimager 工具烧写Ubuntu-Mate即可。
+
* 将固件解压后,在Windows下使用友善官方提供 win32diskimager 工具烧写Ubuntu-MATE即可。
* 烧写完成后,将SD卡插入NanoPi M2,上电即可体验Ubuntu-Mate。
+
* 烧写完成后,将TF卡插入NanoPi M1,上电即可体验Ubuntu-MATE。
 
* 登录账号:root或fa ; 登录密码:fa
 
* 登录账号:root或fa ; 登录密码:fa
  
===Kali===
+
==资源连接==
* 首先访问此处[http://pan.baidu.com/s/1qXf2JVm]的下载地址下载需要的固件文件;
+
* 原理图 [http://wiki.friendlyarm.com/wiki/images/d/d8/NanoPi-M1-1603-Schematic.pdf NanoPi-M1-1603-Schematic.pdf]
* 准备大于8G的高速microSD卡(建议使用友善官方测试过的SD卡),并插入linux主机,通过命令sudo fdisk -l 查看该sd卡是哪个设备即/dev/sd*。
+
* 尺寸图 [http://wiki.friendlyarm.com/wiki/images/a/ad/NanoPi-M1-1603-dimensions%28dxf%29.zip pcb的dxf文件]
* 下载后把文件写到卡里,使用超级用户权限执行下列命令:
+
* H3芯片手册 [http://wiki.friendlyarm.com/wiki/images/4/4b/Allwinner_H3_Datasheet_V1.2.pdf Allwinner_H3_Datasheet_V1.2.pdf]
<syntaxhighlight lang="bash">
+
xzcat kali-2.0-nanopi2.img.xz | dd of=<YOURDEVICE> bs=1m
+
</syntaxhighlight>
+
* 烧写完成,将卡插入设备,上电即可开始体验Kali操作系统。
+
 
+
说明:此文件系统是由Kali官方制作,我们仅提供下载链接供爱好者使用,不对此做技术支持。
+
 
+
==源代码和固件下载链接==
+
* 烧写固件下载链接:[http://wiki.friendlyarm.com/wiki/nanopi2/download/]
+
* 源代码下载链接:[https://github.com/friendlyarm]
+
 
+
==3D打印文件下载==
+
* NanoPi M2 3D打印外壳:[http://wiki.friendlyarm.com/wiki/index.php/File:NanoPiM23D%E6%89%93%E5%8D%B0.7z]
+
[[File:NanoPi2-M2-3D打印frameless.jpg|500px|3D打印M2]]
+
 
+
==资源链接==
+
* 原理图 ([http://wiki.friendlyarm.com/wiki/images/3/31/NanoPi-M2-1602-Schematic.pdf NanoPi-M2-1602-Schematic.pdf])
+
* 尺寸图 ([http://wiki.friendlyarm.com/wiki/images/0/0b/NanoPi-M2-1602-Dimensions%28dxf%29.zip NanoPi-M2-1602-Dimensions(dxf).zip])
+
* S5P4418 Datasheet ([http://wiki.friendlyarm.com/wiki/images/a/a7/Pi2_SOC_DS_0.1.pdf S5P4418_Datasheet_0.1.pdf])
+
 
+
==更新日志==
+

Revision as of 03:52, 23 March 2016

此页面目前仍处于编辑状态中,请稍后查看...
English

1 介绍

概览
正面
背面
外壳
  • NanoPi M1(以下简称M1)是友善之臂团队面向创客、嵌入式爱好者,电子艺术家、发烧友等群体推出的又一款完全开源的掌上创客神器,它的大小只有树莓派的大约2/3,可运行Debian、Ubuntu-MATE、Ubuntu-Core、Android等操作系统。
  • NanoPi M1采用了全志高性能处理器Allwinner H3,集成以太网、红外接收、视频/音频输出等接口,支持HDMI、AVOUT视频输出等功能。
  • 尽管体积很小,设计却紧凑美观。NanoPi M1引出了相当丰富的接口,包括HDMI、以太网、USB-Host、USB-OTG、DVP camera和AVOUT(音频+视频)等。而且集成了板载麦克风,红外接收器,并且兼容树莓派GPIO口,并且拥有独立的调试串口等。

2 资源特性

  • CPU:Allwinner H3, Quad-core Cortex-A7@1.2GHz
  • GPU:Mali400MP2@600MHz,Supports OpenGL ES2.0
  • DDR3 RAM:512MB
  • 网络:10/100M以太网
  • 音频:3.5mm耳机座/Via HDMI
  • 麦克风:板载麦克风
  • 红外:板载红外接收模块
  • USB Host:Type A型号,USB 2.0 x 3
  • MicroSD Slot:x1
  • MicroUSB :支持供电和数据传输,有OTG功能
  • 视频输出: HDMI 1.4 1080P高清显示, CVBS
  • DVP Camera接口:24pin,0.5mm间距竖直贴片FPC座
  • 调试串口:4Pin,2.54mm排针
  • GPIO: 40pin, 2.54mm间距,兼容RasberryPi2的扩展GPIO,含UART, SPI, I2C, PWM, IO等管脚资源
  • 按键:电源按键x1,复位按键x1
  • PC Size: 64 x 50mm
  • Power Supply: DC 5V/2A
  • OS/Software: u-boot,Debian,Ubuntu-MATE,Ubuntu-Core

compact

3 接口布局和尺寸

3.1 接口布局

NanoPi M1接口布局
  • GPIO管脚定义
Pin# Name Pin# Name
1 SYS_3.3V 2 VDD_5V
3 I2C0_SDA 4 VDD_5V
5 I2C0_SCL 6 GND
7 GPIOG11 8 UART1_TX/GPIOG6
9 GND 10 UART1_RX/GPIOG7
11 UART2_TX/GPIOA0 12 PWM1/GPIOA6
13 UART2_RTS/GPIOA2 14 GND
15 UART2_CTS/GPIOA3 16 UART1_RTS/GPIOG8
17 SYS_3.3V 18 UART1_CTS/GPIOG9
19 SPI0_MOSI/GPIOC0 20 GND
21 SIP0_MISO/GPIOC1 22 UART2_RX/GPIOA1
23 SPI0_CLK/GPIOC29 24 SPI0_CS/GPIOC3
25 GND 26 SPDIF-OUT/GPIOA17
27 I2C1_SDA/GPIOA19 28 I2C1_SCL/GPIOA18
29 GPIOA20 30 GND
31 GGPIOA21 32 GPIOA7
33 GPIOA8 34 GND
35 UART3_CTS/SPI1_MISO/GPIOA16 36 UART3_TX/SPI1_CS/GPIOA13
37 GPIOA9 38 UART3_RTS/SPI1_MOSI/GPIOA15
39 GND 40 UART3_RX/SPI1_CLK/GPIOA14
  • Debug Port(UART0)
Pin# Name
1 GND
2 VDD_5V
3 UART_TXD0
4 UART_RXD0
  • DVP Camera IF 管脚定义
Pin# Name Description
1, 2 SYS_3.3V 3.3V电源输出给外部摄像头模块
7,9,13,15,24 GND 参考地, 0V
3 I2C2_SCL I2C时钟信号
4 I2C2_SDA I2C数据信号
5 GPIOE15 普通GPIO, 施加给外部摄像头模块的控制信号
6 GPIOE14 普通GPIO, 施加给外部摄像头模块的控制信号
8 MCLK 提供给外部摄像头模块的时钟信号
10 NC 没有连接
11 VSYNC 外部摄像头模块输出给CPU的行信号
12 HREF/HSYNC 外部摄像头模块输出给CPU的场信号
14 PCLK 外部摄像头模块输出给CPU的像数点信号
16-23 Data bit7-0 数据信号
说明
  1. SYS_3.3V: 3.3V电源输出
  2. VDD_5V: 5V电源输入/输出。当电压大于MicroUSB时,向板子供电,否则板子从MicroUSB取电。输入范围:4.7~5.6V
  3. 全部信号引脚均为3.3V电平,输出电流为5mA,可以带动小负荷模块,io都不能带负载
  4. 更详细的信息请查看原理图:NanoPi-M1-1603-Schematic.pdf

3.2 机械尺寸

NanoPi-M1-1603-dimensions.png

详细尺寸:pcb的dxf文件

4 快速入门

4.1 准备工作

要开启你的NanoPi M1新玩具,请先准备好以下硬件

  • NanoPi M1主板
  • microSD卡/TF卡: Class10或以上的 8GB SDHC卡
  • 一个microUSB接口的外接电源,要求输出为5V/2A(可使用同规格的手机充电器)
  • 一台支持HDMI输入的显示器或者电视
  • 一套USB键盘鼠标,同时连接还需要USB HUB (或选购串口转接板,要PC上进行操作)
  • 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统

4.2 经测试使用的TF卡

制作启动NanoPi M1的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 制作一张带运行系统的TF卡

4.3.1 简易方法制作

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

使用以下固件:
nanopi-m1-debian-sd4g.img.zip Debian系统固件
烧写工具:
win32diskimager.rar Windows平台下的烧写工具,Linux系统可以用dd命令
  • 将固件和烧写工具分别解压,在Windows下插入TF卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上,选择你的TF卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
  • 当制作完成TF卡后,拔出TF卡插入NanoPi M1的BOOT卡槽,上电启动(注意,这里需要5V/2A的供电),你可以看到绿灯常亮以及蓝灯闪烁,这时你已经成功启动 NanoPi M1。


5 Debian系统的使用

5.1 扩展TF卡 rootfs分区

强烈建议做好系统运行卡之后立即进行rootfs分区的扩展,这将大大提升系统的性能,避免空间不足带来的各种繁琐问题。
将TF卡接在PC上,在PC上执行下列操作:

sudo umount /dev/sdx?
sudo parted /dev/sdx unit % resizepart 2 100 unit MB print
sudo resize2fs -f /dev/sdx2

/dev/sdx请替换为实际的TF卡设备文件名。

5.2 连接有线网络

NanoPi M1在加电开机前如果已正确的连接网线,则系统启动时会自动获取IP地址,如果没有连接网线、没有DHCP服务或是其它网络问题,则会导致获取IP地址失败,同时系统启动会因此等待约15~60秒的时间。

  • 1) 配置MAC地址

板子没有提供有效的Ethernet的MAC地址,系统在连接网络时会自动生成一个随机的MAC地址,您可以修改 /etc/network/interfaces.d/eth0 ,配置一个固定的MAC地址:

vi /etc/network/interfaces.d/eth0

以下是配置文件的具体内容:

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
hwaddress 76:92:d4:85:f3:0f

其中"hwaddress" 就是用来指定MAC地址,"76:92:d4:85:f3:0f"是一个随机生成的地址,为防止冲突导致网络问题,请修改为一个不同的且有效的地址。
需要注意的一点是,MAC地址必须符合IEEE的规则,请不要随意指定,否则会出现无法获取IP地址、无法上网等问题。 修改完配置文件并保存后,可重启板子或直接下列命令重启网络服务:

systemctl restart networking

5.3 修改HDMI分辨率

NanoPi M1 Debian系统的HDMI分辨率是由TF卡boot分区根目录下的script.bin决定的,默认使用的是1080p-60Hz的分辨率。
boot分区的script目录下已经有其他几种分辨率的scrpit.bin,假设你需要720p-60Hz的分辨率,你只需用script/script-720p-60.bin替换掉根目录的script.bin:

# in TF card boot partition
cp script/script-720p-60.bin ./script.bin

5.4 HDMI输出声音

NanoPi M1 Debian系统默认从3.5mm耳机座输出声音,想从HDMI输出需要修改文件系统上的配置文件/etc/asound.conf如下:

pcm.!default {
    type hw
    card 1
    device 0
}
 
ctl.!default {
    type hw
    card 1
}

card 0代表3.5mm耳机孔,card 1代表HDMI音频。

5.5 测试GPU

启动Debian系统,在HDMI界面下登录Debian,打开终端并运行命令:

glmark2-es2

m1-gpu-glmark2

5.6 测试VPU

访问此处下载地址下载视频文件,启动Debian系统,在HDMI界面下登录Debian,打开终端运行mplayer播放视频:

mplayer -vo vdpau -vc ffmpeg12vdpau,ffh264vdpau, ./big_buck_bunny_1080p_H264_AAC_25fps_7200K.MP4

经测试,可流畅播放1080p视频。

5.7 使用USB WiFi

NanoPi M1 Debian系统的内核已经将市面上大多数型号的USB WiFi编译成内核模块并集成在文件系统里了。只需将USB WiFi接上即可使用无线网络。

6 如何编译Debian系统

下载源码,进入目录lichee:

cd lichee

6.1 编译完整源码

一次性编译整个源码包,包括U-boot、Linux Kernel和Module:

./build.sh -p sun8iw7p1 -b nanopi-h3
./gen_script.sh

gen_script.sh会打包所有可执行文件,并生成支持不同分辨率的script.bin。 script.bin是全志系列cpu的硬件板级配置文件,相关信息请查看script.bin

6.2 烧写系统到TF卡

烧写U-boot、Linux Kernel和script.bin到TF卡上:

./burn_into_sd.sh /dev/sdx

/dev/sdx请替换为实际的TF卡设备文件名,该脚本会烧写U-boot到TF卡中,并拷贝uImage和script.bin到TF卡boot分区。

6.3 编译U-boot

./build.sh -p sun8iw7p1 -b nanopi-h3 -m uboot

编译生成的可执行文件需打上补丁后才能烧写到TF卡上运行,执行./gen_script.sh脚本能完成打补丁的操作。
如何手动打补丁请查看H3_Manual_build_howto

6.4 编译Linux Kernel

./build.sh -p sun8iw7p1 -b nanopi-h3 -m kernel

编译完成后uImage和内核模块均位于linux-3.4/output目录下。

6.5 清理源码

./build.sh -p sun8iw7p1 -b nanopi-h3 -m clean

7 如何编译Android系统

8 更多OS

8.1 Ubuntu-Core

Ubuntu-Core是一个轻量级的Ubuntu系统,无桌面环境,可通过ssh登录。
仅提供给进阶爱好者交流使用,不对该系统提供专业技术支持。

  • 访问此处下载地址下载系统固件。
  • 将固件解压后,在Windows下使用友善官方提供 win32diskimager 工具烧写即可。
  • 烧写完成后,将TF卡插入NanoPi M1,上电即可体验Ubuntu-Core。
  • 登录账号:root或fa ; 登录密码:fa

8.2 Ubuntu-MATE

Ubuntu-MATE基于Ubuntu系统,使用的桌面环境是MATE-desktop,界面简洁易用,需配合HDMI使用,可通过ssh登录。
仅提供给进阶爱好者交流使用,不对该系统提供专业技术支持。

  • 访问此处下载地址下载系统固件。
  • 将固件解压后,在Windows下使用友善官方提供 win32diskimager 工具烧写Ubuntu-MATE即可。
  • 烧写完成后,将TF卡插入NanoPi M1,上电即可体验Ubuntu-MATE。
  • 登录账号:root或fa ; 登录密码:fa

9 资源连接