Difference between revisions of "NanoPi/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(资源链接)
Line 1: Line 1:
 
[[NanoPi|English]]
 
[[NanoPi|English]]
 
==介绍==
 
==介绍==
[[File:NanoPi-01B.jpg|thumb|NanoPi]]
+
[[File:NanoPi-01B.jpg|thumb|Overview]]
 +
[[File:NanoPi-A01.png|thumb|Front]]
 +
[[File:NanoPi-B01.png|thumb|Back]]
 
NanoPi是友善之臂专门为嵌入式Linux爱好者、创客、玩家设计的一款低功耗ARM主控板,它的尺寸只有Raspberry Pi(RPi)的一半大小,并且兼容RPi的GPIO接口,NanoPi集成无线WiFi和蓝牙4.0模块,并带有并行摄像头接口,和全彩LCD接口,可从TF卡运行Linux/Debian系统,非常适合物联网、无线智能小车、机器人、图像识别、人机界面等应用开发。
 
NanoPi是友善之臂专门为嵌入式Linux爱好者、创客、玩家设计的一款低功耗ARM主控板,它的尺寸只有Raspberry Pi(RPi)的一半大小,并且兼容RPi的GPIO接口,NanoPi集成无线WiFi和蓝牙4.0模块,并带有并行摄像头接口,和全彩LCD接口,可从TF卡运行Linux/Debian系统,非常适合物联网、无线智能小车、机器人、图像识别、人机界面等应用开发。
  
Line 18: Line 20:
 
* PCB 尺寸: 75 x 30 mm
 
* PCB 尺寸: 75 x 30 mm
 
* 供电: DC 5V
 
* 供电: DC 5V
* 软件支持: u-boot, Linux-4.1+Qt-4.8.5, Debian
+
* 软件支持: u-boot, Linux-4.1, Debian
  
 
==接口布局和尺寸==
 
==接口布局和尺寸==
Line 119: Line 121:
 
::#VDD_SYS_3.3V: 3.3V电源输出
 
::#VDD_SYS_3.3V: 3.3V电源输出
 
::#VDD_5V: 5V电源输入/输出。当电压大于MicroUSB时,向板子供电,否则板子从MicroUSB取电。输入范围:4.7~5.6V。
 
::#VDD_5V: 5V电源输入/输出。当电压大于MicroUSB时,向板子供电,否则板子从MicroUSB取电。输入范围:4.7~5.6V。
::#更详细的信息请查看原理图:[[File:NanoPi-1507-Schematic.pdf]]
+
::#更详细的信息请查看原理图:[http://wiki.friendlyarm.com/wiki/images/f/f0/NanoPi-1507-Schematic.pdf NanoPi-1507-Schematic.pdf]
  
 
===机械尺寸===
 
===机械尺寸===
 
[[File:NanoPi-1507-dimensions.png|frameless|600px|NanoPi 机械尺寸]]
 
[[File:NanoPi-1507-dimensions.png|frameless|600px|NanoPi 机械尺寸]]
  
::需要更详细的尺寸请下载:[[:File:NanoPi-1507-Dimesions(dxf).zip|NanoPi-1507-Dimesions(dxf).zip]]
+
::需要更详细的尺寸请下载:[http://wiki.friendlyarm.com/wiki/images/3/37/NanoPi-1507-Dimesions%28dxf%29.zip NanoPi-1507-Dimesions(dxf).zip ]
  
 
==快速入门==
 
==快速入门==
Line 130: Line 132:
 
要开启你的NanoPi新玩具,请先准备好以下硬件
 
要开启你的NanoPi新玩具,请先准备好以下硬件
 
* NanoPi主板
 
* NanoPi主板
* microSD卡/TF卡: 最小系统需要15M,卡的容量您看着办
+
* microSD卡/TF卡: 最小系统需要64M
 
* microUSB线
 
* microUSB线
* 一台运行Windows7/Linux的电脑
+
* 一台运行Linux的电脑,需要联网
  
===下载并烧写Linux系统镜像文件===
+
===制作一张带运行系统的microSD卡===
*下载地址
+
* 1) 将microSD插入Ubuntu的电脑,用以下命令查看你的SD卡设备名
::下载系统镜像文件:
+
<syntaxhighlight lang="bash">
::下载烧写工具::
+
dmesg | tail
 +
</syntaxhighlight>
 +
当dmesg输出类拟信息 sdc: sdc1 sdc2时,则表示SD卡对应的设备名为 /dev/sdc,也通过用命令cat /proc/partitions来查看。
 +
 
 +
*2) 下载固件并制作microSD卡
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/sd-fuse_nanopi.git
 +
cd sd-fuse_nanopi
 +
su
 +
./fusing.sh /dev/sdx
 +
</syntaxhighlight>
 +
(注:/dev/sdx请替换为实际的SD卡设备文件名)
  
 
===运行系统===
 
===运行系统===
::把制作好的microSD卡插入NanoPi,使用microUSB线连上电源,稍等片刻,看到板上的蓝色LED开始闪烁,这说明系统已经开始正常运行了
+
将制作好的microSD卡插入NanoPi,使用microUSB线连接电脑,NanoPi会上电自动开机,看到板上的蓝色LED闪烁,这说明系统已经开始正常运行了。
  
 
===通过microUSB登陆NanoPi===
 
===通过microUSB登陆NanoPi===
===配置使用WiFi===
+
用microUSB线将NanoPi连接到电脑后,在电脑上敲入dmesg命令,看到以下输出信息表示连接成功:
 +
<syntaxhighlight lang="bash">
 +
[12601.100339] usb 2-1.7: Product: FriendlyARM Gadget v2.4
 +
[12601.100343] usb 2-1.7: Manufacturer: Linux 4.1.2-FriendlyARM with s3c-hsudc
 +
[12601.103192] cdc_acm 2-1.7:2.0: This device cannot do calls on its own. It is not a modem.
 +
[12601.103368] cdc_acm 2-1.7:2.0: ttyACM0: USB ACM device
 +
[12601.105300] cdc_ether 2-1.7:2.2 usb0: register 'cdc_ether' at usb-0000:00:1d.0-1.7, CDC Ethernet Device, 46:a1:e7:6d:5c:32
 +
</syntaxhighlight>
 +
 
 +
在电脑上输入ifconfig命令,可以看到多了一个usb0的网络设备,这时可以通过ssh到192.168.100.1这个地址来登录NanoPi:
 +
<syntaxhighlight lang="bash">
 +
ssh root@192.168.100.1
 +
</syntaxhighlight>
 +
在提示输入密码时,输入预设的密码fa,即可登入。
 +
 
 +
===配置使用Wi-Fi===
 +
 
 +
使用ssh连接NanoPi,输出以下命令配置WiFi:
 +
<syntaxhighlight lang="bash">
 +
wpa_passphrase YourWiFiESSID 'YourWiFiPassword' >> /etc/wpa.conf
 +
wpa_cli -iwlan0 reconfigure
 +
</syntaxhighlight>
 +
其中,YourWiFiESSID和YourWiFiPassword请替换成你要连接的无线AP名称和密码,
 +
以后每次开机,都会自动连接该WiFi,你可以通过编辑 /etc/wpa.conf 调整无线AP的设置,
 +
默认是通过dhcp的方式获得IP地址,如果你想更改成静态设置IP地址,可编辑 /usr/sbin/wpa_action,将其中的udhcpc调用改成使用ifconfig命令来设置。
 +
 
 +
====扫描无线AP====
 +
用以下命令搜索周边的无线AP:
 +
<syntaxhighlight lang="bash">
 +
wpa_cli -iwlan0 scan
 +
wpa_cli -iwlan0 scan_result
 +
</syntaxhighlight>
 +
 
 +
<!-- comments
 
===配置使用蓝牙===
 
===配置使用蓝牙===
 +
-->
 +
 +
==如何编译系统==
 +
 +
===安装交叉编译器===
 +
首先下载并解压编译器:
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/prebuilts.git
 +
tar xvzf prebuilts/gcc/arm-linux-gcc-4.4.3.tar.gz -C /
 +
</syntaxhighlight>
 +
 +
然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容:
 +
<syntaxhighlight lang="bash">
 +
export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin/:$PATH
 +
</syntaxhighlight>
 +
 +
执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:
 +
<syntaxhighlight lang="bash">
 +
. ~/.bashrc
 +
</syntaxhighlight>
 +
 +
===编译U-Boot===
 +
 +
下载U-Boot源代码并编译,注意分支是nanopi:
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/uboot_nanopi.git
 +
cd uboot_nanopi
 +
git checkout nanopi
 +
make nanopi_config
 +
make
 +
</syntaxhighlight>
 +
 +
编译成功结束后您将获得u-boot.bin, 如果想马上就测试u-boot,可使用脚本fusing.sh烧写新的u-boot 到SD 卡。<br />
 +
假设您的 SD 卡对应设备名是/dev/sdd,以root运行以下命令:
 +
<syntaxhighlight lang="bash">
 +
su
 +
./fusing.sh /dev/sdd
 +
</syntaxhighlight>
 +
注意:以上操作会破坏SD卡的数据,请先进行备份。
 +
 +
===编译Linux kernel===
 +
====编译内核====
 +
下载内核源代码并编译
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/linux-4.x.y.git
 +
cd linux-4.x.y
 +
git checkout nanopi-v4.1.y
 +
make nanopi_defconfig
 +
touch .scmversion
 +
make
 +
</syntaxhighlight>
 +
NanoPi内核所属的分支是nanopi-v4.1.y,在开始编译前先切换分支,编译成功结束后,新生成内核烧写文件为 arch/arm/boot/zImage 。
 +
 +
====编译内核模块====
 +
目前的内核配置会编译生成内核模块,如ipv6、netfilter,通常在编译内核时,内核模块(.ko)已经编译,如果您有新的内核模块或者内核配置有变化,则需要编译安装内核模块并打包成 kernel-modules.tgz,然后替换Rootfs下的 basefs/kernel-modules.tgz。<br />
 +
以root用户运行以下命令安装.ko到/tmp/nanopi-modules 。
 +
<syntaxhighlight lang="bash">
 +
make INSTALL_MOD_PATH=/tmp/nanopi-modules modules_install
 +
</syntaxhighlight>
 +
接下来可对内核模块进行strip,然后创建压缩包。
 +
<syntaxhighlight lang="bash">
 +
cd /tmp/nanopi-modules/lib/
 +
find . -name \*.ko | xargs arm-linux-strip --strip-unneeded
 +
tar czvf kernel-modules.tgz modules/
 +
</syntaxhighlight>
 +
如果想测试新编译的内核模块,也可以解压压缩包或复制modules 到已制作好的能启动NanoPi的SD卡的rootfs下的/lib 目录。
 +
假设SD卡的rootfs已经mount到 /media/fa/NANOPI,以root 运行以下命令:
 +
<syntaxhighlight lang="bash">
 +
rm -rf /media/fa/NANOPI/lib/modules/
 +
tar xzvf kernel-modules.tgz -C /media/fa/NANOPI/lib/
 +
</syntaxhighlight>
 +
 +
===编译制作文件系统===
 +
下面的命令将下载文件系统源码包并编译,注意需要在root用户下编译,可用su命令切换:
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/rootfs_nanopi.git
 +
cd rootfs_nanopi
 +
git checkout nanopi
 +
su
 +
make && make install && make strip
 +
</syntaxhighlight>
 +
 +
编译成功结束后,将看到以下信息:
 +
<syntaxhighlight lang="bash">
 +
RootFS (core) successfully installed to:
 +
  /tmp/FriendlyARM/nanopi/rootfs
 +
 +
Copyright 2015 FriendlyARM (http://www.arm9.net/)
 +
</syntaxhighlight>
 +
 +
上面的信息提示我们编译生成的文件系统存放的位置为/tmp/FriendlyARM/nanopi/rootfs,我们把它压缩成一个压缩包:
 +
<syntaxhighlight lang="bash">
 +
cd /tmp/FriendlyARM/nanopi
 +
tar czvf rootfs.tgz rootfs/
 +
</syntaxhighlight>
 +
 +
<div id="BuildMicroSDCard"></div>
 +
===使用自已编译的文件生成制作SD卡===
 +
====重新制作SD卡系统====
 +
先下载SD卡烧写的工具包,并切换到相应master分支:
 +
<syntaxhighlight lang="bash">
 +
git clone https://github.com/friendlyarm/sd-fuse_nanopi.git
 +
cd sd-fuse_nanopi
 +
git checkout master
 +
</syntaxhighlight>
 +
 +
在sd-fuse_nanopi下有个prebuilt,用于存放SD系统运行所需的二进制文件: <br />
 +
Bootloader: u-boot.bin  <br />
 +
内核命令行参数: sdenv.raw <br />
 +
Linux内核:zImage  <br />
 +
文件系统压缩包: rootfs.tgz <br />
 +
 +
你只需要将上面章节中编译生成的文件替换它们,就可以测试运行你所编译的系统了,替换文件后,在sd-fuse_nanopi目录下执行以下命令制作SD卡:
 +
<syntaxhighlight lang="bash">
 +
su
 +
./fusing.sh /dev/sdx
 +
</syntaxhighlight>
 +
(注:/dev/sdx请替换为实际的SD卡设备文件名)
 +
 +
烧写成功完成后,把SD卡放入NanoPi运行试试吧。
  
==如何制作自己的microSD卡烧写镜像文件==
+
====更新U-Boot环境变量====
 +
制作好的SD启动NanoPi 后,如果通过串口在U-Boot命令模式下修改了环境变量,如bootargs,现在想要把这个修改后的环境用于制作其它新的SD卡,则需要把保存在卡的U-Boot环境变量数据读出来,替换掉prebuilt 下的 sdenv.raw,然后烧写新的SD卡即可。
 +
<syntaxhighlight lang="bash">
 +
./readenv.sh /dev/sdd
 +
cp sdenv.raw prebuilt/
 +
</syntaxhighlight>
  
===编译u-boot源代码===
+
====关于SD卡RAW文件====
===配置和编译内核源代码===
+
由于CPU S3C2451的iROM 是从SD卡的尾部来读取Bootloader,且普通SD卡和SDHC卡的位置不同,而不同品牌或是不同容量的SD卡的大小又是不同的,因此没办法创建适应不同卡的RAW文件。<br />
===从源代码开始编译制作Rootfs===
+
如果您有一批大小完全一致的SD卡,可使用工具如linux下的dd 读取已经制作好的SD 卡的全部数据,保存为RAW文件,然后将此文件写入其它大小相同的SD卡。<br />
===制作microSD卡镜像文件===
+
另外,由于现在的SD卡容量通常都比较大,对于8 GB的SD卡,写一个RAW文件将需要较长时间,而目前的rootfs实际只有 ~23 MB,因此直接使用脚本制作SD卡将更快。
  
 
==扩展连接==
 
==扩展连接==
Line 163: Line 334:
  
 
==资源链接==
 
==资源链接==
* GitHub:
+
* [Schematic]( [http://wiki.friendlyarm.com/wiki/images/f/f0/NanoPi-1507-Schematic.pdf NanoPi-1507-Schematic.pdf])
* Schematic: [[:File:NanoPi-1507-Schematic.pdf | NanoPi-1507-Schematic.pdf ]]
+
* [Dimensions]( [http://wiki.friendlyarm.com/wiki/images/3/37/NanoPi-1507-Dimesions%28dxf%29.zip NanoPi-1507-Dimesions(dxf).zip ])
* Dimensions: [[:File:NanoPi-1507-Dimesions(dxf).zip | NanoPi-1507-Dimesions(dxf).zip ]]
+
* [S3C2451芯片手册]([http://wiki.friendlyarm.com/wiki/images/b/b9/S3C2451_UM_REV1.1.pdf S3C2451_UM_REV1.1.pdf])
 +
* [RT8059芯片手册]( [http://www.richtek.com/assets/product_file/RT8059/DS8059-05.pdf RT8059.pdf])
 +
* [XC6209芯片手册]( [http://www.torex.co.jp/english/products/discon/item/53-XC6209_12.pdf XC6209.pdf])
 +
* [DDR2 RAM芯片手册]( [http://www.samsung.com/global/business/semiconductor/file/2011/product/2011/7/18/148752ds_k4t51xx3qi_rev11.pdf K4T51163QI_rev1.1.pdf])
 +
* [AP6210规格书]( [http://wiki.friendlyarm.com/wiki/images/7/77/AP6210_V1.2_12262012.pdf AP6210_V1.2_12262012.pdf])

Revision as of 09:14, 23 July 2015

English

1 介绍

Overview
Front
Back

NanoPi是友善之臂专门为嵌入式Linux爱好者、创客、玩家设计的一款低功耗ARM主控板,它的尺寸只有Raspberry Pi(RPi)的一半大小,并且兼容RPi的GPIO接口,NanoPi集成无线WiFi和蓝牙4.0模块,并带有并行摄像头接口,和全彩LCD接口,可从TF卡运行Linux/Debian系统,非常适合物联网、无线智能小车、机器人、图像识别、人机界面等应用开发。

2 资源特性

  • CPU: Samsung S3C2451, 运行主频400Mhz
  • RAM: 64M DDR2
  • 集成SDIO WiFi蓝牙模块
  • USB Type A x1
  • 调试串口 x1
  • microSD Slot x1
  • microUSB x1: 支持供电和数据传输,可模拟为串口和以太网
  • LCD接口: 0.5mm间距贴片FPC座,支持全彩LCD (RGB:8-8-8)
  • DVP Camera接口:0.5mm间距竖直贴片FPC座,包含ITU-R BT 601/656 8-bit,I2C和IO
  • GPIO1: 2.54mm间距,40pin, 兼容RPi的GPIO,含UART, SPI, I2C, IO等管脚资源
  • GPIO2: 2.54mm间距, 12pin, 含I2S, I2C, UART等管脚资源
  • PCB 尺寸: 75 x 30 mm
  • 供电: DC 5V
  • 软件支持: u-boot, Linux-4.1, Debian

3 接口布局和尺寸

3.1 接口布局

NanoPi接口布局
  • GPIO1 管脚定义
NanoPi GPIO Header
  • GPIO2 管脚定义
Pin# Name Pin# Name
1 VDD_5V 2 VDD_SYS_3.3V
3 TXD2 4 RXD2
5 SDA0 6 SCL0
7 IISSDO0 8 IISSDI0
9 IISSCLK0 10 IISLRCK0
11 IISCDCLK0 12 DGND
  • Debug Port CON1(UART0)
Pin# Name
1 DGND
2 VDD_5V
3 TXD0
4 RXD0
  • DVP Camera IF 管脚定义
Pin# Name
1, 2 VDD_SYS_3.3V
7,9,13,15,24 DGND
3 SCL0
4 SDA0
5 GPH13
6 GPJ12
8 XCLK
10 NC
11 VSYNC
12 HREF
14 PCLK
16-23 Data bit7-0
  • RGB LCD IF 管脚定义
Pin# Name
1, 2 VDD_5V
11,20,29 DGND
3-10 Blue LSB to MSB
12-19 Green LSB to MSB
21-28 Red LSB to MSB
30 GPG12
31 GPG2
32 XnRSTOUT Form CPU
33 VDEN
34 VSYNC
35 HSYNC
36 LCDCLK
37,38,39,40 XM,XP,YM,YP
说明
  1. VDD_SYS_3.3V: 3.3V电源输出
  2. VDD_5V: 5V电源输入/输出。当电压大于MicroUSB时,向板子供电,否则板子从MicroUSB取电。输入范围:4.7~5.6V。
  3. 更详细的信息请查看原理图:NanoPi-1507-Schematic.pdf

3.2 机械尺寸

NanoPi 机械尺寸

需要更详细的尺寸请下载:NanoPi-1507-Dimesions(dxf).zip

4 快速入门

4.1 准备工作

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

  • NanoPi主板
  • microSD卡/TF卡: 最小系统需要64M
  • microUSB线
  • 一台运行Linux的电脑,需要联网

4.2 制作一张带运行系统的microSD卡

  • 1) 将microSD插入Ubuntu的电脑,用以下命令查看你的SD卡设备名
dmesg | tail

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

  • 2) 下载固件并制作microSD卡
git clone https://github.com/friendlyarm/sd-fuse_nanopi.git
cd sd-fuse_nanopi
su
./fusing.sh /dev/sdx

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

4.3 运行系统

将制作好的microSD卡插入NanoPi,使用microUSB线连接电脑,NanoPi会上电自动开机,看到板上的蓝色LED闪烁,这说明系统已经开始正常运行了。

4.4 通过microUSB登陆NanoPi

用microUSB线将NanoPi连接到电脑后,在电脑上敲入dmesg命令,看到以下输出信息表示连接成功:

[12601.100339] usb 2-1.7: Product: FriendlyARM Gadget v2.4
[12601.100343] usb 2-1.7: Manufacturer: Linux 4.1.2-FriendlyARM with s3c-hsudc
[12601.103192] cdc_acm 2-1.7:2.0: This device cannot do calls on its own. It is not a modem.
[12601.103368] cdc_acm 2-1.7:2.0: ttyACM0: USB ACM device
[12601.105300] cdc_ether 2-1.7:2.2 usb0: register 'cdc_ether' at usb-0000:00:1d.0-1.7, CDC Ethernet Device, 46:a1:e7:6d:5c:32

在电脑上输入ifconfig命令,可以看到多了一个usb0的网络设备,这时可以通过ssh到192.168.100.1这个地址来登录NanoPi:

ssh root@192.168.100.1

在提示输入密码时,输入预设的密码fa,即可登入。

4.5 配置使用Wi-Fi

使用ssh连接NanoPi,输出以下命令配置WiFi:

wpa_passphrase YourWiFiESSID 'YourWiFiPassword' >> /etc/wpa.conf
wpa_cli -iwlan0 reconfigure

其中,YourWiFiESSID和YourWiFiPassword请替换成你要连接的无线AP名称和密码, 以后每次开机,都会自动连接该WiFi,你可以通过编辑 /etc/wpa.conf 调整无线AP的设置, 默认是通过dhcp的方式获得IP地址,如果你想更改成静态设置IP地址,可编辑 /usr/sbin/wpa_action,将其中的udhcpc调用改成使用ifconfig命令来设置。

4.5.1 扫描无线AP

用以下命令搜索周边的无线AP:

wpa_cli -iwlan0 scan
wpa_cli -iwlan0 scan_result


5 如何编译系统

5.1 安装交叉编译器

首先下载并解压编译器:

git clone https://github.com/friendlyarm/prebuilts.git
tar xvzf prebuilts/gcc/arm-linux-gcc-4.4.3.tar.gz -C /

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

export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin/:$PATH

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

. ~/.bashrc

5.2 编译U-Boot

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

git clone https://github.com/friendlyarm/uboot_nanopi.git
cd uboot_nanopi
git checkout nanopi
make nanopi_config
make

编译成功结束后您将获得u-boot.bin, 如果想马上就测试u-boot,可使用脚本fusing.sh烧写新的u-boot 到SD 卡。
假设您的 SD 卡对应设备名是/dev/sdd,以root运行以下命令:

su
./fusing.sh /dev/sdd

注意:以上操作会破坏SD卡的数据,请先进行备份。

5.3 编译Linux kernel

5.3.1 编译内核

下载内核源代码并编译

git clone https://github.com/friendlyarm/linux-4.x.y.git
cd linux-4.x.y
git checkout nanopi-v4.1.y
make nanopi_defconfig
touch .scmversion
make

NanoPi内核所属的分支是nanopi-v4.1.y,在开始编译前先切换分支,编译成功结束后,新生成内核烧写文件为 arch/arm/boot/zImage 。

5.3.2 编译内核模块

目前的内核配置会编译生成内核模块,如ipv6、netfilter,通常在编译内核时,内核模块(.ko)已经编译,如果您有新的内核模块或者内核配置有变化,则需要编译安装内核模块并打包成 kernel-modules.tgz,然后替换Rootfs下的 basefs/kernel-modules.tgz。
以root用户运行以下命令安装.ko到/tmp/nanopi-modules 。

make INSTALL_MOD_PATH=/tmp/nanopi-modules modules_install

接下来可对内核模块进行strip,然后创建压缩包。

cd /tmp/nanopi-modules/lib/
find . -name \*.ko | xargs arm-linux-strip --strip-unneeded
tar czvf kernel-modules.tgz modules/

如果想测试新编译的内核模块,也可以解压压缩包或复制modules 到已制作好的能启动NanoPi的SD卡的rootfs下的/lib 目录。 假设SD卡的rootfs已经mount到 /media/fa/NANOPI,以root 运行以下命令:

rm -rf /media/fa/NANOPI/lib/modules/
tar xzvf kernel-modules.tgz -C /media/fa/NANOPI/lib/

5.4 编译制作文件系统

下面的命令将下载文件系统源码包并编译,注意需要在root用户下编译,可用su命令切换:

git clone https://github.com/friendlyarm/rootfs_nanopi.git
cd rootfs_nanopi
git checkout nanopi
su
make && make install && make strip

编译成功结束后,将看到以下信息:

RootFS (core) successfully installed to:
   /tmp/FriendlyARM/nanopi/rootfs
 
Copyright 2015 FriendlyARM (http://www.arm9.net/)

上面的信息提示我们编译生成的文件系统存放的位置为/tmp/FriendlyARM/nanopi/rootfs,我们把它压缩成一个压缩包:

cd /tmp/FriendlyARM/nanopi
tar czvf rootfs.tgz rootfs/

5.5 使用自已编译的文件生成制作SD卡

5.5.1 重新制作SD卡系统

先下载SD卡烧写的工具包,并切换到相应master分支:

git clone https://github.com/friendlyarm/sd-fuse_nanopi.git
cd sd-fuse_nanopi
git checkout master

在sd-fuse_nanopi下有个prebuilt,用于存放SD系统运行所需的二进制文件:
Bootloader: u-boot.bin
内核命令行参数: sdenv.raw
Linux内核:zImage
文件系统压缩包: rootfs.tgz

你只需要将上面章节中编译生成的文件替换它们,就可以测试运行你所编译的系统了,替换文件后,在sd-fuse_nanopi目录下执行以下命令制作SD卡:

su
./fusing.sh /dev/sdx

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

烧写成功完成后,把SD卡放入NanoPi运行试试吧。

5.5.2 更新U-Boot环境变量

制作好的SD启动NanoPi 后,如果通过串口在U-Boot命令模式下修改了环境变量,如bootargs,现在想要把这个修改后的环境用于制作其它新的SD卡,则需要把保存在卡的U-Boot环境变量数据读出来,替换掉prebuilt 下的 sdenv.raw,然后烧写新的SD卡即可。

./readenv.sh /dev/sdd
cp sdenv.raw prebuilt/

5.5.3 关于SD卡RAW文件

由于CPU S3C2451的iROM 是从SD卡的尾部来读取Bootloader,且普通SD卡和SDHC卡的位置不同,而不同品牌或是不同容量的SD卡的大小又是不同的,因此没办法创建适应不同卡的RAW文件。
如果您有一批大小完全一致的SD卡,可使用工具如linux下的dd 读取已经制作好的SD 卡的全部数据,保存为RAW文件,然后将此文件写入其它大小相同的SD卡。
另外,由于现在的SD卡容量通常都比较大,对于8 GB的SD卡,写一个RAW文件将需要较长时间,而目前的rootfs实际只有 ~23 MB,因此直接使用脚本制作SD卡将更快。

6 扩展连接

6.1 连接使用摄像头模块

6.2 连接使用TFT LCD

6.3 连接使用Matrix入门DIY套件

7 玩转NanoPi

7.1 制作一台4.3英寸小电脑

7.2 制作无线智能小车

8 资源链接