Difference between revisions of "Smart4418/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(快速从SD卡启动 Smart4418)
(updated by API)
 
(79 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
[[Smart4418|English]]
 
[[Smart4418|English]]
 
==介绍==
 
==介绍==
[[File:Smart4418.jpg|thumb|frameless|500px|]]
+
[[File:Smart441801.jpg|thumb|frameless|500px|]]
[[File:Smart44182.jpg|thumb|frameless|500px|]]
+
[[File:Smart4418-layout.jpg|thumb|frameless|500px|]]
[[File:Smart44183.jpg|thumb|frameless|500px|]]
+
[[File:Smart4418 6818SDK V2 1812-2.jpg|thumb|500px|Front]]
[[File:Smart4418-SDK-1606O.jpg|thumb|500px|Overview]]
+
[[File:Smart4418 6818SDK V2 1812-S430.jpg|thumb|500px|Overview]]
 
* Smart4418是一款高集成的高性能四核Cortex-A9核心板,由广州友善之臂设计、生产和发行销售。作为Smart210核心板的兼容替代品,它采用三星S5P4418作为主处理器,运行主频可高达1.4Ghz,并标配1GB DDR3内存和8GB eMMC高速闪存。Smart4418核心板不仅集成AXP228电源管理单元,可实现软件开关机和硬件唤醒功能,而且集成千兆以太网卡和声卡芯片,非常方便企业用户进行快速产品设计和项目开发。
 
* Smart4418是一款高集成的高性能四核Cortex-A9核心板,由广州友善之臂设计、生产和发行销售。作为Smart210核心板的兼容替代品,它采用三星S5P4418作为主处理器,运行主频可高达1.4Ghz,并标配1GB DDR3内存和8GB eMMC高速闪存。Smart4418核心板不仅集成AXP228电源管理单元,可实现软件开关机和硬件唤醒功能,而且集成千兆以太网卡和声卡芯片,非常方便企业用户进行快速产品设计和项目开发。
 
* Smart4418核心板采用了2.0间距双排针(P1,P2,P4),尺寸为74x55mm,总共引出174Pin引脚。其中P1和P2排针为标配焊接(可兼容Smart210之P1,P2),它们已经包含了大部分常用功能;P4空焊,方便有需要的用户扩展开发使用。在布局安排上,我们尽量考虑把常用的LCD模块能够固定在底板上,比如3.5“、4.3“、5“、7“、10.1“LCD等。
 
* Smart4418核心板采用了2.0间距双排针(P1,P2,P4),尺寸为74x55mm,总共引出174Pin引脚。其中P1和P2排针为标配焊接(可兼容Smart210之P1,P2),它们已经包含了大部分常用功能;P4空焊,方便有需要的用户扩展开发使用。在布局安排上,我们尽量考虑把常用的LCD模块能够固定在底板上,比如3.5“、4.3“、5“、7“、10.1“LCD等。
* 另外,若需要使用Smart4418的千兆以太网功能,请选用Smart4418/6818SDK底板。三星另一款芯片S5P6818,它基于八核Cortex-A53架构,运行主频可高达1.4Ghz,与S5P4418可pin to pin完全兼容,用户可以根据自己的产品项目需求,选择更高级的Smart6818(即将推出)。
+
* 另外,若需要使用Smart4418的千兆以太网功能,请选用Smart4418/6818SDK底板。Smart4418与[[Smart6818]]pin to pin完全兼容。
* Smart4418SDK 1606底板详情请查看[http://wiki.friendlyarm.com/wiki/index.php/Smart4418SDK Smart4418SDK 1606]。
+
* Smart4418SDK 1606底板详情请查看[http://wiki.friendlyelec.com/wiki/index.php/Smart4418SDK Smart4418SDK 1606]。
 +
* Smart4418/6818SDK V2底板详情请查看[http://wiki.friendlyelec.com/wiki/index.php/Smart4418/6818SDK_V2/zh Smart4418/6818SDK_V2]。
  
 
==资源特性==
 
==资源特性==
 
* CPU: S5P4418, 动态运行主频400Mhz--1.4GHz
 
* CPU: S5P4418, 动态运行主频400Mhz--1.4GHz
* PMU 电源管理:AXP228,支持软件关机和睡眠唤醒等
+
* 电源管理: 采用一颗ARM® Cortex®-M0单片机做电源管理, 支持动态调压, 软件关机和定时开机等功能
 
* DDR3 RAM: 1GB  
 
* DDR3 RAM: 1GB  
 
* 网络: 千兆以太网接口(RTL8211E), 板载唯一MAC地址芯片
 
* 网络: 千兆以太网接口(RTL8211E), 板载唯一MAC地址芯片
Line 19: Line 20:
 
* LED:一个电源指示LED, 两个GPIO控制的LED
 
* LED:一个电源指示LED, 两个GPIO控制的LED
 
* 其他: 板载温控电阻
 
* 其他: 板载温控电阻
* PCB Size: 74x55mm,6层,沉金工艺
+
* PCB Size: 74x55mm,8层,沉金工艺
 +
* 温度工作范围:零下30摄氏度到70摄氏度
 
* 供电: DC 5V, up to 1.2A
 
* 供电: DC 5V, up to 1.2A
* OS/Software: u-boot, Android5.1, Debian8, ubuntu-core
+
* OS/Software: u-boot, Android 7.0, Debian8, ubuntu-core
 
* 3个2.0mm排针, 共174针, 引出以下信号:
 
* 3个2.0mm排针, 共174针, 引出以下信号:
 
** USB 2.0 - Host x1, OTG x1
 
** USB 2.0 - Host x1, OTG x1
Line 141: Line 143:
 
|23      || GPIOB26    || 24      || ADC3  
 
|23      || GPIOB26    || 24      || ADC3  
 
|-
 
|-
|25      || AliveGPIO5      || 26      || ADC4   
+
|25      || GPIOC4    || 26      || ADC4   
 
|-
 
|-
 
|27      || AliveGPIO3            || 28      || ADC5
 
|27      || AliveGPIO3            || 28      || ADC5
 
|-
 
|-
|29      ||  IO_REF_OUT,3.3V     || 30      || ADC6               
+
|29      ||  PWREN_SYS     || 30      || ADC6               
 
|-
 
|-
 
|31      || GPIOC14/PWM2        || 32      || ADC7             
 
|31      || GPIOC14/PWM2        || 32      || ADC7             
Line 160: Line 162:
 
::#10/100M以太网模式: LAN_MDI1_N/P=RX-/+, LAN_MDI0_N/P=TX-/+, 也即只需4根信号线连接到带变压器的RJ45连接器
 
::#10/100M以太网模式: LAN_MDI1_N/P=RX-/+, LAN_MDI0_N/P=TX-/+, 也即只需4根信号线连接到带变压器的RJ45连接器
 
::#10/100/1000M以太网模式: LAN_MDI0_N/P~LAN_MDI3N/P, 也即需要把全部8根信号线连接到带变压器的RJ45连接器
 
::#10/100/1000M以太网模式: LAN_MDI0_N/P~LAN_MDI3N/P, 也即需要把全部8根信号线连接到带变压器的RJ45连接器
::#具体外围及扩展电路请参考我们设计的底板[http://wiki.friendlyarm.com/wiki/index.php/Smart210/4418_SDK/zh Smart210/4418 SDK]
+
::#MMC0和MMC1必须在底板上上拉,即使不连接任何设备也需要如此处理
::#* Smart4418SDK 1606底板详情请查看[http://wiki.friendlyarm.com/wiki/index.php/Smart4418SDK Smart4418SDK 1606]。
+
::#具体外围及扩展电路请参考我们设计的底板[http://wiki.friendlyelec.com/wiki/index.php/Smart210/4418_SDK/zh Smart210/4418 SDK]
::#[http://wiki.friendlyarm.com/wiki/images/0/0b/Smart4418-1512-Schematic.pdf Smart4418原理图pdf]
+
::#* Smart4418SDK 1606底板详情请查看[http://wiki.friendlyelec.com/wiki/index.php/Smart4418SDK Smart4418SDK 1606]。
 +
::#[http://wiki.friendlyelec.com/wiki/images/c/c2/Smart4418-1711-Schematic.pdf Smart4418原理图pdf]
  
 
==机械尺寸==
 
==机械尺寸==
:[[File:Smart4418-dim.png|500px]]<br>
+
:[[File:Smart4418-1608-Dimensions.png|500px]]<br>
:需要更详细的尺寸, 请下载dxf文件:[http://wiki.friendlyarm.com/wiki/images/d/df/Smart4418-1512-Dimension%28dxf%29.zip Smart4418-1512-Dimension(dxf).zip]
+
:需要更详细的尺寸, 请下载dxf文件::[http://wiki.friendlyelec.com/wiki/images/d/df/Smart4418_6818-1711_drawing%28dxf%29.zip Smart4418-1711-Drawing(dxf).zip]
  
 
==硬件设计注意事项==
 
==硬件设计注意事项==
Line 175: Line 178:
  
 
==参考开发底板==
 
==参考开发底板==
:[http://wiki.friendlyarm.com/wiki/index.php/Smart4418SDK_Comparison Smart4418SDK Comparison]
+
:[http://wiki.friendlyelec.com/wiki/index.php/Smart4418SDK_Comparison Smart4418SDK Comparison]
:[http://wiki.friendlyarm.com/wiki/index.php/Smart210/4418_SDK/zh Smart210/4418 SDK]
+
:[http://wiki.friendlyelec.com/wiki/index.php/Smart210/4418_SDK/zh Smart210/4418 SDK]
 +
:[http://wiki.friendlyelec.com/wiki/index.php/Smart4418SDK Smart4418SDK]
 +
:[http://wiki.friendlyelec.com/wiki/index.php/Smart4418/6818SDK_V2/zh Smart4418/6818SDK V2]
  
 
==快速入门==
 
==快速入门==
 
===准备工作===
 
===准备工作===
 
要开启你的Smart4418开发板,请先准备好以下硬件
 
要开启你的Smart4418开发板,请先准备好以下硬件
* Smart4418核心主板+Smart210 SDK底板
+
* Smart4418核心主板+底板
 
* 大SD卡/: Class10或以上的 8GB SDHC卡
 
* 大SD卡/: Class10或以上的 8GB SDHC卡
* 一个DC接口的外接电源,要求输出为5V/2A
+
* 一个DC接口的外接电源,要求输出为12V/2A
 
* 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
 
* 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
* 一套USB键盘鼠标,同时连接还需要USB HUB (或选购串口转接板,要PC上进行操作)
+
* 一套USB键盘鼠标(或选购串口转接板,要PC上接串口终端进行操作)
 
* 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统
 
* 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统
 
+
{{S5P4418BootFromSDCard/zh|Smart4418}}
===制作一张带运行系统的SD卡===
+
{{BurnOSToEMMC/zh|Smart4418|s5p4418-eflasher}}
====快速从SD卡启动 Smart4418====
+
{{S5PXX18MakeSDCardViaSDFusing/zh|Smart4418|sd-fuse_s5p4418}}
首先访问[http://wiki.friendlyarm.com/wiki/nanopi2/download/ 此处的下载地址]下载需要的固件文件:<br />
+
{{ResizeTFCardFS/zh|Smart4418}}
* 您需要准备一张4G或以上容量的SDHC卡,该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。 <br />
+
{{S5Pxx18HDMI/zh|Smart4418|arch/arm/plat-s5p4418/nanopi2/lcds.c}}
友善团队特意为Smart4418开发板提供了Android 5.1和Android 4.4。Android4.4是专门为企业用户定制的系统,支持4G模块、Ethernet设置。
+
{{S5Pxx18MofidyKernelCommandLineOnHostPC/zh|Smart4418|sd-fuse_s5p4418}}
::{| class="wikitable"
+
{{NanoPCStartToUse/zh|Smart4418}}
|-
+
{{FriendlyCoreGeneral/zh|Smart4418}}
|colspan=2|使用LCD或HDMI作来输出的用户,使用以下固件:
+
{{FriendlyCoreRunX11Application/zh|Smart4418}}
|-
+
{{FriendlyCoreS5Pxx18/zh|Smart4418}}
|nanopi2-debian-sd4g.img.zip      || Debian系统固件                 
+
{{UbuntuXenial-Armhf-Install-Docker/zh|Smart4418}}
|-
+
{{S5Pxx18Android/zh|Smart4418}}
|nanopi2-android-sd4g.img.zip      || Android5.1系统固件
+
{{S5P4418BuildFromSource/zh|Smart4418}}
|-
+
{{S5P4418-KernelHeaderFile/zh|Smart4418}}
|s5p4418-kitkat-sd4g-20160803.img.zip    ||  Android4.4系统固件
+
{{S5Pxx18ExternalModules/zh|Smart4418}}
|-
+
{{S5Pxx18AccessHWUnderAndroid/zh|Smart4418}}
|colspan=2|烧写工具: 
+
{{S5Pxx18ConnectToLCDModules/zh|Smart4418}}
|-
+
{{S5Pxx18HWfiles/zh|Smart4418}}
|win32diskimager.rar || Windows平台下的烧写工具,Linux系统可以用dd命令
+
{{S5P4418Resources/zh|Smart4418}}
|-
+
{{DownloadUrl/zh|Smart4418}}
|}
+
{{TechSupport/zh|Smart4418}}
 
+
{{S5P4418ChangeLog/zh}}
*将固件和烧写工具分别解压,在Windows下插入SD卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
+
*当制作完成 SD 卡后,拔出 SD 卡插入  Smart4418 的 BOOT 卡槽,并把开发板上S2开关设置为“SDBOOT”模式,开机后(注意,这里需要 5V/2A 的供电),你可以看到核心板板上PWR灯常亮,LED1 灯闪烁,LED2不亮,这时你已经成功启动Smart4418。<br />
+
 
+
====烧写系统到Smart4418的eMMC====
+
* 下载RAW Image <br />
+
用于制作烧写eMMC的SD卡的RAW Image: nanopi2-eflasher-sd4g.img.zip。并且需要下载Windows下的烧写工具: win32diskimager.rar;
+
* 烧写RAW Image <br />
+
在Windows下插入SDHC卡(限4G及以上的卡),以管理员身份运行Win32DiskImager,选择 Image File,选择你的SD卡盘符,点 Write 即开始写Image到SD卡。
+
* 准备好烧写到eMMC的ROM
+
到以下链接[http://wiki.friendlyarm.com/wiki/nanopi2/download/]相关Android或者Debian的Images(System-image-files-for-eMMC),下载完成后,在本地解压 .tgz 压缩包,然后将解压出来的文件(不包含目录)复制到SD卡对应的文件夹/目录。
+
::{| class="wikitable"
+
|-
+
|OS || Image  || Files || Copy to...
+
|-
+
|Android 5.1  || android-lollipop-images.tgz <br /> android-lollipop-images.tgz.hash.md5
+
|| boot.img <br /> system.img <br /> userdata.img <br /> cache.img <br /> partmap.txt <br />
+
|| images\android5.1
+
|-
+
||Android 4.4  || s5p4418-kitkat-sd4g-20160803.img.tgz
+
|| boot.img <br /> system.img <br /> userdata.img <br /> cache.img <br /> partmap.txt <br />
+
|| images\android4.4
+
|-
+
|Debian (Jessie) || debian-jessie-images.tgz <br />debian-jessie-images.tgz.hash.md5
+
|| boot.img <br />rootfs.img <br />partmap.txt <br />
+
|| images\debian
+
|-
+
|}
+
 
+
* 指定需要烧写的OS
+
SD卡上配置文件 images\FriendlyARM.ini 缺省是将烧写 Android,如果要烧写Debian,则只需要编辑此文件:
+
<syntaxhighlight lang="bash">
+
OS = Debian
+
</syntaxhighlight>
+
即可,其中配置文件中”#” 开始行的是注释。
+
 
+
* 烧写到Smart4418的eMMC
+
将制作好的SD卡插入Smart4418,连接HDMI或LCD, 把S2开关拨动到“SDBOOT”一端,拨动电源开关,板子则会自动开始烧写,你可以通过HDMI或LCD上的显示来查看烧写状态,如果看到以下内容即表示成功,否则失败。
+
<syntaxhighlight lang="bash">
+
Android is fused successfully.
+
All done.
+
</syntaxhighlight>
+
烧写成功完成后,必须按复位键或重新加电, 即可从eMMC启动。
+
+
;你可以根据LED来确定烧写状态,以下是状态检查表:
+
::{| class="wikitable"
+
|-
+
|LED闪烁状态 || 系统状态
+
|-
+
|LED1心跳模式闪 (连续快闪2次) <br /> LED2灭  || 加电后正常启动的状态 <br /> 如果没有进行烧写则会保存为此状态
+
|-
+
|LED1和LED2交替闪烁 (0.3s) || 正在烧写系统
+
|-
+
|LED1和LED2交替的呼吸效果 (1.2s) || 烧写成功
+
|-
+
|LED1和LED2同时快闪 || 烧写失败
+
|-
+
|}
+
 
+
====在Linux Desktop下通过脚本制作====
+
* 1) 将SD卡插入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_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>
+
 
+
====Smart 扩展TF卡分区====
+
* Debian/Ubuntu系统在启动的时候,会自动扩展SD卡分区,第一次开机时自动扩展分区和根文件系统。
+
* Android扩展分区,要在pc上执行下列操作:
+
<syntaxhighlight lang="bash">
+
sudo umount /dev/sdx?
+
sudo parted /dev/sdx unit % resizepart 4 100 resizepart 7 100 unit MB print
+
sudo resize2fs -f /dev/sdx7
+
</syntaxhighlight>
+
(注:/dev/sdx请替换为实际的SD卡设备文件名)
+
 
+
====关于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 />
+
将制作好SD卡插入一台运行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===
+
*将制作好SD卡插入Smart4418,连接HDMI,拨动S2开关到“SDBOOT”一侧,最后接电源(5V 2A)拨动开关,Smart4418会从SD卡启动。你可以看到板上PWR灯常亮,LED1灯闪烁,这说明系统已经开始启动了,同时电视上也将能看到系统启动的画面。<br />
+
1)要在电视上进行操作,你需要连接USB鼠标和键盘;如果你选购了LCD配件,则可以直接使用LCD上面的触摸屏进行操作。<br />
+
2)如果您需要进行内核开发,你最好选购一个串口配件,连接了串口,则可以通过终端对Smart4418进行操作。<br />
+
*以下是串口的接法。接上串口,即可调试:
+
[[File:PSU-ONECOM03.png|frameless|400px|PSU-ONECOM03]]
+
*如果提示输入密码,Debian的root用户的默认密码是两个字母fa。
+
 
+
===通过VNC和ssh登录Debian===
+
如果你是祼板运行系统(既没有连接LCD也没有连接HDMI),并且烧写了带 -wifiap.img 后辍的固件,你可以使用手机,或者有无线网卡的电脑连接到Smart4418开放的 nanopi2-wifiap 无线热点(默认密码是123456789),连接成功后,无论是手机还是电脑,你可以到[http://www.realvnc.com/download/ 这里]下载并安装一个名为VNC Viewer的软件,用VNC连接到Smart4418,Smart4418在使用VNC时的连接地址和端口为:192.168.8.1:5901,默认密码为:fa123456,以下是在iPhone上用VNC登录Smart4418的画面:<br />
+
[[File:iphone6-vnc-nanopi2.png|frameless|400px|VNC to NanoPi2]]
+
<br />
+
你也可以通过 ssh -l root 192.168.8.1 命令在终端上登录,默认的root用户密码是 fa。<br />
+
<br />
+
为了保证ssh的流畅,我们用以下命令关闭wifi的省电模式:
+
<syntaxhighlight lang="bash">
+
iwconfig wlan0 power off
+
</syntaxhighlight>
+
 
+
==Smart4418 扩展TF卡分区==
+
==Debian系统的使用==
+
===连接无线网络===
+
;以下针对接了HDMI 或者LCD屏的用户:
+
在Debian的图形界面上,点击右下角的网络图标,程序会自动搜索到附近的WiFi热点,找到你需要连接的热点,点击旁边的Properties按钮,输入WiFi密码后保存退出,再点击Connect按钮即可。<br /><br />
+
;以下内容仅适用于祼板运行的用户,即没有接LCD屏也没有接HDMI(使用 -wifiap.img 后辍的固件): <br />系统默认处于无线热点模式,因此无法搜索和连接到无线路由器,需要先退出无线执点模式才可以,请按照如下步骤操作:
+
第一步:我们先把要连接的无线路由器配置好,方法如下:<br />
+
使用ssh连接NanoPi2,输入以下命令查询一下WiFi的网络接口,wlan开头的就是WiFi:
+
<syntaxhighlight lang="bash">
+
ifconfig -a
+
</syntaxhighlight>
+
默认情况下是wlan0,你需要在/etc/network/interfaces.d/目录下新建一个与网络接口同名的配置文件 ,以wlan0为例,用vi命令新建以下文件:
+
<syntaxhighlight lang="bash">
+
vi /etc/network/interfaces.d/wlan0
+
</syntaxhighlight>
+
wlan0文件的内容如下:
+
<syntaxhighlight lang="bash">
+
auto wlan0
+
iface wlan0 inet dhcp
+
wpa-driver nl80211
+
wpa-ssid YourWiFiESSID
+
wpa-ap-scan 1
+
wpa-psk YourWiFiPassword
+
</syntaxhighlight>
+
其中,YourWiFiESSID和YourWiFiPassword请替换成你要连接的无线AP名称和密码。<br /><br />
+
如果你的WiFi密码中有特殊字符,或者你不希望明文存放密码,你可以使用wpa_passphrase命令为WiFi密码生成一个密钥(psk),用密钥来代替密码 ,在NanoPi2命令行下,可输入以下命令生成密钥: <br />
+
<syntaxhighlight lang="bash">
+
wpa_passphrase YourWiFiESSID
+
</syntaxhighlight>
+
在提示输入密码时,输入你的WiFi密码,然后就会得到类拟以下的内容,其中psk=后面的一串字符就是WiFi的密钥:
+
<syntaxhighlight lang="bash">
+
network={
+
        ssid="YourWiFiESSID"
+
        #psk="YourWiFiPassword"
+
        psk=1b66ca678d6f439f7360686ff5eeb7519cdc44b76a40d96515e4eb807a6d408b
+
}
+
</syntaxhighlight>
+
 
+
最后,我们将上个步骤中生成的密钥替换掉wlan0文件中的密码,如下所示:
+
<syntaxhighlight lang="bash">
+
auto wlan0
+
iface wlan0 inet dhcp
+
wpa-driver nl80211
+
wpa-ssid YourWiFiESSID
+
wpa-ap-scan 1
+
wpa-psk 1b66ca678d6f439f7360686ff5eeb7519cdc44b76a40d96515e4eb807a6d408b
+
</syntaxhighlight>
+
最后一步,使用以下命令退出无线热点模式,需要使用root用户操作,turn-wifi-into-apmode在执行后会重启设备,重启后,会根据上面的配置,自动连接WIFI:
+
<syntaxhighlight lang="bash">
+
su
+
turn-wifi-into-apmode no
+
</syntaxhighlight>
+
 
+
===配置Wi-Fi无线热点===
+
可以通过以下命令,将Wi-Fi切换至无线热点模式:<br />
+
<syntaxhighlight lang="bash">
+
turn-wifi-into-apmode yes
+
</syntaxhighlight>
+
按提示重启即可,默认的热点名称为 nanopi2-wifiap,密码为123456789。<br />
+
<br />
+
现在,你可以在电脑上搜索并连接nanopi2-wifiap这个无线热点,连接成功后,可以通过ssh到192.168.8.1这个地址来登录NanoPi2:
+
<syntaxhighlight lang="bash">
+
ssh root@192.168.8.1
+
</syntaxhighlight>
+
在提示输入密码时,输入预设的密码fa,即可登入。<br />
+
<br />
+
为了保证ssh的流畅,我们用以下命令关闭wifi的省电模式:
+
<syntaxhighlight lang="bash">
+
iwconfig wlan0 power off
+
</syntaxhighlight>
+
WiFi工作模式可通过以下命令查询:<br />
+
<syntaxhighlight lang="bash">
+
cat /sys/module/bcmdhd/parameters/op_mode
+
</syntaxhighlight>
+
输出为数字2则表示当前处于无线热点模式,要切换回普通的Station模式,输入如下命令:<br />
+
<syntaxhighlight lang="bash">
+
turn-wifi-into-apmode no
+
</syntaxhighlight>
+
 
+
===使用蓝牙传输===
+
点击右下角的蓝牙图标,会弹出一个操作菜单,其中,<br />
+
Make discoverable菜单项是打开NanoPi2蓝牙的可发现属性,这样其他设备(例如手机)就可以搜索到NanoPi2并进行配对了; <br />
+
Devices... 菜单项可以打开搜索界面,主动搜索周边的蓝牙设备(注:需要这个设备先打开可发现属性);<br />
+
Send Files to Device...菜单项则可以通过蓝牙发送文件到已配对的指定设备上。<br />
+
 
+
===安装Debian软件包===
+
我们提供的是标准的Debian jessie系统,你可以使用apt-get等命令来安装软件包,如果板子是首次运行,需要先用以下命令更新软件包列表:
+
<syntaxhighlight lang="bash">
+
apt-get update
+
</syntaxhighlight>
+
然后就可以安装软件包了,例如要安装ftp服务器,使用以下命令:
+
<syntaxhighlight lang="bash">
+
apt-get install vsftpd
+
</syntaxhighlight>
+
如果软件包下载速度不理想,你可以编辑 /etc/apt/sources.list 更换一个更快的源服务器,这个网址[http://www.debian.org/mirror/list]有一份完整的源镜像服务器列表,注意要选用一个带armhf架构的。
+
 
+
 
+
==如何编译系统==
+
 
+
===安装交叉编译器===
+
首先下载并解压编译器:
+
<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>
+
 
+
===编译U-Boot===
+
下载U-Boot源代码并编译,注意分支是nanopi2-lollipop-mr1:
+
<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来更新正在运行的NanoPi2板上SD的U-Boot,方法如下:<br />
+
1) 在电脑上先用命令 sudo apt-get install android-tools-fastboot 安装 fastboot 工具;<br />
+
2) 用串口配件连接NanoPi2和电脑,在上电启动的2秒内,在串口终端上按下回车,进入 u-boot 的命令行模式;<br />
+
3) 在u-boot 命令行模式下输入命令 fastboot 回车,进入 fastboot 模式;<br />
+
4) 用microUSB线连接NanoPi2和电脑,在电脑上输入以下命令烧写u-boot.bin:<br />
+
<syntaxhighlight lang="bash">
+
fastboot flash bootloader u-boot.bin
+
</syntaxhighlight>
+
<br />
+
注意:您不能直接使用dd来更新SD卡,否则有可能会导致无法正常启动。<br />
+
 
+
===准备mkimage===
+
编译内核需要用到U-Boot中的工具mkimage,因此,在编译内核uImage前,您需要保证您的主机环境可以成功运行它。<br />
+
你可以直接使用命令 sudo apt-get install u-boot-tools 来安装,也可以自己编译并安装:
+
<syntaxhighlight lang="bash">
+
cd uboot_nanopi2
+
make CROSS_COMPILE=arm-linux- tools
+
sudo mkdir -p /usr/local/sbin && sudo cp -v tools/mkimage /usr/local/sbin
+
</syntaxhighlight>
+
 
+
===编译Linux kernel===
+
====编译内核====
+
* 下载内核源代码
+
<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>
+
Smart4418内核所属的分支是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>
+
启用LCD,同时取消HDMI,然后退出并保存配置,编译后即可获得支持LCD显示的uImage,用于替换SD卡boot分区下的uImage。
+
 
+
====如何使用新编译的内核====
+
* 更新SD卡上的内核
+
如果您是使用SD卡启动Android,则在PC上复制为Android编译的uImage到SD卡的boot分区(即分区1,设备是/dev/sdX1)即可。<br />
+
如果您是使用SD卡启动Debian系统,则需要编译好用于HDMI的uImage后替换SD卡boot分区下的uImage.hdmi,然后编译用于LCD的uImage并替换SD卡boot分区下的uImage。
+
 
+
* 更新eMMC上Android的内核
+
如果只想单独更新eMMC上的内核来测试,则需要先正常启动板,然后mount eMMC的boot分区,使用新编译的uImage来替换原有文件,完成后reboot即可。<br />
+
从eMMC启动时可通过以下方法来更新内核:<br />
+
1) 启动完成后,需要手动mount eMMC的boot分区(设备是/dev/mmcblk0p1), 可通过串口在板上操作:<br />
+
<syntaxhighlight lang="bash">
+
su
+
mount -t ext4 /dev/block/mmcblk0p1 /mnt/media_rw/sdcard1/
+
</syntaxhighlight>
+
2) 连接USB,在PC端Ubuntu下使用adb push命令复制新编译的uImage到已mount的boot分区下; <br />
+
<syntaxhighlight lang="bash">
+
adb push uImage /mnt/media_rw/sdcard1/
+
</syntaxhighlight>
+
3) 也可以将编译好的内核复制到SD卡或U盘,然后在板上复制到boot分区下; <br />
+
4) 更新完成后,输入 reboot 命令重启即可,注意不要直接断电或按Reset键,否则可能会损坏文件。 <br />
+
 
+
* 更新eMMC上Debian的内核
+
从eMMC启动时可通过以下方法来更新内核:<br />
+
1) 启动完成后,系统通常会自动mount eMMC的boot分区(设备是/dev/mmcblk0p1), 可输入命令mount来查看; <br />
+
2) 连接网络,使用scp/ftp等方式复制新编译的uImage并替换boot分区下的文件,如果是用于HDMI的内核,则替换uImage.hdmi; <br />
+
3) 也可以将编译好的内核复制到SD卡或U盘,然后在板止复制到boot分区下; <br />
+
4) 更新完成后,输入 reboot 命令重启即可,注意不要直接断电或按Reset键,否则可能会损坏文件. <br />
+
 
+
* 使用新的内核来生成boot.img
+
如果要生成直接烧写eMMC的文件,则需要使用新编译的内核来生成boot.img,然后复制到烧写用的SD卡即可直接烧写到eMMC. <br />
+
对于Android,将新的uImage复制Android源码的device/friendly-arm/nanopi2/boot/ 下,然后编译Android即可获得新的boot.img . <br />
+
对于Debian, 则需要使用按以下方法来生成boot.img : <br />
+
1) 下载debian_nanopi2
+
<syntaxhighlight lang="bash">
+
git clone https://github.com/friendlyarm/debian_nanopi2.git
+
</syntaxhighlight>
+
2) 复制用于HDMI的uImage到debian_nanopi2/boot/uImage.hdmi, 复制用于LCD的 uImage到debian_nanopi2/boot/uImage ; <br />
+
3) 生成Debian的 boot.img
+
<syntaxhighlight lang="bash">
+
cd debian_nanopi2
+
mkdir rootfs
+
./build.sh
+
</syntaxhighlight>
+
新的 boot.img 在 debian_nanopi2/sd-fuse_nanopi2/debian 下. <br />
+
其中命令"mkdir rootfs"只是创建一个空的目录使得build.sh可以运行,因此生成的其它文件比如rootfs.img不能使用。
+
 
+
====编译内核模块====
+
Android包含内核模块,位于system分区的 /lib/modules/ 下,如果您有新的内核模块或者内核配置有变化,则需要重新编译。 <br />
+
首先编译内核源代码中的模块:
+
<syntaxhighlight lang="bash">
+
cd linux-3.4.y
+
make CROSS_COMPILE=arm-linux- modules
+
</syntaxhighlight>
+
另外有2个内核模块的源代码位于Android源代码中,可使用以下命令来编译:
+
<syntaxhighlight lang="bash">
+
cd /opt/FriendlyARM/s5p4418/android
+
./vendor/friendly-arm/build/common/build-modules.sh
+
</syntaxhighlight>
+
其中 “/opt/FriendlyARM/s5p4418/android” 是指Android源代码的TOP目录,使用参数“-h”可查看帮助。<br />
+
编译成功结束后,会显示生成的内核模块。
+
 
+
===编译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 。
+
 
+
* 下载源代码
+
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 nanopi2-lollipop-mr1
+
repo sync
+
</syntaxhighlight>
+
其中“android”是指工作目录。
+
 
+
* 编译系统
+
<syntaxhighlight lang="bash">
+
source build/envsetup.sh
+
lunch aosp_nanopi2-userdebug
+
make -j8
+
</syntaxhighlight>
+
编译成功完成后,目录 out/target/product/nanopi2/ 下包含可用于烧写的image文件。
+
::{| class="wikitable"
+
|-
+
|filename    || partition || Description 
+
|-
+
|boot.img    || boot      || -
+
|-
+
|cache.img    || cache    || -
+
|-
+
|userdata.img || userdata  || -
+
|-
+
|system.img  || system    || -
+
|-
+
|partmap.txt  || -        || 分区描述文件
+
|-
+
|}
+
 
+
* 烧写到SD卡
+
如果是采用SD卡启动Android,可复制编译生成的image文件到sd-fuse_nanopi2/android/ 下,使用脚本即可烧到到SD卡,具体请查看[[#在Linux Desktop下通过脚本制作]]。
+
 
+
* 烧写到eMMC
+
成功编译Android后,可过2种方式烧写到eMMC,分别如下:<br />
+
1) fastboot: 板子从eMMC启动后通过串口快速按任意键进入uboot命令行模式,输入命令fastboot即可启动此方式。<br />
+
连接USB线,然后PC端输入以下命令:
+
<syntaxhighlight lang="bash">
+
cd out/target/product/nanopi2
+
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>
+
2) 使用SD卡烧写 <br />
+
复制out/target/product/nanopi2下的boot.img, cache.img, userdata.img, system.img, partmap.txt到烧写用SD卡的images/android下,再次烧写即可。<br />
+
 
+
==扩展连接==
+
===Smart4418使用4G通信模块===
+
* Smart4418使用Android4.4系统,假设你已经接好4G通信模块(4G Model:ME909u-521),进入系统后,可直接使用4G通信模块。
+
[[File:4G Model-nanopc-t3.png|frameless|500px|4G Model]]
+
===Smart4418连接USB(FA-CAM202)200万摄像头模块===
+
* Smart4418使用Debian系统,假设你已接好LCD屏或者HDMI,进入系统后,点击左下角的菜单键“Other”-->xawtv9,打开USB Camera软件。进入“welcome  to  xawtv!”,选择OK即可进行拍照。
+
[[File:USB-camera-nanopi2.png|frameless|500px|USB camera]]
+
[[File:USB-camera-Smart4418-01.png|frameless|500px|USB camera-01]]
+
===Smart4418连接CMOS 500万摄像头模块===
+
* Smart4418使用Android5.1系统,假设你已经接好LCD屏或者HDMI,进入系统后,直接点击“camera”图标,即可打开摄像头进行拍照。
+
[[File:CMOS-camera-Smart4418.png|frameless|500px|CMOS camera]]
+
===Smart4418接USB摄像头使用OpenCV===
+
* OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。
+
* Smart4418跑Debian系统时,接USB Camera,可直接使用官方的OpenCV。<br>
+
1、以下介绍的是Smart4418用C++使用的OpenCV:
+
* 首先需要保证你的Smart4418能连外网,假如你有串口,直接串口登陆超级终端(或者ssh登陆)。进入系统后,输入用户名(root),密码(fa)登陆;
+
* 以下命令在超级终端执行:
+
<br>
+
<syntaxhighlight lang="bash">
+
apt-get update
+
apt-get install libcv-dev libopencv-dev
+
</syntaxhighlight>
+
 
+
2、Smart4418烧写Debian系统启动后,接上USB Camera,使用Debian系统自带的摄像头软件测试,确定摄像头能正常使用。<br>
+
3、通过终端执行命令,查看你的摄像头设备:
+
<syntaxhighlight lang="bash">
+
ls /dev/video*
+
</syntaxhighlight>
+
* 注:video0 是你的USB摄像头设备
+
 
+
4、opencv的测试代码(官方C++示例代码)在 /home/fa/Documents/opencv-demo, 使用以下命令即可编译:
+
<syntaxhighlight lang="bash">
+
cd /home/fa/Documents/opencv-demo
+
make
+
</syntaxhighlight>
+
编译成功后,得到可执行文件demo <br />
+
 
+
6、以下步骤需要在Smart4418上接上键盘执行:
+
<syntaxhighlight lang="bash">
+
./demo
+
</syntaxhighlight>
+
 
+
你便可以看到opencv已经用起来。
+
 
+
==更多OS==
+
===Ubuntu-Core with Qt-Embedded===
+
Ubuntu Core with Qt-Embedded,是一个没有X-windows环境,使用Qt-Embedded作为图形界面的轻量级Ubuntu系统,基于官方的Ubuntu core系统开发而成,非常适合于企业用户用作产品的基础OS。
+
 
+
本系统除了保留Ubuntu core的特性以外,还包括以下特性:
+
*支持电容和电阻触摸屏 (型号:S700, X710, S70)
+
*支持WiFi连接
+
*支持以太网连接
+
*支持蓝牙,已预装bluez等相关软件包
+
*支持音频播放
+
*等等
+
 
+
请访问此处 [http://wiki.friendlyarm.com/wiki/index.php/Ubuntu_Core_with_Qt-Embedded Ubuntu Core with Qt-Embedded] 了解详情。<br />
+
 
+
====如何烧写Ubuntu-Core with Qt-Embedded到eMMC====
+
1、用Debian或者现在的UbuntuCore+Qt,用win32工具做好一张从SD卡启动卡;<br />                                                                                                         
+
2、把做好的卡插进Linux系统电脑里,拷贝UbuntuCore到SD卡,还需要把2nboot也拷贝到SD卡里;<br />
+
2nboot的下载地址为:https://github.com/friendlyarm/sd-fuse_s5p6818/tree/master/prebuilt <br />
+
3、使用dd命令:使用dd命令将第2步中从电脑拷贝的镜像(ubuntu_core.img)写入到NanoPC-T2的eMMC中:
+
<syntaxhighlight lang="bash">
+
dd  if=ubuntu_core.img  of= /dev/mmcblk1
+
</syntaxhighlight>
+
4、使用dd命令将第3步中从电脑拷贝的2ndboot.bin.emmc写入到4418的emmc中:
+
<syntaxhighlight lang="bash">
+
dd if=2ndboot.bin.emmc of=/dev/mmcblk1 bs=512 seek=1
+
</syntaxhighlight>
+
 
+
===Ubuntu-Mate===
+
Ubuntu-Mate基于Ubuntu系统,使用的桌面环境是Mate-desktop,界面简洁易用,需配合LCD或者HDMI使用,可通过ssh登录。<br>
+
仅提供给进阶爱好者交流使用,不对该系统提供专业技术支持。<br>
+
* 访问此处[http://pan.baidu.com/s/1boiCWWJ 下载地址]下载系统固件。
+
* 将固件解压后,在Windows下使用友善官方提供 win32diskimager 工具烧写Ubuntu-Mate即可。
+
* 烧写完成后,将SD卡插入NanoPi 2,上电即可体验Ubuntu-Mate。
+
* 登录账号:root或fa ; 登录密码:fa
+
 
+
===Kali===
+
* 首先访问此处[http://pan.baidu.com/s/1o7i4846]的下载地址下载需要的固件文件;
+
* 准备大于8G的高速microSD卡(建议使用友善官方测试过的SD卡),并插入linux主机,通过命令sudo fdisk -l 查看该sd卡是哪个设备即/dev/sd*。
+
* 下载后把文件写到卡里,使用超级用户权限执行下列命令:
+
<syntaxhighlight lang="bash">
+
xzcat kali-2.0-nanopi2.img.xz | dd of=<YOURDEVICE> bs=1m
+
</syntaxhighlight>
+
* 烧写完成,将卡插入设备,上电即可开始体验Kali操作系统。
+
* 登录账号:root ; 登录密码:toor
+
 
+
说明:此文件系统是由Kali官方制作,我们仅提供下载链接供爱好者使用,不对此做技术支持。
+
 
+
===深度操作系统 15 ARM===
+
* 首先访问此处[http://cdimage.deepin.com/armhf/15/beta1.0/]的下载地址下载需要的固件;
+
* 用文件,解压得到16g.img是microSD卡镜像文件。
+
<syntaxhighlight lang="bash">
+
tar -xf deepin15_nanopi2_armhf_16g.tar.gz
+
</syntaxhighlight>
+
* 准备好不小于16G的microSD卡,并插入linux主机,通过命令sudo fdisk -l 查看该sd卡是哪个设备即/dev/sd*
+
* 将镜像用dd命令刻录到microSD卡,我们假设microSD卡是 /dev/sdc(请根据实际情况判断,千万不要选错设备),那么用如下命令:
+
<syntaxhighlight lang="bash">
+
sudo dd if=16g.img of=/dev/sdc
+
</syntaxhighlight>
+
 
+
(根据microSD卡的读写性能不同,烧写时间一般为40~60分钟)
+
 
+
* 烧写完成,将卡插入设备,上电即可开始体验deepin15操作系统
+
 
+
 
+
其他注意事项:
+
1.登陆用户名deepin密码deepin,root密码admin。<br>
+
 
+
2.烧写成功后,第一次启动,会有些配置文件产生,开机会比较慢。<br>
+
 
+
3.如果系统开启无线网络功能,开机会较慢,请耐心等待任务栏右下角声音和无线模块出现后再进行其他操作,后期会继续优化。<br>
+
 
+
<syntaxhighlight lang="bash">
+
    ARM版仓库:http://packages.deepin.com/armhf/
+
 
+
    NanoPi 2镜像:http://cdimage.deepin.com/armhf/15/beta1.0/
+
 
+
    NanoPi 2镜像使用方法:http://bbs.deepin.org/forum.php?mod=viewthread&tid=36670
+
 
+
    ARM移植讨论:http://bbs.deepin.org/
+
 
+
</syntaxhighlight>
+
 
+
说明:此文件系统是由深度操作系统官方制作,我们仅提供下载链接供爱好者使用,不对此做技术支持。
+
 
+
===Android-Remixos===
+
首先访问[http://pan.baidu.com/s/1qYCbqDu]下载固件;<br>
+
仅提供给进阶爱好者交流使用,不对该系统提供专业技术支持。<br>
+
* 用文件,解压得到镜像文件:
+
<syntaxhighlight lang="bash">
+
tar -xf nanopi2-android-remixos-sd4g.tar
+
</syntaxhighlight>
+
* 将固件解压后,在Windows下使用友善官方提供 win32diskimager 工具烧写Android-Remixos即可。
+
该系统支持HDMI输出,LCD显示,并且同时支持友善出品的所有4418系列开发板。
+
 
+
==资源链接==
+
:[http://wiki.friendlyarm.com/wiki/images/0/0b/Smart4418-1512-Schematic.pdf Smart4418原理图PDF]
+
:[http://wiki.friendlyarm.com/wiki/images/d/df/Smart4418-1512-Dimension%28dxf%29.zip 尺寸(Smart4418-1512-Dimension(dxf).zip)]
+
* 《创客秘籍》[http://wiki.friendlyarm.com/wiki/index.php/File:%E5%88%9B%E5%AE%A2%E7%A7%98%E7%B1%8D.pdf 创客秘籍]
+
* 《创客秘籍-02》[http://pan.baidu.com/s/1hrDu9es 创客秘籍-02]
+
* 《创客秘籍-03》[http://wiki.friendlyarm.com/wiki/index.php/File:%E5%88%9B%E5%AE%A2%E7%A7%98%E7%B1%8D-03.pdf 创客秘籍-03]
+
* S5P4418 Datasheet ([http://wiki.friendlyarm.com/wiki/images/a/a7/Pi2_SOC_DS_0.1.pdf S5P4418_Datasheet_0.1.pdf])
+
 
+
==更新日志==
+
===2016-02-29===
+
* Kernel:
+
  1) 增加了基于CPU ECID生成以太网MAC地址;
+
  2) 修复了framebuffer console刷新不及时的问题;
+
  3) 优化内核提升了系统运行的稳定性;
+
  4) 修复了PWM LED的一个bug,基于PWM LED增加了呼吸灯效果的trigger;
+
 
+
* Debian:
+
  1) 修复了hostname异常的bug;
+
  2) 缺省启用framebuffer console, 可在LCD/HDMI看到启动信息;
+
  3) 集成了设置uboot环境变量的工具fw_printenv;
+
 
+
* Android:
+
  ROM缺省启用了ffmpeg, 可支持更多的视频格式.
+
===2016-04-01===
+
* Debian:
+
  1) Debian增加了常用USB Wi-Fi和USB串口的支持;
+
  2) 修正了带声卡的板音频输出切换的问题;
+
  3) 优化内核,改进稳定性;
+
  4) 增加LVDS接口的支持(缺省未启用);
+
* Ubuntu core with Qt-Embedded系统
+
新增系统:Ubuntu Core with Qt-Embedded,这是一个没有X-windows环境,使用Qt-Embedded作为图形界面的轻量级Ubuntu系统,基于官方的Ubuntu core系统开发而成,非常适合于企业用户用作产品的基础OS。<br />
+
本系统除了保留Ubuntu core的特性以外,还包括以下特性:
+
  1) 支持电容和电阻触摸屏 (型号:S700, X710, S70)
+
  2) 支持WiFi连接
+
  3) 支持以太网连接
+
  4) 支持蓝牙,已预装bluez等相关软件包
+
  5) 支持音频播放
+
详细可参考WiKi页面:http://wiki.friendlyarm.com/wiki/index.php/Ubuntu_Core_with_Qt-Embedded/zh
+
 
+
===2016-04-19===
+
1)增加Debian/Ubuntu第一次开机时自动扩展分区和根文件系统,第一次启动时间会稍长
+
2) 改善非正常关机/重启导致的根文件系统问题;
+
3) Debian/Ubuntu Core集成原厂开源硬解播放器NxPlayerConsole,须连LCD使用。(原厂库没有源代码)
+
4) Ubuntu Core集成了OpenGL的测试程序gltest1, 完全开源
+
5)Debian/Ubuntu Core增加了USB Wi-Fi - rtl8187的支持;
+
6) Debian/Ubuntu Core系统的USB摄像头的设备修改为 /dev/video0,方便opencv
+
7) 用wpa_supplicant代替wicd来管理无线网络,使得Console下和X下的网络配置接口上保持一致
+
本次更新适用于NanoPi2, NanoPi 2 Fire, NanoPi-M2, NanoPC-T2, Smart4418
+
 
+
===2016-05-21===
+
* Android
+
1) 增加以太网设置(支持静态IP和DHCP设置);
+
2) 增加硬件访问库 libfriendlyarm-hardware.so,可用于在Android下操作串口;
+
使用方法可参考此份文档:http://www.arm9home.net/read.php?tid-82748.html。
+
在 NanoPi2/NanoPi M2/NanoPi2 Fire/NanoPC-T2 上,串口对应的设备名称如下:
+
UART2 -> 未驱动
+
UART3 -> /dev/ttyAMA2
+
UART4 -> /dev/ttyAMA3
+
3) 增加iTest应用程序,内置串口助手功能;
+
 
+
* Debian
+
1)增强了内核稳定性;
+
 
+
* Ubuntu core with Qt-Embedded
+
1)开机后显示的界面由Qt Demo换成了一个由友善之臂开发的,开源的Qt程序 (源代码位于/opt
+
目录),该程序启动时显示系统状态信息,例如CPU和内存信息,工作温度和负载等信息,
+
系统同时集成了 qmake,uic 等Qt工具的arm版本,这样你 就可以在开发板上直接生成和编译Qt源代码。
+
本次更新适用于NanoPi2, NanoPi 2 Fire, NanoPi-M2, NanoPC-T2, Smart4418
+
 
+
===2016-07-01===
+
1) 修复了Ubuntu Core下USB Wi-Fi无法加载固件的问题;
+
2) 更新了Bootloader,支持使用dd命令直接将RAW image写入eMMC并能正常启动;
+
3) 内核bug修正及提高稳定性;
+
本次更新适用于NanoPi2, NanoPi 2 Fire, NanoPi-M2, NanoPC-T2, Smart4418
+

Latest revision as of 08:15, 3 July 2024

English

Contents

1 介绍

Smart441801.jpg
Smart4418-layout.jpg
Front
Overview
  • Smart4418是一款高集成的高性能四核Cortex-A9核心板,由广州友善之臂设计、生产和发行销售。作为Smart210核心板的兼容替代品,它采用三星S5P4418作为主处理器,运行主频可高达1.4Ghz,并标配1GB DDR3内存和8GB eMMC高速闪存。Smart4418核心板不仅集成AXP228电源管理单元,可实现软件开关机和硬件唤醒功能,而且集成千兆以太网卡和声卡芯片,非常方便企业用户进行快速产品设计和项目开发。
  • Smart4418核心板采用了2.0间距双排针(P1,P2,P4),尺寸为74x55mm,总共引出174Pin引脚。其中P1和P2排针为标配焊接(可兼容Smart210之P1,P2),它们已经包含了大部分常用功能;P4空焊,方便有需要的用户扩展开发使用。在布局安排上,我们尽量考虑把常用的LCD模块能够固定在底板上,比如3.5“、4.3“、5“、7“、10.1“LCD等。
  • 另外,若需要使用Smart4418的千兆以太网功能,请选用Smart4418/6818SDK底板。Smart4418与Smart6818pin to pin完全兼容。
  • Smart4418SDK 1606底板详情请查看Smart4418SDK 1606
  • Smart4418/6818SDK V2底板详情请查看Smart4418/6818SDK_V2

2 资源特性

  • CPU: S5P4418, 动态运行主频400Mhz--1.4GHz
  • 电源管理: 采用一颗ARM® Cortex®-M0单片机做电源管理, 支持动态调压, 软件关机和定时开机等功能
  • DDR3 RAM: 1GB
  • 网络: 千兆以太网接口(RTL8211E), 板载唯一MAC地址芯片
  • eMMC:8GB
  • 音频:集成音频芯片, 支持麦克风输入和耳机输出
  • LED:一个电源指示LED, 两个GPIO控制的LED
  • 其他: 板载温控电阻
  • PCB Size: 74x55mm,8层,沉金工艺
  • 温度工作范围:零下30摄氏度到70摄氏度
  • 供电: DC 5V, up to 1.2A
  • OS/Software: u-boot, Android 7.0, Debian8, ubuntu-core
  • 3个2.0mm排针, 共174针, 引出以下信号:
    • USB 2.0 - Host x1, OTG x1
    • 视频输出/显示 - RGB Parallel I/F (24-bit), LVDS 和HDMI 1.4a
    • 视频输入 - DVP Camera interface, ITU-R BT 601/656 8-bit 和 MIPI-CSI
    • 音频输入 - 麦克风输入
    • 音频输出 - 耳机输出(带插入检测)和HDMI
    • 网络 - 10/100/1000Mbps 以太网 x1
    • ADC - CPU自带ADC, 7通道, 12-bit, 输入范围0~1.8V
    • 外围接口 - SDIO/MMC x2, SPI x2, I2C x3, UART x5, PWM x3, GPIOs x24
    • 其他 - Power按键输入, RESET输入, RESET输出, RTC电池输入

3 管脚定义

P1 P2
Pin# Name Pin# Name Pin# Name Pin# Name
1 VDD_5V 2 DGND 1 UART0_TX 2 UART0_RX
3 RTC_BATT 4 GPIOB8 3 UART1_TX 4 UART1_RX
5 NRESETIN 6 GPIOC17 5 UART2_TX 6 UART2_RX
7 MMC0_CMD 8 MMC1_CMD 7 UART3_TX 8 UART3_RX
9 MMC0_CLK 10 MMC1_CLK 9 UART1_nCTS 10 UART1_nRTS
11 MMC0_D0 12 MMC1_D0 11 CAM0_D0 12 CAM0_D1
13 MMC0_D1 14 MMC1_D1 13 CAM0_D2 14 CAM0_D3
15 MMC0_D2 16 MMC1_D2 15 CAM0_D4 16 CAM0_D5
17 MMC0_D3 18 MMC1_D3 17 CAM0_D6 18 CAM0_D7
19 MMC0_CD 20 GPIOB24 19 CAM0_PCLK 20 CAM0_VSYNC
21 PWRKEY 22 SPI1_CS/GPIOC10 21 CAM0_HYNC 22 GPIOB14
23 GPIOB28/UART4_RX 24 SPI1_MISO/GPIOC11 23 GPIOB16 24 HDMI_TX1P
25 GPIOB29/UART4_TX 26 SPI1_MOSI/GPIOC12 25 HDMI_TX0P 26 HDMI_TX1N
27 GPIOB30 28 SPI1_CLK/GPIOC9 27 HDMI_TX0N 28 HDMI_TXCP
29 GPIOC15 30 GPIOC16 29 HDMI_TX2P 30 HDMI_TXCN
31 GPIOB31 32 GPIOB18 31 HDMI_TX2N 32 HDMI_HPD
33 GPIOD1/PWM0 34 I2C0_SCL 33 I2C1_SDA 34 I2C1_SCL
35 GPIOC13/PWM1 36 I2C0_SDA 35 USB_OTG_ID 36 SPI0_CS
37 USB_HOST_D- 38 I2C2_SCL 37 USB_OTG_D- 38 SPI0_MISO
39 USB_HOST_D+ 40 I2C2_SDA 39 USB_OTG_D+ 40 SPI0_MOSI
41 LCD_B0 42 LCD_B1 41 VBUS_5V 42 SPI0_CL
43 LCD_B2 44 LCD_B3 43 LVDS_CLKP 44 GPIOB25
45 LCD_B4 46 LCD_B5 45 LVDS_CLKM 46 DGND
47 LCD_B6 48 LCD_B7 47 LVDS_Y0P 48 LAN_MDI1_N
49 LCD_G0 50 LCD_G1 49 LVDS_Y0M 50 LAN_MDI1_P
51 LCD_G2 52 LCD_G3 51 LVDS_Y1P 52 LAN_MDI0_N
53 LCD_G4 54 LCD_G5 53 LVDS_Y1M 54 LAN_MDI0_P
55 LCD_G6 56 LCD_G7 55 LVDS_Y2P 56 LINK_LED
57 LCD_R0 58 LCD_R1 57 LVDS_Y2M 58 SPEED_LED
59 LCD_R2 60 LCD_R3 59 LVDS_Y3P 60 DGND
61 LCD_R4 62 LCD_R5 61 LVDS_Y3M 62 HP_DETECT
63 LCD_R6 64 LCD_R7 63 HP-R 64 HP-L
65 LCD_VSYNC 66 LCD_HSYNC 65 LAN_MDI2_P 66 LAN_MDI3_P
67 LCD_CLK 68 LCD_DE 67 LAN_MDI2_N 68 LAN_MDI3_N
69 DGND 70 BOOT_CS 69 Mic-P 70 Mic-N
P4
Pin# Name Pin# Name
1 MIPICSI_DP0 2 GPIOD8/PPM
3 MIPICSI_DN0 4 GPIOC7
5 MIPICSI_DP1 6 GPIOC8
7 MIPICSI_DN1 8 GPIOC24
9 MIPICSI_DP2 10 GPIOC28
11 MIPICSI_DN2 12 GPIOC0
13 MIPICSI_DP3 14 GPIOC1
15 MIPICSI_DN3 16 GPIOC2
17 MIPICSI_DPCLK 18 GPIOC3
19 MIPICSI_DNCLK 20 DGND
21 GPIOB9 22 ADC1
23 GPIOB26 24 ADC3
25 GPIOC4 26 ADC4
27 AliveGPIO3 28 ADC5
29 PWREN_SYS 30 ADC6
31 GPIOC14/PWM2 32 ADC7
33 NRESETOUT 34 DGND
说明
  1. VDD_5V:给核心板供电的电源输入脚,输入范围4.7-5.6V,推荐5V/1.2A(MAX), 通过降频降压, 可以有效降低功耗: 主频每降低200MHz, 功耗大概降低0.5W
  2. BOOT_CS: 启动模式选择,悬空或高电平为eMMC启动,低电平为SD启动
  3. NRESETIN:复位信号输入,低电平有效。此信号核心板的CPU提供复位信号,外部只需接一个按键就可以
  4. NRESETOUT: 复位信号输入,低电平有效。此信号核心板是的CPU输出的复位信号, 可以提供给外围电路使用
  5. RTC_BATT:RTC备份电池输入,直接接3V电池。核心板上电后由板子内部的3.3V给RTC供电,不上电时由备份电池供电,自动切换
  6. ADC1~7:CPU自带的12-Bit ADC输入,通道1~7,采集范围:0-1.8V
  7. 10/100M以太网模式: LAN_MDI1_N/P=RX-/+, LAN_MDI0_N/P=TX-/+, 也即只需4根信号线连接到带变压器的RJ45连接器
  8. 10/100/1000M以太网模式: LAN_MDI0_N/P~LAN_MDI3N/P, 也即需要把全部8根信号线连接到带变压器的RJ45连接器
  9. MMC0和MMC1必须在底板上上拉,即使不连接任何设备也需要如此处理
  10. 具体外围及扩展电路请参考我们设计的底板Smart210/4418 SDK
  11. Smart4418原理图pdf

4 机械尺寸

Smart4418-6818 drawing.png
需要更详细的尺寸, 请下载dxf文件::Smart4418-1711-Drawing(dxf).zip

5 硬件设计注意事项

5.1 EEPROM

  • 因为Smart4418核心板上的集成了带MAC地址的EEPROM, 型号为24AA025E48T-I/OT, 接在I2C0上, 设备地址为0x51, 所以有些型号的EEPROM不能接在I2C0上, 否则会地址冲突.
  • 不能接在I2C0上的EEPROM: 24C04, 24C08, 24C16, 可以接在I2C0上的EEPROM:24C01, 24C02, 24C256
  • 关于EEPROM地址问题, 请看 http://www.onsemi.com/pub_link/Collateral/CAT24C01-D.PDF

6 参考开发底板

Smart4418SDK Comparison
Smart210/4418 SDK
Smart4418SDK
Smart4418/6818SDK V2

7 快速入门

7.1 准备工作

要开启你的Smart4418开发板,请先准备好以下硬件

  • Smart4418核心主板+底板
  • 大SD卡/: Class10或以上的 8GB SDHC卡
  • 一个DC接口的外接电源,要求输出为12V/2A
  • 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
  • 一套USB键盘鼠标(或选购串口转接板,要PC上接串口终端进行操作)
  • 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统

7.2 快速从SD卡启动

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

  • 您需要准备一张8G或以上容量的SDHC卡,该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。
Image Files
s5p4418-sd-friendlycore-xenial-4.4-armhf-YYYYMMDD.img.zip FriendlyCore系统固件 (内置Qt 5.10.0),基于Ubuntu core
s5p4418-sd-lubuntu-desktop-xenial-4.4-armhf-YYYYMMDD.img.zip LUbuntu桌面版固件,自带X Window图形界面
s5p4418-sd-friendlywrt-4.4-YYYYMMDD.img.zip FriendlyWrt系统固件 (基于OpenWrt定制)
s5p4418-sd-android7-YYYYMMDD.img.zip Android7系统固件 (支持4G LTE)
s5p4418-sd-android-kitkat-YYYYMMDD.img.zip Android4.4系统固件 (支持4G LTE)
s5p4418-sd-android-lollipop-YYYYMMDD.img.zip Android5.1系统固件
s5p4418-eflasher-lubuntu-desktop-xenial-4.4-armhf-YYYYMMDD.img.zip SD卡映象,用于将lubuntu系统烧写到eMMC
s5p4418-eflasher-friendlywrt-4.4-YYYYMMDD.img.zip SD卡映象,用于将FriendlyWrt系统烧写到eMMC
s5p4418-eflasher-android7-YYYYMMDD.img.zip SD卡映象,用于将Android7系统烧写到eMMC
s5p4418-eflasher-friendlycore-xenial-4.4-armhf-YYYYMMDD.img.zip SD卡映象,用于将friendlycore系统烧写到eMMC
s5p4418-eflasher-android-kitkat-YYYYMMDD.img.zip SD卡映象,用于将android4系统烧写到eMMC
s5p4418-eflasher-android-lollipop-YYYYMMDD.img.zip SD卡映象,用于将android5系统烧写到eMMC
Flash Utility:
win32diskimager.rar Windows utility. Under Linux users can use "dd"
  • 将固件和烧写工具分别解压,在Windows下插入SD卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
  • 当制作完成 SD 卡后,拔出 SD 卡插入 BOOT 卡槽,按住靠网口位置的boot按键 (如果没有eMMC的板子则不用按) 上电启动(注意,这里需要 5V/2A 的供电),你可以看到板上PWR灯常亮,LED1心跳闪烁,LED2不亮,这时你已经成功启动。

7.3 烧写系统到eMMC

  • 下载eflasher固件

固件文件名的格式为:s5p4418-eflasher-OSNAME-YYYYMMDD.img.zip
其中,OSNAME替换为你需要烧写的系统,例如 android、friendly-core等等;
这个固件是的一个SD卡映象,包含了一个用SD卡启动的微型Ubuntu core系统,以及eMMC安装工具EFlasher
将 s5p4418-eflasher-OSNAME-YYYYMMDD.img.zip 下载到电脑上,另外还需要下载Windows下的烧写工具: win32diskimager.rar;

  • 用eflasher固件制作SD启动卡

将固件用7z软件解压,得到.img结尾的文件,在Windows下插入SDHC卡(限8G及以上的卡),以管理员身份运行Win32DiskImager,选择 Image File载入固件,选择你的SD卡盘符,点 Write 即开始写Image到SD卡;
如果你的电脑用的是Linux系统,你也可以用 dd 命令将解压后得到的 .img 文件直接写入SD卡完成启动卡的制作;

  • 图形界面: 烧写系统到eMMC

将制作好的SD卡插入Smart4418,连接HDMI或LCD, 将开发板右边的S2开关拨到SD端,拨动电源开关,启动开发板后会看到系统选择,选择你需要烧写到eMMC的系统即可。

  • 命令行界面: 烧写系统到eMMC

将制作好的SD卡插入Smart4418,登录串口终端,或者ssh终端,输入如下命令启动EFlasher

sudo eflasher

7.4 在Linux电脑上用脚本制作启动卡

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

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

  • 2) 下载Linux下的制作脚本

git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git
cd sd-fuse_s5p4418

  • 3) 以下是制作启动Lubuntu desktop的SD卡的方法
sudo ./fusing.sh /dev/sdx lubuntu

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

  • 4) 如果只想制成一个用于量产的系统映象文件,方法如下:
sudo ./mkimage.sh lubuntu

更多内容可参考 Assembling the SD card image yourself

7.5 扩展TF卡分区

  • Debian/Ubuntu系统在启动的时候,会自动扩展SD卡分区,第一次开机时自动扩展分区和根文件系统。
  • Android扩展分区,要在pc上执行下列操作:
sudo umount /dev/sdx?
sudo parted /dev/sdx unit % resizepart 4 100 resizepart 7 100 unit MB print
sudo resize2fs -f /dev/sdx7

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

7.6 关于LCD/HDMI分辨率

系统启动时uboot会自动识别LCD,成功则会设置为该LCD的显示分辨率,失败则缺省会设置为HDMI 720P模式。
如果要修改LCD的显示分辨率,可以直接修改内核中的文件 arch/arm/plat-s5p4418/nanopi2/lcds.c , 然后重新编译内核并更新即可。
对于HDMI的显示模式,Android则是会通过EDID获得HDMI设备如电视机所支持的显示模式,然后自动选择一个合适的分辨率。如果使用的是Debian,则缺省是720P,可通过修改内核配置来切换为1080P。

7.7 在电脑上更改SD卡的启动参数

将制作好SD卡插入一台运行Linux的电脑,可以挂载SD卡上的boot和rootfs等分区,对分区内容进行修改,想更改Kernel Command Line参数,则可以通过fw_setenv工具来操作,方法如下:
先查看当前的内核启动参数:

git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git
cd sd-fuse_s5p4418/tools ./fw_printenv /dev/sdx | grep bootargs

例如要禁用Android的SELinux特性,可以执行以下命令:

./fw_setenv /dev/sdx bootargs XXX androidboot.selinux=permissive

其中上面的XXX需要替换成原来的bootargs值, /dev/sdx替换为你的SD卡设备。

7.8 运行Android或Linux

  • 将制作好SD卡插入Smart4418,连接HDMI,按住靠近网口的boot按键,最后接电源(5V 2A)拨动开关,Smart4418会从SD卡启动。你可以看到板上PWR灯常亮,LED1灯闪烁,这说明系统已经开始启动了,同时电视上也将能看到系统启动的画面。
  • 要在电视上进行操作,你需要连接USB鼠标和键盘;如果你选购了LCD配件,则可以直接使用LCD上面的触摸屏进行操作。

8 FriendlyCore的使用

8.1 介绍

FriendlyCore,是一个没有X-windows环境,基于Ubuntu core构建的系统,使用Qt-Embedded作为图形界面的轻量级系统,兼容Ubuntu系统软件源,非常适合于企业用户用作产品的基础OS。

本系统除了保留Ubuntu Core的特性以外,还包括以下特性:

  • 支持电容和电阻触摸屏 (型号:S700, X710, S70, HD702, S430, HD101, S70等友善电子推出的LCD屏)
  • 支持WiFi连接
  • 支持以太网连接
  • 支持蓝牙,已预装bluez等相关软件包
  • 支持音频播放
  • 支持Qt 5.10.0 EGLES和OpenGL ES1.1/2.0 (限S5P4418/S5P6818平台)

8.2 运行FriendlyCore

  • 对于有HDMI接口的板子,如果要在电视上进行操作,您需要连接USB鼠标和键盘。
  • 如果您需要进行内核开发,最好选购一个串口配件,连接了串口,则可以通过串口终端对开发板进行操作。

使用串口模块能有效地提升开发效率,以下是串口模块的连接方法:
接上串口后,您可以选择从串口模块的DC口或者从MicroUSB口 (如果有) 进行供电:
以NanoPi-M1为例:
PSU-ONECOM-M1.jpg
也可以使用USB转串口模块调试,请注意需要使用5V/2A电源给开发板MicroUSB供电:
以NanoPi-NEO2为例:
USB2UART-NEO2.jpg

  • FriendlyCore默认帐户:

普通用户:

   用户名: pi
   密码: pi

Root用户:

   用户名: root
   密码: fa

默认会以 pi 用户自动登录,你可以使用 sudo npi-config 命令取消自动登录。

  • 更新软件包:
$ sudo apt-get update

8.3 开发Qt应用

请参考 How to Build and Install Qt Application for FriendlyELEC Boards/zh

8.4 开机自动运行Qt示例程序

使用npi-config工具进行开启:

sudo npi-config

进入Boot Options -> Autologin -> Qt/Embedded,选择Enable然后重启即可。

8.5 扩展TF卡文件系统

第一次启动FriendlyCore系统时,系统会自动扩展文件系统分区,请耐心等待,TF卡/eMMC的容量越大,需要等待的时间越长,进入系统后执行下列命令查看文件系统分区大小:

df -h

8.6 使用蓝牙传输文件

以传输文件到手机为例进行说明,首先,将你的手机蓝牙设置为可侦测状态,然后执行以下命令开始蓝牙搜索:

hcitool scan


搜索到设备时,结果举例如下:

Scanning ...
    2C:8A:72:1D:46:02   HTC6525LVW

这表示搜索到一台名为HTC6525LVW的手机,我们记下手机名称前面的MAC地址,然后用sdptool命令查看该手机支持的蓝牙服务:

sdptool browser 2C:8A:72:1D:46:02

注:上述命令中的MAC地址请替换成手机实际的蓝牙MAC地址
这个命令会详细列出手机蓝牙所支持的协议,我们需要关心的是一个名为 OBEX Object Push 的文件传输服务,以HTC6525LVW手机为例,其显示结果如下所示:

Service Name: OBEX Object Push
Service RecHandle: 0x1000b
Service Class ID List:
  "OBEX Object Push" (0x1105)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 12
  "OBEX" (0x0008)
Profile Descriptor List:
  "OBEX Object Push" (0x1105)
    Version: 0x0100

从上面的信息可以看到,这个手机的OBEX Object Push服务的所用的频道是12, 我们需要将它传递给obexftp命令,最后发起文件传输请求的命令如下:

obexftp --nopath --noconn --uuid none --bluetooth -b 2C:8A:72:1D:46:02 -B 12 -put example.jpg

注:上述命令中的MAC地址、频道和文件名请替换成实际的

执行上述命令后,请留意手机屏幕,正常情况下手机会弹出配对和接收文件的提示,确定后就开始文件传輪了。

蓝牙常见问题:
1) 开发板上找不到蓝牙设备, 可尝试用以下命令开启蓝牙:

rfkill unblock 0

2) 提示找不到相关命令,可尝试用以下命令安装相关软件:

apt-get install bluetooth bluez obexftp openobex-apps python-gobject ussp-push

8.7 连接WiFi

无论是SD WiFi还是USB WiFi, 它们的连接方式都是一样的。正基科技的APXX系列芯片属于SD WiFi,另外系统默认也已经支持市面上众多常见的USB WiFi,已测试过的USB WiFi型号如下:

序号 型号
1 RTL8188CUS/8188EU 802.11n WLAN Adapter
2 RT2070 Wireless Adapter
3 RT2870/RT3070 Wireless Adapter
4 RTL8192CU Wireless Adapter
5 小米WiFi mt7601
6 5G USB WiFi RTL8821CU
7 5G USB WiFi RTL8812AU

目前使用 NetworkManager 工具来管理网络,其在命令行下对应的命令是 nmcli,要连接WiFi,相关的命令如下:

  • 切换到root账户
$ su root
  • 查看网络设备列表
$ nmcli dev

注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.

  • 开启WiFi
$ nmcli r wifi on
  • 扫描附近的 WiFi 热点
$ nmcli dev wifi
  • 连接到指定的 WiFi 热点
$ nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0

请将 SSID和 PASSWORD 替换成实际的 WiFi名称和密码。
连接成功后,下次开机,WiFi 也会自动连接。

更详细的NetworkManager使用指南可参考这篇文章: Use NetworkManager to configure network settings

如果你的USB WiFi无法正常工作, 大概率是因为文件系统里缺少了对应的USB WiFi固件。对于Debian系统, 可以在Debian-WiFi里找到并安装USB WiFi芯片的固件。而对于Ubuntu系统, 则可以通过下列命令安装所有的USB WiFi固件:

$ apt-get install linux-firmware

一般情况下, 各种WiFi芯片的固件都存放在/lib/firmware目录下。


8.8 连接以太网

默认插上网线开机,会自动连接并通过DHCP获取IP地址,如需要配置静态IP地址,请参考 NetworkManager 的相关文档: Use NetworkManager to configure network settings


8.9 定制命令行的欢迎信息(文字LOGO)

欢迎信息主要是这个目录下的脚本来打印的:

/etc/update-motd.d/

比如要修改 FriendlyELEC 的大字LOGO,可以修改/etc/update-motd.d/10-header 这个文件,比如要将LOGO改为HELLO,可将以下行:

TERM=linux toilet -f standard -F metal $BOARD_VENDOR

改为:

TERM=linux toilet -f standard -F metal HELLO

8.10 修改时区

例如更改为Shanghai时区:

sudo rm /etc/localtime
sudo ln -ls /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

8.11 选择系统默认的音频设备

可以通过下面的操作步骤,设置系统默认的音频设备。
可用以下命令查看系统中所有的声卡设备 (注:不同的开发板结果会有所不同):

pi@NanoPi:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: nanopi2audio [nanopi2-audio], device 0: c0055000.i2s-ES8316 HiFi ES8316 HiFi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: nanopi2audio [nanopi2-audio], device 1: c0059000.spdiftx-dit-hifi dit-hifi-1 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

可以看到,硬件上有如下声卡设备:

声卡设备 声卡序号 说明
nanopi2audio device 0 3.5mm耳机输出
nanopi2audio device 1 HDMI输出

要配置成将音频输出到3.5mm耳机接口,可修改配置文件/etc/asound.conf,修改成如下内容:

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

要配置成将音频输出到HDMI,则将上面的device 0修改为device 1。


8.12 运行X11程序

FriendlyCore系统集成了轻量级的Xorg,虽然没有窗口管理器,但是你仍然可以运行单一的X-Windows程序,例如要运行的程序是~/YourX11App,使用以下命令:

. /usr/bin/setqt5env-xcb
startx ~/YourX11App -geometry 1280x800

注意 “.” 与 /usr/bin/setqt5env-xcb 之间有一个空格,另外,-geometry后面的分辨率请更改为你的屏幕的实际分辨率。

8.13 运行 Qt 5.10.0 演示程序

FriendlyCore系统集成了Qt 5.10.0图形库,支持OpenGL硬件加速,在命令行输出以下命令,可预览Qt5演示程序,
Qt5演示程序的界面如下图所示,你可以使用触摸屏或者鼠标来操作,Qt5支持大部分FriendlyELEC在售的LCD触摸屏:

$ sudo qt5demo

S5pxx18-QtE

8.14 运行 Qt5-OpenGL示例

Run the following command

. setqt5env
cd $QTDIR
cd /examples/opengl/qopenglwidget
./qopenglwidget

更多示例可以在这里找到:
cd $QTDIR/examples/

8.15 硬解播放高清视频

FriendlyCore系统集成支持VPU加速的GStreamer 1.0多媒体开发框架, 可在命令行输入以下命令,播放1080P的演示视频:

sudo gst-player /home/pi/demo.mp4

gst-player是一个GStreamer播放器的外壳程序,上面命令等效于Gsteamer的以下命令:

sudo gst-launch-1.0 filesrc location=/home/pi/demo.mp4 ! qtdemux name=demux demux. ! queue ! faad ! audioconvert ! audioresample ! alsasink device="hw:0,DEV=1" demux. ! queue ! h264parse ! nxvideodec ! nxvideosink dst-x=0 dst-y=93 dst-w=1280 dst-h=533

8.16 连接DVP摄像头模块(CAM500B)

CAM500B是一款500万像素摄像头模块,以DVP并行信号输出,详细信息请参考Matirx-CAM500B
输入以下命令预览图像:

gst-launch-1.0 -e v4l2src device=/dev/video6 ! video/x-raw,format=I420,framerate=30/1,width=1280,height=720 ! nxvideosink

输入以下命令开始录像 (VPU硬编码):

gst-launch-1.0 -e v4l2src device=/dev/video6 ! video/x-raw,format=I420,framerate=30/1,width=1280,height=720 ! tee name=t t. \
 ! queue ! nxvideosink t. ! queue ! nxvideoenc bitrate=12000000 ! mp4mux ! \
 filesink location=result_720.mp4

8.17 电源管理: 关机和定时开机

“PMU Power Management” 特性支持 软件关机和定时开机功能.

使用方法如下:
设置100秒后自动开机 (设置的时间不得低于60秒):

$ sudo echo 100 > /sys/class/i2c-dev/i2c-3/device/3-002d/wakealarm

设置了定时开机之后,就可以用 poweroff 关机了:

$ sudo poweroff

以下命令用于取消定时开机:

$ sudo echo 0 > /sys/class/i2c-dev/i2c-3/device/3-002d/wakealarm

用以下命令查询当前的设置, 前面的是单片机当前时间,后面是定时开机时间,如果定时开机已禁止就是 disabled:

$ sudo cat /sys/class/i2c-dev/i2c-3/device/3-002d/wakealarm


需要注意的是,旧版本的硬件由于没有集成PMU所以可能没有这个功能,如果你在文件系统里没有发现这个文件节点:
/sys/class/i2c-dev/i2c-3/device/3-002d/wakealarm
那就是说明你所用的硬件不支持这个特性。

8.18 安装与使用 OpenCV 4.1.2

在新版本的 FriendlyCore 中已经预装了 OpenCV 4.1.2,无需手动安装,如需手动安装到自已的系统中,可参考以下仓库:
https://github.com/friendlyarm/install-opencv-on-friendlycore/blob/s5pxx18/README.md

运行OpenCV示例:

. /usr/bin/cv-env.sh
. /usr/bin/setqt5env-eglfs
cd /usr/local/share/opencv4/samples/python
python3 turing.py

8.19 安装与使用 Caffe

使用如下命令:

git clone https://github.com/friendlyarm/install-caffe-on-friendlycore
cd install-caffe-on-friendlycore
sudo ./install-caffe.sh

8.20 Docker在armhf系统下的安装与使用

8.20.1 安装 Docker

执行下列命令:

sudo apt-get update
sudo apt-get install docker.io

8.20.2 测试 Docker

执行下列命令运行一个简单的docker image:

git clone https://github.com/friendlyarm/debian-jessie-arm-docker
cd debian-jessie-arm-docker
./rebuild-image.sh
./run.sh

9 Android系统的使用

9.1 Android7 下使用4G模块EC20

9.1.1 连接方法

将EC20连接到底板的miniPCIe接口,以Smart4418底板为例,如下图所示:
Smartxx18-4G-EC20.jpg
连接后无需额外的配置,启动Android后就可以使用4G上网了,跟Android手机类拟。

9.2 Android4.4 下使用4G模块华为ME909u-521

(注:该模块只支持 Android4.4)

  • Smart4418使用Android4.4系统,假设你已经接好4G通信模块(4G Model:ME909u-521, 该模块支持联通FDD-LTE),进入系统后,可直接使用4G通信模块。

4G Model

替换下面路径下的 logo.bmp:

/opt/FriendlyARM/smart4418/android/device/friendlyelec/nanopi3/boot/logo.bmp
/opt/FriendlyARM/smart4418/android/device/friendlyelec/nanopi2/boot/logo.bmp

重新编译 Android 源代码。

9.4 使用fastboot命令烧写android固件

上电时在串口终端敲回车进入uboot命令行模式,然后输入以下命令:

fastboot 0

For S5P4418, PC端可使用以下命令来更新emmc:

fastboot flash partmap partmap.txt
fastboot flash 2ndboot bl1-mmcboot.bin
fastboot flash fip-loader loader-mmc.img
fastboot flash fip-secure bl_mon.img
fastboot flash fip-nonsecure bootloader.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img

For S5P6818, PC端可使用以下命令来更新emmc:

fastboot flash partmap partmap.txt
fastboot flash 2ndboot bl1-mmcboot.bin
fastboot flash fip-loader fip-loader.img 
fastboot flash fip-secure fip-secure.img 
fastboot flash fip-nonsecure fip-nonsecure.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img

9.5 Android证书

Android 5 我们缺省采用的是自己生成的证书,位于:

  vendor/friendly-arm/nanopi3/security/

Android 7 缺省采用的是:

  build/target/product/security/

9.6 Android7只连接HDMI的情况下性能优化

9.6.1 背景说明

默认情况下,驱动会初始化两个framebuffer,分别用于主显示LCD和HDMI,如果项目需求只需要使用HDMI,不需要用LCD,则可以根据本章节的步骤进行修改,修改后会将HDMI设置为主显示,这样驱动只会初始化一个framebuffer,节约资源,对UI性能和开机速度会有相应的提升。
本章节内容仅适用于 S5P6818 Android7, S5P4418修改方法类拟,只是需要调整一下相应的文件。

9.6.2 修改内核

需要修改内核dts,禁止dp_drm_lvds节点, 如下所示:

--- a/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi
+++ b/arch/arm64/boot/dts/nexell/s5p6818-nanopi3-common.dtsi
@@ -810,6 +810,7 @@
                        plane-names = "video", "rgb", "primary";
                };
                port@1 {
+                       status = "disabled";
                        reg = <1>;
                        back_color = < 0x0 >;
                        color_key = < 0x0 >;
@@ -820,7 +821,7 @@
 
 &dp_drm_lvds {
        remote-endpoint = <&lcd_panel>;
-       status = "ok";
+       status = "disabled";
 
        display-timing {
                clock-frequency = <50000000>;

编译后将获得新的 arch/arm64/boot/dts/nexell/s5p6818-nanopi3-rev*.dtb。
测试阶段可直接通过adb 更新到板子,命令如下:

adb root; adb wait-for-device; adb shell mkdir /storage/sdcard1/; adb
shell mount -t ext4 /dev/block/mmcblk0p1 /storage/sdcard1/
adb push arch/arm64/boot/dts/nexell/s5p6818-nanopi3-rev*.dtb /storage/sdcard1/

完整的固件则需要替换android7源代码目录 device/friendlyelec/nanopi3/boot 下的文件

9.6.3 修改env.conf

修改 device/friendlyelec/nanopi3/boot/env.conf 增加一行:

lcdtype     HDMI1080P60

此模式需要与android7启动后探测到的模式相同,否则会导致长时的黑屏状态,甚至无显示输出, 或者进入uboot命令行环境手工设置:

setenv lcdtype HDMI1080P60; saveenv; reset

9.6.4 修改system.prop

修改android7中 device/friendlyelec/nanopi3/system.prop

ro.sf.lcd_density=240

或其它自己认为更合适的值, 也可串口或adb环境下,wm density 240 来调整观察效果是否合适。

9.6.5 编译Android

根据wiki说明编译android 7并测试,遇到异常则请仔细检查前面的步骤

10 如何编译系统

10.1 安装交叉编译器

首先下载并解压编译器:

git clone https://github.com/friendlyarm/prebuilts.git -b master --depth 1
cd prebuilts/gcc-x64
cat toolchain-4.9.3-armhf.tar.gz* | sudo tar xz -C /

然后将编译器的路径加入到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)

10.2 编译 FriendlyCore/Lubuntu/EFlasher的内核源代码

10.2.1 编译内核

  • 下载内核源代码
git clone https://github.com/friendlyarm/linux.git -b nanopi2-v4.4.y --depth 1
cd linux

Smart4418内核所属的分支是nanopi2-v4.4.y,在开始编译前先切换分支。

  • 编译Ubuntu内核
touch .scmversion
make ARCH=arm nanopi2_linux_defconfig
make ARCH=arm

编译成功结束后,新生成的内核是 arch/arm/boot/zImage,目录arch/arm/boot/dts/下还包括新的DTB文件(s5p4418-nanopi2-rev*.dtb),用于替换掉SD卡boot分区下对应的文件。

10.2.2 Linux下使用新编译的内核

  • 更新SD卡上的内核

如果您是使用SD卡启动Ubuntu系统,则在PC上复制编译生成的zImage和DTB文件到SD卡的boot分区(即分区1,设备是/dev/sdX1)即可。

  • 更新eMMC系统上的内核

从eMMC启动时可通过以下方法来更新内核:
1) 启动完成后,系统通常会自动mount eMMC的boot分区(设备是/dev/mmcblk0p1), 可输入命令mount来查看;
2) 连接网络,使用scp/ftp等方式复制新编译的zImage和DTB文件并替换boot分区下的文件;
3) 也可以将编译好的内核复制到SD卡或U盘,然后到开发板上复制到boot分区下;
4) 更新完成后,输入 reboot 命令重启即可,注意不要直接断电或按Reset键,否则可能会损坏文件.

  • 使用新的内核来生成boot.img

请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_s5p4418

10.3 编译Android7的内核源代码

Android 7.1.2源代码已包含预先编译好的内核,如果需要进行定制,可根据以下方法编译内核。

git clone https://github.com/friendlyarm/linux.git -b nanopi2-v4.4.y --depth 1
cd linux
touch .scmversion
make ARCH=arm nanopi2_nougat_defconfig
make ARCH=arm

编译成功结束后,新生成的内核是 arch/arm/boot/zImage,目录arch/arm/boot/dts/下还包括新的DTB文件(s5p4418-nanopi2-rev*.dtb)。 如果只想调试内核,可通过 adb 来快速更新。

adb root; adb shell mkdir /storage/sdcard1/; adb shell mount -t ext4 /dev/block/mmcblk0p1 /storage/sdcard1/;
adb push arch/arm/boot/zImage arch/arm/boot/dts/s5p4418-nanopi2-rev*.dtb /storage/sdcard1/

内核开发/调试完成后,如果想生成用于烧写的boot.img,可复制内核zImage和DTB文件到Android7源代码目录 device/friendlyelec/nanopi2/boot,然后重新编译Android7。

10.4 编译 Android7/FriendlyCore/Lubuntu/EFlasher的U-Boot源代码

下载U-Boot v2016.01源代码并编译,注意分支是nanopi2-v2016.01

git clone https://github.com/friendlyarm/u-boot.git 
cd u-boot
git checkout nanopi2-v2016.01
make s5p4418_nanopi2_defconfig
make CROSS_COMPILE=arm-linux-

编译成功结束后您将获得bootloader.img,可以通过fastboot、sd-fuse_s5p4418和eflasher来更新板上的U-Boot v2016.01。
For Android7: 可复制bootloader.img到Android7源代码目录 device/friendlyelec/nanopi2/boot,然后重新编译Android7。
需要特别注意的是,不同版本的U-Boot不能交叉更新,不能使用fastboot更新现在运行的U-Boot v2014.07,也不能使用bootloader.img去替换一个ROM中的u-boot.bin,否则会导致系统无法正常启动。

10.5 编译Android7.1.2

10.5.1 搭建编译环境

搭建用于编译Android的环境,建议使用64位的Ubuntu 16.04,需要安装如下软件包:

sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zip
sudo apt-get install flex curl libncurses5-dev libssl-dev zlib1g-dev gawk minicom
sudo apt-get install openjdk-8-jdk
sudo apt-get install exfat-fuse exfat-utils device-tree-compiler liblz4-tool

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

10.5.2 下载Android7源代码

有以下两种途径获取 Android7 的源代码,都需要联网:

  • 使用网盘里的git repo压缩包

网盘下载地址: 点击进入
文件位于网盘的以下路径:sources/s5pxx18-android-7.git-YYYYMMDD.tar (YYYYMMDD表示打包的日期)
从网盘中获取的压缩包在解压之后,需要执行一下 sync.sh 脚本,会从gitlab上拉取最新的代码:

tar xvf /path/to/netdisk/sources/s5pxx18-android-7.git-YYYYMMDD.tar
cd s5pxx18-android-7
./sync.sh
  • 直接克隆git仓库

Smart4418 源代码托管在 gitlab 上,使用以下命令进行下载:

git clone https://gitlab.com/friendlyelec/s5pxx18-android-7.git -b master

由于Android7源代码较大(约8.2GB),下载可能需要较长时间且容易受网络环境的影响而中断,请耐心等待并重试。

10.5.3 开始编译

cd s5pxx18-android-7
source build/envsetup.sh
lunch aosp_nanopi2-userdebug
make -j8

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

filename partition Description
bl1-mmcboot.bin raw boot firmware
loader-mmc.img raw boot firmware
bl_mon.img raw boot firmware
bootloader.img raw uboot-v2016.01
env.conf - uboot环境变量,包含Android内核命令行参数
boot.img boot kernel zImage, DTBs; logo; Android ramdisk
cache.img cache -
userdata.img userdata -
system.img system -
partmap.txt - 分区描述文件

11 编译内核头文件安装包

以下操作在在开发板上进行:

11.1 本文适用于如下版本的固件

固件文件名: s5p4418-sd-friendlycore-xenial-4.4-armhf-YYYYMMDD.img, s5p4418-eflasher-friendlycore-xenial-4.4-armhf-YYYYMMDD.img 具体信息:

pi@NanoPC-T2:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial
pi@NanoPC-T2:~$ cat /proc/version
Linux version 4.4.172-s5p4418 (root@jensen) (gcc version 7.5.0 (ctng-1.24.0-108g-FA) ) #1 SMP PREEMPT Wed Mar 24 15:17:25 CST 2021

11.2 安装所需软件包

sudo apt-get update
sudo apt-get install -y dpkg-dev bsdtar

11.3 制作内核头文件安装包

git clone https://github.com/friendlyarm/linux -b nanopi2-v4.4.y --depth 1 kernel-s5pxx18-arm
cd kernel-s5pxx18-arm
rm -rf .git
make distclean
touch .scmversion
make CROSS_COMPILE= ARCH=arm nanopi2_linux_defconfig
alias tar=bsdtar
make CROSS_COMPILE= ARCH=arm bindeb-pkg -j4

显示如下信息表示成功:

dpkg-deb: building package 'linux-firmware-image-4.4.172-s5p4418' in '../linux-firmware-image-4.4.172-s5p4418_4.4.172-s5p4418-1_armhf
.deb'.
dpkg-deb: building package 'linux-headers-4.4.172-s5p4418' in '../linux-headers-4.4.172-s5p4418_4.4.172-s5p4418-1_armhf.deb'.
dpkg-deb: building package 'linux-libc-dev' in '../linux-libc-dev_4.4.172-s5p4418-1_armhf.deb'.
dpkg-deb: building package 'linux-image-4.4.172-s5p4418' in '../linux-image-4.4.172-s5p4418_4.4.172-s5p4418-1_armhf.deb'.
dpkg-genchanges: binary-only upload (no source code included)

11.4 安装

sudo rm -f /lib/modules/4.4.172-s5p4418/build
sudo rm -f /lib/modules/4.4.172-s5p4418/source
sudo dpkg -i ../linux-headers-4.4.172-s5p4418_4.4.172-s5p4418-1_armhf.deb

11.5 测试

以编译pf_ring模块为例, 参考文档 https://www.ntop.org/guides/pf_ring/get_started/git_installation.html.

git clone https://github.com/ntop/PF_RING.git
cd PF_RING/kernel/
make CROSS_COMPILE=

编译完成后, 使用insmod尝试加载模块:

sudo insmod ./pf_ring.ko

12 扩展连接

12.1 Smart4418连接USB(FA-CAM202)200万摄像头模块

  • Smart4418使用Debian系统,假设你已接好LCD屏或者HDMI,进入系统后,点击左下角的菜单键“Other”-->xawtv,打开USB Camera软件。进入“welcome to xawtv!”,选择OK即可进行拍照。

USB camera USB camera-01

12.2 Smart4418连接CMOS 500万摄像头模块

CAM500A 500万摄像头模块的详情请查看[1]

  • Android5.1系统,假设你已经接好LCD屏或者HDMI,进入系统后,直接点击“Camera”图标,即可打开摄像头进行拍照和录制视频。

CMOS camera

  • Debian系统集成了命令行的摄像头示例程序nanocams,登录后输入以下命令即可预览40桢然后拍照保存为指定的文件。
sudo nanocams -p 1 -n 40 -c 4 -o IMG001.jpg

更详细的命令行参数可执行命令“nanocams -h”。 如果要下载源代码,运行以下命令即可获得:

git clone https://github.com/friendlyarm/nexell_linux_platform.git
  • FriendlyCore (4.4内核)可使用以下命令:

输入以下命令预览图像:

gst-launch-1.0 -e v4l2src device=/dev/video6 ! video/x-raw,format=I420,framerate=30/1,width=1280,height=720 ! nxvideosink

输入以下命令开始录像 (VPU硬编码):

gst-launch-1.0 -e v4l2src device=/dev/video6 ! video/x-raw,format=I420,framerate=30/1,width=1280,height=720 ! tee name=t t. \
 ! queue ! nxvideosink t. ! queue ! nxvideoenc bitrate=12000000 ! mp4mux ! \
 filesink location=result_720.mp4

12.3 Smart4418接USB摄像头使用OpenCV

  • OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。
  • Smart4418跑Debian系统时,接USB Camera,可直接使用官方的OpenCV。

1、以下介绍的是Smart4418用C++使用的OpenCV:

  • 首先需要保证你的Smart4418能连外网,假如你有串口,直接串口登陆超级终端(或者ssh登陆)。进入系统后,输入用户名(root),密码(fa)登陆;
  • 以下命令在超级终端执行:


apt-get update
apt-get install libcv-dev libopencv-dev

2、Smart4418烧写Debian系统启动后,接上USB Camera,使用Debian系统自带的摄像头软件测试,确定摄像头能正常使用。

3、通过终端执行命令,查看你的摄像头设备:

ls /dev/video*
  • 注:video0 是你的USB摄像头设备

4、opencv的测试代码(官方C++示例代码)在 /home/fa/Documents/opencv-demo, 使用以下命令即可编译:

cd /home/fa/Documents/opencv-demo
make

编译成功后,得到可执行文件demo

5、以下步骤需要在Smart4418上接上键盘执行:

./demo

你便可以看到opencv已经用起来。

12.4 串口扩展GPS模块

  • Matrix-GPS是一款体积小巧,性能优越的GPS定位模块,适用于导航仪、四轴飞行器定位等应用场景。
  • Matrix-GPS模块采用串口通讯,Smart4418上电进入系统后,在终端命令行执行以下命令,或者点击图标“xgps”,即可进行搜星定位功能。
$su - fa -c "DISPLAY=:0 xgps 127.0.0.1:9999"
  • 或者,在debian界面上打开终端 LXTerminal ,输入 xgps 回车也可以打开GPS功能。

串口扩展模块的详情请查看点击查看
参考下图连接模块Matrix-GPS和Smart4418:
GPS_NanoPC-T2

连接说明:

Matrix-GPS Smart4418
RXD Pin11
TXD Pin12
5V Pin29
GND Pin30

13 在Android下访问硬件资源

友善电子开发了一个名为libfriendlyarm-things.so的函数库,用于Android应用程序访问开发板上的硬件资源,该函数库基于Android-NDK技术开发,提供便利的硬件访问接口,开发者无需掌握过多的嵌入式知识便可使用,有效提高开发进度。

目前支持的硬件设备包括:

  • Serial Port
  • PWM
  • EEPROM
  • ADC
  • LED
  • LCD 1602 (I2C)
  • OLED (SPI)


支持的接口包括:

  • GPIO
  • Serial Port
  • I2C
  • SPI


详情使用说明可参考以下网址:

14 支持LCD型号

  • Android

Smart4418跑Android系统目前支持的LCD型号为友善出品的:S430、S700、S702、HD700、HD702、HD101、X710电容屏。

  • FriendlyCore & Lubuntu Desktop

Smart4418目前支持的LCD型号为友善出品的:S430、S700、S702、HD700、HD702、HD101、X710电容屏;
支持的电阻屏为友善出品的:W35B、H43、P43、S70、Matrix - 2'8 SPI Key TFT 电阻屏。
以上所有LCD屏的详细资料均可在维基首页查看:LCDModules

15 原理图,Datasheet和尺寸图

16 资源链接

16.1 开发资料

16.2 创客秘籍及开发教程

17 源代码和烧写文件的下载地址

18 技术支持

If you have any further questions please visit our forum http://www.friendlyarm.com/Forum/ and post a message or email us at techsupport@friendlyarm.com. We will endeavor to get back to you as soon as possible.

19 更新日志

19.1 日期 2023-01-09

19.1.1 FriendlyCore更新说明:

  • 优化了开机服务

19.2 日期 2020-10-26

  • FriendlyCore, Lubuntu更新如下:

修正蓝牙稳定性问题

19.3 日期 2019-12-28

  • eflasher更新如下:

1) 支持只烧写部分文件,例如仅更新emmc内的内核和uboot
2) 在界面上增加禁用overlay filesystem选项
3) 增加命令行参数,方便脚本调用,可以实现无交互的一键安装
4) 修正备份与恢复镜像后,不同设备会出现相同mac地址的问题
5) UI界面现在可以配置标题,隐藏界面菜单与按钮

19.4 日期 2019-11-26

  • FriendlyCore:

预装 OpenCV 4.1.2

19.5 日期 2019-11-14

  • 新系统 FriendlyWrt:

推出完全开源的FriendlyWrt路由器系统, 基于官方OpenWrt定制,详情可查看:http://wiki.friendlyelec.com/wiki/index.php/How_to_Build_FriendlyWrt

  • FriendlyCore, Lubuntu更新如下:

1)增加了新的4.3寸屏YZ43的支持
2)编译bcmdhd为模块,方便加载模块时传递参数以及定制

  • Android7更新如下:

1)增加了新的4.3寸屏YZ43的支持
2)优化Android 7系统下使用HD900屏幕与S702屏幕时的触摸与按键体验

19.6 日期 2019-10-18

  • Android7 与 FriendlyCore, Lubuntu更新如下:

修正音频播放在某些情况下可能会出现杂音的问题。

19.7 日期 2019-09-30

  • Android7 更新如下:

1)增加Android硬件访问库FriendlyThing的支持,支持GPIO、PWM、RTC、串口和看门狗等硬件资源的访问,提供开源demo
2) 增加摄像头 CAM500B (OV5640) 的支持
3) 增加 LCD-W500 (800x480) 的支持
4) 修正 LCD-S430 的兼容性问题

  • FriendlyCore, Lubuntu 更新如下:

1) 内核版本更新到 v4.4.172,与Android 7内核保持一致
2) 增加Docker的支持, 支持32bit与64bit文件系统 (使用方法请在具体产品的wiki页面搜索docker)
3) 内核配置项进行了优化,启用更多特性与设备驱动

19.8 日期 2019-07-18

  • 新系统 Android 7.1.2

1) 推出新的系统 Android 7.1.2, 特性与旧版本的Android 5基本保持一致,支持4G,WiFi,以太网,蓝牙等
2) 内核版本为 4.4.172
3) 已知问题:摄像头暂时还不能工作

  • Android/FriendlyCore/Lubuntu 更新:

1) 修复某些情况下HD101B无法触摸的问题
2) 修复Power key的GPIO配置
3) 解决音量过小的问题:播放时DAC的音量由 -20dB 修改为 -6dB
4) 集成了驱动模块(rtl8821CU.ko, rtl88XXau.ko)以增加更多型号的USB Wi-Fi支持

  • 仅适用于Lubuntu的更新:

1) 修改Lubuntu的Power key行为为(不弹出窗口)直接关机
2) 集成脚本xrotate.sh用于简化屏幕旋转设置 (注:屏幕旋转会损失性能)

  • 仅适用于NanoPC T2,Smart4418的更新:

支持从板载EEPROM中读取以太网Mac地址,仅支持以下系统:FriendlyCore, Lubuntu, Android7

19.9 日期 2019-06-25

Linux(Ubuntu 16.04/18.04) 全面采用 OverlayFS,以增强文件系统的稳定性

19.10 日期 2019-06-03

1) 配置LED1为心跳模式
2) 修复HDMI 1080P可能在某些情况下无显示的问题
3)Linux下修复无法安装 mysql 的问题
4)修复lubuntu下1-wire触摸电阻屏无法使用的问题

19.11 日期 2019-01-24

1) 增加新的LCD型号HD702V的支持
2) 优化Linux下Qt5的字体

19.12 日期 2018-12-17

  • Android5 更新如下:

1) 增加4G网络的支持,支持模块的型号为:Quectel EC20
2) 增加音频输出设置,可设置默认输出到耳机或者HDMI
3) 在系统Shutdown时,同步关闭一线触摸屏的背光

  • FriendlyCore更新如下:

1) 增加OV5640摄像头支持
2) 更新BL1以提高系统启动的稳定性

  • Lubuntu更新如下:

1) 增加chromium-browser浏览器,支持网页硬解播放, 支持WebGL
2) 将音频输出通道默认设置为HDMI (可通过/etc/asound.conf更改)
3) 更新BL1以提高系统启动的稳定性
4) 修正前一版本中存在的一些关于软件包报错的issue
5) 调整DPMS设置,默认关闭自动休眠

19.13 日期 2018-09-06

  • 增加10.1寸屏 HD101B 的支持
  • 提高一线屏识别的可靠性

19.14 日期 2018-08-11

FriendlyCore:

Android5:

  • 增加永不睡眠的设置选项

19.15 日期 2018-03-24

  • 修正只连接HDMI的情况下开机没图像显示的问题
  • 增加蓝牙的支持

以上更新适用于所有4.4内核的系统,包括FriendlyCore和Lubuntu。

19.16 日期 2017-06-13

Linux, Android系统:

  • 改善了整体系统稳定性;

Android系统:

  • 提升Android下ov5640拍照的稳定性;

19.17 日期 2017-04-18

Ubuntu-Core系统更新如下:

  • 修改了登录欢迎界面,当用户登录时会打印系统的基本状态信息;
  • 增加 npi-config 工具,npi-config是一个命令行下的系统配置工具,可以对系统进行一些初始化的配置,可配置的项目包括:用户密码、系统语言、时区、Hostname、SSH开关、自动登录选项等,在命令行执行以下 sudo npi-config 即可进入;
  • 预装NetworkManager作为网络管理工具;
  • 新增pi用户,并配置为自动登录,自动登录特性可以使用npi-config工具配置;

19.18 日期 2017-03-08

1) 启用UART2
2) 增加HD101B屏幕的支持
3) Android4.4和Android5增加硬件访问库,具体可参考:[3]
4) 修正S430屏在Android4.4下的闪退问题

19.19 日期 2017-02-09

1) 在Ubuntu Core和Debian系统中 增加7寸电阻屏 S70B 的支持
2) 调整了 eFlasher Rom 的分区大小,将根分区调整为 1GB

19.20 日期 2016-11-17

增加H43屏的支持:
1) 支持s5p4418与s5p6818平台的开发板
2) OS方面仅支持Debian 和 Ubuntu Core系统,不支持Android

19.21 日期 2016-09-02

1) Debian 和 Ubuntu Core集成了CAM500A(ov5640)摄像头的demo程序(nanocams);
2) 更新了Android 串口访问的程序,下载源代码:

git clone https://github.com/friendlyarm/android_SerialPortDemo.git

以前下载过的,用git pull命令更新一下。
内有详细说明,包括eclipse编译、打包成apk,对apk重新签名以获取system权限、关闭selinux等说明文档: <<SerialPortDemo-manual.pdf>>;
本次更新适用于NanoPi2, NanoPi 2 Fire, NanoPi-M2, NanoPC-T2, Smart4418

19.22 日期 2016-08-20

1) 推出Android4.4固件(s5p4418-kitkat-sd4g-20160803.img.zip) 和源码,Android4.4是专门为企业用户定制,并且支持4G通讯模块,即插即用;
2) 推出一键烧写系统的固件s5p4418-eflasher-sd8g-xxx-full.img,直接下载固件回来使用LCD即可一键烧写系统;
本次更新适用于NanoPi2, NanoPi 2 Fire, NanoPi-M2, NanoPC-T2, Smart4418

19.23 日期 2016-07-01

1) 修复了Ubuntu Core下USB Wi-Fi无法加载固件的问题;
2) 更新了Bootloader,支持使用dd命令直接将RAW image写入eMMC并能正常启动;
3) 内核bug修正及提高稳定性;
本次更新适用于NanoPi2, NanoPi 2 Fire, NanoPi-M2, NanoPC-T2, Smart4418

19.24 日期 2016-05-21

  • Android

1) 增加以太网设置(支持静态IP和DHCP设置);
2) 增加硬件访问库 libfriendlyarm-things.so,可用于在Android下操作串口;
使用方法可参考此份文档:http://www.arm9home.net/read.php?tid-82748.html。
在 NanoPi2/NanoPi M2/NanoPi2 Fire/NanoPC-T2 上,串口对应的设备名称如下:
UART2 -> 未驱动
UART3 -> /dev/ttyAMA2
UART4 -> /dev/ttyAMA3
3) 增加iTest应用程序,内置串口助手功能;
注意:运行此串口程序,需要使用system权限。

  • Debian

1)增强了内核稳定性;

  • Ubuntu core with Qt-Embedded

1)开机后显示的界面由Qt Demo换成了一个由友善之臂开发的,开源的Qt程序 (源代码位于/opt 目录),该程序启动时显示系统状态信息,例如CPU和内存信息,工作温度和负载等信息, 系统同时集成了 qmake,uic 等Qt工具的arm版本,这样你 就可以在开发板上直接生成和编译Qt源代码。
本次更新适用于NanoPi2, NanoPi 2 Fire, NanoPi-M2, NanoPC-T2, Smart4418

19.25 日期 2016-04-19

1)增加Debian/Ubuntu第一次开机时自动扩展分区和根文件系统,第一次启动时间会稍长
2) 改善非正常关机/重启导致的根文件系统问题;
3) Debian/Ubuntu Core集成原厂开源硬解播放器NxPlayerConsole,须连LCD使用。(原厂库没有源代码)
4) Ubuntu Core集成了OpenGL的测试程序gltest1, 完全开源
5)Debian/Ubuntu Core增加了USB Wi-Fi - rtl8187的支持;
6) Debian/Ubuntu Core系统的USB摄像头的设备修改为 /dev/video0,方便opencv
7) 用wpa_supplicant代替wicd来管理无线网络,使得Console下和X下的网络配置接口上保持一致
本次更新适用于NanoPi2, NanoPi 2 Fire, NanoPi-M2, NanoPC-T2, Smart4418


19.26 日期 2016-04-01

  • Debian:

1) Debian增加了常用USB Wi-Fi和USB串口的支持;
2) 修正了带声卡的板音频输出切换的问题;
3) 优化内核,改进稳定性;
4) 增加LVDS接口的支持(缺省未启用);

  • Ubuntu core with Qt-Embedded系统

新增系统:Ubuntu Core with Qt-Embedded,这是一个没有X-windows环境,使用Qt-Embedded作为图形界面的轻量级Ubuntu系统,基于官方的Ubuntu core系统开发而成,非常适合于企业用户用作产品的基础OS。
本系统除了保留Ubuntu core的特性以外,还包括以下特性:
1) 支持电容和电阻触摸屏 (型号:S700, X710, S70)
2) 支持WiFi连接
3) 支持以太网连接
4) 支持蓝牙,已预装bluez等相关软件包
5) 支持音频播放
详细可参考WiKi页面:http://wiki.friendlyelec.com/wiki/index.php/Ubuntu_Core_with_Qt-Embedded/zh


19.27 日期 2016-02-29

  • Kernel:

1) 增加了基于CPU ECID生成以太网MAC地址;
2) 修复了framebuffer console刷新不及时的问题;
3) 优化内核提升了系统运行的稳定性;
4) 修复了PWM LED的一个bug,基于PWM LED增加了呼吸灯效果的trigger;

  • Debian:

1) 修复了hostname异常的bug;
2) 缺省启用framebuffer console, 可在LCD/HDMI看到启动信息;
3) 集成了设置uboot环境变量的工具fw_printenv;

  • Android:

ROM缺省启用了ffmpeg, 可支持更多的视频格式.

19.28 日期 2015-12-01

  • 推出新的Android 5.1.1_r6,源代码已推送到 https://github.com/friendlyarm
  • 4.2.1 简易方法制作: 新的固件已支持LCD检测,因此原来分别支持LCD和HDMI的固件已合并为一个固件。
  • 4.3 在电脑上修改SD卡上的系统: 部分内容只适应于旧版本固件,标记为删除状态。
  • 6 如何编译系统: 编译时源代码分支更新为 nanopi2-lollipop-mr1。
  • 6.4.2 编译内核模块: 增加了如何编译支持LCD显示的启动Debian的uImage。