Difference between revisions of "Smart4418"

From FriendlyELEC WiKi
Jump to: navigation, search
(Replaced content with " 查看中文")
Line 1: Line 1:
 
[[Smart4418/zh | 查看中文]]
 
[[Smart4418/zh | 查看中文]]
 +
 +
==介绍==
 +
[[File:Smart4418.jpg|thumb|frameless|500px|]]
 +
[[File:Smart44182.jpg|thumb|frameless|500px|]]
 +
[[File:Smart44183.jpg|thumb|frameless|500px|]]
 +
* Smart4418是友善之臂专门为企业用户设计的一款高性能,高集成度的四核Cortex-A9工业级核心板。它采用三星S5P4418主控芯片,运行主频可高达1.4Ghz,标配1GB DDR3内存和8GB eMMC闪存。Smart4418核心板采用了高质量镀金2.0mm间距双排针,总共有174个管脚,可完全兼容替换Smart210核心板,共用相同底板,非常方便用户升级换代。另外,三星另一款芯片S5P6818,它基于八核Cortex-A53架构,运行主频可高达1.4Ghz,与S5P4418可pin to pin完全兼容,用户可以根据自己的产品项目需求,选择更高级的Smart6818(即将推出)。
 +
 +
==资源特性==
 +
* CPU: S5P4418, 动态运行主频400Mhz--1.4GHz
 +
* PMU 电源管理:AXP228,支持软件关机和睡眠唤醒等
 +
* DDR3 RAM: 1GB
 +
* 网络: 千兆以太网接口(RTL8211E), 板载唯一MAC地址芯片
 +
* eMMC:8GB
 +
* 音频:集成音频芯片, 支持麦克风输入和耳机输出
 +
* LED:一个电源指示LED, 两个GPIO控制的LED
 +
* 其他: 板载温控电阻
 +
* PCB Size: 74x55mm,6层,沉金工艺
 +
* 供电: DC 5V, up to 1.2A
 +
* OS/Software: u-boot, Android5.1, 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电池输入
 +
 +
==管脚定义==
 +
::{| class="wikitable"
 +
|-
 +
| style="background: PaleTurquoise; color: black" colspan="4"| '''P1''' || style="background: PaleTurquoise; color: black" colspan="4"| '''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
 +
|}
 +
 +
::{| class="wikitable"
 +
|-
 +
| style="background: PaleTurquoise; color: black" colspan="4"| '''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      || AliveGPIO5      || 26      || ADC4 
 +
|-
 +
|27      || AliveGPIO3            || 28      || ADC5
 +
|-
 +
|29      ||  IO_REF_OUT,3.3V    || 30      || ADC6             
 +
|-
 +
|31      || GPIOC14/PWM2        || 32      || ADC7           
 +
|-
 +
|33      || NRESETOUT          || 34      || DGND   
 +
|}
 +
:说明
 +
::#VDD_5V:给核心板供电的电源输入脚,输入范围4.7-5.6V,推荐5V/1.2A(MAX), 通过降频降压, 可以有效降低功耗: 主频每降低200MHz, 功耗大概降低0.5W
 +
::#BOOT_CS: 启动模式选择,悬空或高电平为eMMC启动,低电平为SD启动
 +
::#NRESETIN:复位信号输入,低电平有效。此信号核心板的CPU提供复位信号,外部只需接一个按键就可以
 +
::#NRESETOUT: 复位信号输入,低电平有效。此信号核心板是的CPU输出的复位信号, 可以提供给外围电路使用
 +
::#RTC_BATT:RTC备份电池输入,直接接3V电池。核心板上电后由板子内部的3.3V给RTC供电,不上电时由备份电池供电,自动切换
 +
::#ADC1~7:CPU自带的12-Bit ADC输入,通道1~7,采集范围:0-1.8V
 +
::#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连接器
 +
::#具体外围及扩展电路请参考我们设计的底板[http://wiki.friendlyarm.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]
 +
 +
==机械尺寸==
 +
:[[File:Smart4418-dim.png|500px]]<br>
 +
:需要更详细的尺寸, 请下载dxf文件:[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/Smart210/4418_SDK/zh Smart210/4418 SDK]
 +
 +
==快速入门==
 +
===准备工作===
 +
要开启你的Smart4418开发板,请先准备好以下硬件
 +
* Smart4418核心主板+Smart210 SDK底板
 +
* 大SD卡/: Class10或以上的 8GB SDHC卡
 +
* 一个DC接口的外接电源,要求输出为5V/2A
 +
* 一台支持HDMI输入的显示器或者电视(或选购LCD配件)
 +
* 一套USB键盘鼠标,同时连接还需要USB HUB (或选购串口转接板,要PC上进行操作)
 +
* 一台电脑,需要联网,建议使用Ubuntu 14.04 64位系统
 +
 +
===制作一张带运行系统的SD卡===
 +
====快速从SD卡启动 Smart4418====
 +
首先访问[http://wiki.friendlyarm.com/wiki/nanopi2/download/ 此处的下载地址]下载需要的固件文件:<br />
 +
* 您需要准备一张4G或以上容量的SDHC卡,该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。 <br />
 +
::{| class="wikitable"
 +
|-
 +
|colspan=2|使用LCD或HDMI作来输出的用户,使用以下固件:
 +
|-
 +
|nanopi2-debian-sd4g.img.zip      || Debian系统固件                 
 +
|-
 +
|nanopi2-android-sd4g.img.zip      || Android系统固件 
 +
|-
 +
|colspan=2|烧写工具: 
 +
|-
 +
|win32diskimager.rar || Windows平台下的烧写工具,Linux系统可以用dd命令
 +
|-
 +
|}
 +
 +
*将固件和烧写工具分别解压,在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\android
 +
|-
 +
|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>
 +
 +
====关于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>
 +
 +
==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>
 +
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>
 +
启用LCD,同时取消HDMI,然后退出并保存配置,编译后即可获得支持LCD显示的uImage,用于替换SD卡boot分区下的uImage。
 +
 +
====编译内核模块====
 +
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文件。
 +
 +
==扩展连接==
 +
===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-nanopi2-01.png|frameless|500px|USB camera-01]]
 +
===Smart4418连接CMOS 500万摄像头模块===
 +
* Smart4418使用Android5.1系统,假设你已经接好LCD屏或者HDMI,进入系统后,直接点击“camera”图标,即可打开摄像头进行拍照。
 +
[[File:CMOS-camera-nanopi2.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>
 +
* 注: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、这里特别说明:目前Smart4418的内核注册了9个video设备,而opencv的官方源码定义了最多只能使用8个Camera,所以这里需要删掉一个暂时没用到的video,我们把video0设备删掉:
 +
<syntaxhighlight lang="bash">
 +
rm /dev/video0
 +
mv /dev/video9 /dev/video0
 +
</syntaxhighlight>
 +
 +
6、以下步骤需要在Smart4418上接上键盘执行:
 +
<syntaxhighlight lang="bash">
 +
./demo
 +
</syntaxhighlight>
 +
 +
你便可以看到opencv已经用起来。
 +
 +
==Smart4418 扩展TF卡分区==
 +
===Smart4418 Debian系统扩展TF卡分区===
 +
* Debian扩展分区,要在pc上执行下列操作:
 +
<syntaxhighlight lang="bash">
 +
sudo umount /dev/sdx?
 +
sudo parted /dev/sdx unit % resizepart 2 100 unit MB print
 +
sudo resize2fs -f /dev/sdx2
 +
</syntaxhighlight>
 +
* 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卡设备文件名)
 +
 +
==资源链接==
 +
:[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)]

Revision as of 09:04, 8 March 2016

查看中文

1 介绍

Smart4418.jpg
Smart44182.jpg
Smart44183.jpg
  • Smart4418是友善之臂专门为企业用户设计的一款高性能,高集成度的四核Cortex-A9工业级核心板。它采用三星S5P4418主控芯片,运行主频可高达1.4Ghz,标配1GB DDR3内存和8GB eMMC闪存。Smart4418核心板采用了高质量镀金2.0mm间距双排针,总共有174个管脚,可完全兼容替换Smart210核心板,共用相同底板,非常方便用户升级换代。另外,三星另一款芯片S5P6818,它基于八核Cortex-A53架构,运行主频可高达1.4Ghz,与S5P4418可pin to pin完全兼容,用户可以根据自己的产品项目需求,选择更高级的Smart6818(即将推出)。

2 资源特性

  • CPU: S5P4418, 动态运行主频400Mhz--1.4GHz
  • PMU 电源管理:AXP228,支持软件关机和睡眠唤醒等
  • DDR3 RAM: 1GB
  • 网络: 千兆以太网接口(RTL8211E), 板载唯一MAC地址芯片
  • eMMC:8GB
  • 音频:集成音频芯片, 支持麦克风输入和耳机输出
  • LED:一个电源指示LED, 两个GPIO控制的LED
  • 其他: 板载温控电阻
  • PCB Size: 74x55mm,6层,沉金工艺
  • 供电: DC 5V, up to 1.2A
  • OS/Software: u-boot, Android5.1, 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 AliveGPIO5 26 ADC4
27 AliveGPIO3 28 ADC5
29 IO_REF_OUT,3.3V 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. 具体外围及扩展电路请参考我们设计的底板Smart210/4418 SDK
  10. Smart4418原理图pdf

4 机械尺寸

Smart4418-dim.png
需要更详细的尺寸, 请下载dxf文件:Smart4418-1512-Dimension(dxf).zip

5 参考开发底板

Smart210/4418 SDK

6 快速入门

6.1 准备工作

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

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

6.2 制作一张带运行系统的SD卡

6.2.1 快速从SD卡启动 Smart4418

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

  • 您需要准备一张4G或以上容量的SDHC卡,该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。
使用LCD或HDMI作来输出的用户,使用以下固件:
nanopi2-debian-sd4g.img.zip Debian系统固件
nanopi2-android-sd4g.img.zip Android系统固件
烧写工具:
win32diskimager.rar Windows平台下的烧写工具,Linux系统可以用dd命令
  • 将固件和烧写工具分别解压,在Windows下插入SD卡(限4G及以上的卡),以管理员身份运行 win32diskimager 工具, 在win32diskimager工具的界面上, 选择你的SD卡盘符,选择你要烧写的系统固件,点击 Write 按钮烧写即可。
  • 当制作完成 SD 卡后,拔出 SD 卡插入 Smart4418 的 BOOT 卡槽,并把开发板上S2开关设置为“SDBOOT”模式,开机后(注意,这里需要 5V/2A 的供电),你可以看到核心板板上PWR灯常亮,LED1 灯闪烁,LED2不亮,这时你已经成功启动Smart4418。

6.2.2 烧写系统到Smart4418的eMMC

  • 下载RAW Image

用于制作烧写eMMC的SD卡的RAW Image: nanopi2-eflasher-sd4g.img.zip。并且需要下载Windows下的烧写工具: win32diskimager.rar;

  • 烧写RAW Image

在Windows下插入SDHC卡(限4G及以上的卡),以管理员身份运行Win32DiskImager,选择 Image File,选择你的SD卡盘符,点 Write 即开始写Image到SD卡。

  • 准备好烧写到eMMC的ROM

到以下链接[1]相关Android或者Debian的Images(System-image-files-for-eMMC),下载完成后,在本地解压 .tgz 压缩包,然后将解压出来的文件(不包含目录)复制到SD卡对应的文件夹/目录。

OS Image Files Copy to...
Android 5.1 android-lollipop-images.tgz
android-lollipop-images.tgz.hash.md5
boot.img
system.img
userdata.img
cache.img
partmap.txt
images\android
Debian (Jessie) debian-jessie-images.tgz
debian-jessie-images.tgz.hash.md5
boot.img
rootfs.img
partmap.txt
images\debian
  • 指定需要烧写的OS

SD卡上配置文件 images\FriendlyARM.ini 缺省是将烧写 Android,如果要烧写Debian,则只需要编辑此文件:

OS = Debian

即可,其中配置文件中”#” 开始行的是注释。

  • 烧写到Smart4418的eMMC

将制作好的SD卡插入Smart4418,连接HDMI或LCD, 把S2开关拨动到“SDBOOT”一端,拨动电源开关,板子则会自动开始烧写,你可以通过HDMI或LCD上的显示来查看烧写状态,如果看到以下内容即表示成功,否则失败。

Android is fused successfully. 
All done.

烧写成功完成后,必须按复位键或重新加电, 即可从eMMC启动。

你可以根据LED来确定烧写状态,以下是状态检查表
LED闪烁状态 系统状态
LED1心跳模式闪 (连续快闪2次)
LED2灭
加电后正常启动的状态
如果没有进行烧写则会保存为此状态
LED1和LED2交替闪烁 (0.3s) 正在烧写系统
LED1和LED2交替的呼吸效果 (1.2s) 烧写成功
LED1和LED2同时快闪 烧写失败

6.2.3 在Linux Desktop下通过脚本制作

  • 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_nanopi2.git
cd sd-fuse_nanopi2
  • 3) 以下是制作启动Android的SD卡的方法
su
./fusing.sh /dev/sdx

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

  • 4) 以下是制作启动Debian的SD卡的方法
./fusing.sh /dev/sdx debian

6.2.4 关于LCD/HDMI分辨率

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

6.3 在电脑上修改SD卡上的系统

如果你想在运行系统之前,先对系统做一些修改,可以参看本节内容,否则可以跳过本节。
将制作好SD卡插入一台运行Linux的电脑,可以挂载SD卡上的boot和rootfs等分区,对分区内容进行修改,通过在以下情况下你需要进行这些操作:
1) 你想更改Kernel Command Line参数,则可以通过sd-fuse_nanopi2/tools目录下的fw_setenv工具来操作。
查看当前的Command Line:

cd sd-fuse_nanopi2/tools
./fw_printenv /dev/sdc | grep bootargs

目前的Android 5.1.1_r6启用了SELinux,缺省模式是enforcing,你可以通过Command Line来修改它,例如:

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

即可修改为permissive模式,其中上面的XXX需要替换成原来的bootargs值。

2) 更新内核
新版本的uboot在启动时如果识别到LCD,将读取SD卡boot分区的uImage,否则将读取uImage.hdmi。
对于Android来说是同一个文件,因此直接使用新编译的uImage来替换SD卡boot分区下的文件即可。
对于Debian来说,这2个文件是不相同的,使用新编译的支持LCD的uImage直接替换SD卡boot分区的文件,如果是支持HDMI的内核,则替换uImage.hdmi。

6.4 运行Android或Debian

  • 将制作好SD卡插入Smart4418,连接HDMI,拨动S2开关到“SDBOOT”一侧,最后接电源(5V 2A)拨动开关,Smart4418会从SD卡启动。你可以看到板上PWR灯常亮,LED1灯闪烁,这说明系统已经开始启动了,同时电视上也将能看到系统启动的画面。

1)要在电视上进行操作,你需要连接USB鼠标和键盘;如果你选购了LCD配件,则可以直接使用LCD上面的触摸屏进行操作。
2)如果您需要进行内核开发,你最好选购一个串口配件,连接了串口,则可以通过终端对Smart4418进行操作。

  • 以下是串口的接法。接上串口,即可调试:

PSU-ONECOM03

  • 如果提示输入密码,Debian的root用户的默认密码是两个字母fa。

6.5 通过VNC和ssh登录Debian

如果你是祼板运行系统(既没有连接LCD也没有连接HDMI),并且烧写了带 -wifiap.img 后辍的固件,你可以使用手机,或者有无线网卡的电脑连接到Smart4418开放的 nanopi2-wifiap 无线热点(默认密码是123456789),连接成功后,无论是手机还是电脑,你可以到这里下载并安装一个名为VNC Viewer的软件,用VNC连接到Smart4418,Smart4418在使用VNC时的连接地址和端口为:192.168.8.1:5901,默认密码为:fa123456,以下是在iPhone上用VNC登录Smart4418的画面:
VNC to NanoPi2
你也可以通过 ssh -l root 192.168.8.1 命令在终端上登录,默认的root用户密码是 fa。

为了保证ssh的流畅,我们用以下命令关闭wifi的省电模式:

iwconfig wlan0 power off

7 Debian系统的使用

7.1 连接无线网络

以下针对接了HDMI 或者LCD屏的用户:

在Debian的图形界面上,点击右下角的网络图标,程序会自动搜索到附近的WiFi热点,找到你需要连接的热点,点击旁边的Properties按钮,输入WiFi密码后保存退出,再点击Connect按钮即可。

以下内容仅适用于祼板运行的用户,即没有接LCD屏也没有接HDMI(使用 -wifiap.img 后辍的固件)

系统默认处于无线热点模式,因此无法搜索和连接到无线路由器,需要先退出无线执点模式才可以,请按照如下步骤操作:

第一步:我们先把要连接的无线路由器配置好,方法如下:
使用ssh连接NanoPi2,输入以下命令查询一下WiFi的网络接口,wlan开头的就是WiFi:

ifconfig -a

默认情况下是wlan0,你需要在/etc/network/interfaces.d/目录下新建一个与网络接口同名的配置文件 ,以wlan0为例,用vi命令新建以下文件:

vi /etc/network/interfaces.d/wlan0

wlan0文件的内容如下:

auto wlan0
iface wlan0 inet dhcp
wpa-driver nl80211
wpa-ssid YourWiFiESSID
wpa-ap-scan 1
wpa-psk YourWiFiPassword

其中,YourWiFiESSID和YourWiFiPassword请替换成你要连接的无线AP名称和密码。

如果你的WiFi密码中有特殊字符,或者你不希望明文存放密码,你可以使用wpa_passphrase命令为WiFi密码生成一个密钥(psk),用密钥来代替密码 ,在NanoPi2命令行下,可输入以下命令生成密钥:

wpa_passphrase YourWiFiESSID

在提示输入密码时,输入你的WiFi密码,然后就会得到类拟以下的内容,其中psk=后面的一串字符就是WiFi的密钥:

network={
        ssid="YourWiFiESSID"
        #psk="YourWiFiPassword"
        psk=1b66ca678d6f439f7360686ff5eeb7519cdc44b76a40d96515e4eb807a6d408b
}

最后,我们将上个步骤中生成的密钥替换掉wlan0文件中的密码,如下所示:

auto wlan0
iface wlan0 inet dhcp
wpa-driver nl80211
wpa-ssid YourWiFiESSID
wpa-ap-scan 1
wpa-psk 1b66ca678d6f439f7360686ff5eeb7519cdc44b76a40d96515e4eb807a6d408b

最后一步,使用以下命令退出无线热点模式,需要使用root用户操作,turn-wifi-into-apmode在执行后会重启设备,重启后,会根据上面的配置,自动连接WIFI:

su
turn-wifi-into-apmode no

7.2 配置Wi-Fi无线热点

可以通过以下命令,将Wi-Fi切换至无线热点模式:

turn-wifi-into-apmode yes

按提示重启即可,默认的热点名称为 nanopi2-wifiap,密码为123456789。

现在,你可以在电脑上搜索并连接nanopi2-wifiap这个无线热点,连接成功后,可以通过ssh到192.168.8.1这个地址来登录NanoPi2:

ssh root@192.168.8.1

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

为了保证ssh的流畅,我们用以下命令关闭wifi的省电模式:

iwconfig wlan0 power off

WiFi工作模式可通过以下命令查询:

cat /sys/module/bcmdhd/parameters/op_mode

输出为数字2则表示当前处于无线热点模式,要切换回普通的Station模式,输入如下命令:

turn-wifi-into-apmode no

7.3 使用蓝牙传输

点击右下角的蓝牙图标,会弹出一个操作菜单,其中,
Make discoverable菜单项是打开NanoPi2蓝牙的可发现属性,这样其他设备(例如手机)就可以搜索到NanoPi2并进行配对了;
Devices... 菜单项可以打开搜索界面,主动搜索周边的蓝牙设备(注:需要这个设备先打开可发现属性);
Send Files to Device...菜单项则可以通过蓝牙发送文件到已配对的指定设备上。

7.4 安装Debian软件包

我们提供的是标准的Debian jessie系统,你可以使用apt-get等命令来安装软件包,如果板子是首次运行,需要先用以下命令更新软件包列表:

apt-get update

然后就可以安装软件包了,例如要安装ftp服务器,使用以下命令:

apt-get install vsftpd

如果软件包下载速度不理想,你可以编辑 /etc/apt/sources.list 更换一个更快的源服务器,这个网址[2]有一份完整的源镜像服务器列表,注意要选用一个带armhf架构的。


8 如何编译系统

8.1 安装交叉编译器

首先下载并解压编译器:

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

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

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

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

. ~/.bashrc

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

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

8.2 编译U-Boot

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

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-

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

fastboot flash bootloader u-boot.bin


注意:您不能直接使用dd来更新SD卡,否则有可能会导致无法正常启动。

8.3 准备mkimage

编译内核需要用到U-Boot中的工具mkimage,因此,在编译内核uImage前,您需要保证您的主机环境可以成功运行它。
你可以直接使用命令 sudo apt-get install u-boot-tools 来安装,也可以自己编译并安装:

cd uboot_nanopi2
make CROSS_COMPILE=arm-linux- tools
sudo mkdir -p /usr/local/sbin && sudo cp -v tools/mkimage /usr/local/sbin

8.4 编译Linux kernel

8.4.1 编译内核

  • 下载内核源代码
git clone https://github.com/friendlyarm/linux-3.4.y.git
cd linux-3.4.y
git checkout nanopi2-lollipop-mr1

NanoPi2内核所属的分支是nanopi2-lollipop-mr1,在开始编译前先切换分支。

  • 编译Android内核
make nanopi2_android_defconfig
touch .scmversion
make uImage
  • 编译Debian内核
make nanopi2_linux_defconfig
touch .scmversion
make uImage

编译成功结束后,新生成的内核烧写文件为 arch/arm/boot/uImage,此内核支持HDMI 720p输出,用于替换掉SD卡boot分区下的uImage.hdmi。
如果要支持HDMI 1080p,则需要修改内核配置:

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

启用LCD,同时取消HDMI,然后退出并保存配置,编译后即可获得支持LCD显示的uImage,用于替换SD卡boot分区下的uImage。

8.4.2 编译内核模块

Android包含内核模块,位于system分区的 /lib/modules/ 下,如果您有新的内核模块或者内核配置有变化,则需要重新编译。
首先编译内核源代码中的模块:

cd linux-3.4.y
make CROSS_COMPILE=arm-linux- modules

另外有2个内核模块的源代码位于Android源代码中,可使用以下命令来编译:

cd /opt/FriendlyARM/s5p4418/android
./vendor/friendly-arm/build/common/build-modules.sh

其中 “/opt/FriendlyARM/s5p4418/android” 是指Android源代码的TOP目录,使用参数“-h”可查看帮助。
编译成功结束后,会显示生成的内核模块。

8.5 编译Android

  • 搭建编译环境

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

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

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

  • 下载源代码

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

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

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

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

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

9 扩展连接

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

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

USB camera USB camera-01

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

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

CMOS camera

9.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*
  • 注:video9 是你的USB摄像头设备(注:video0到8均被其它设备占用了)

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

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

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

5、这里特别说明:目前Smart4418的内核注册了9个video设备,而opencv的官方源码定义了最多只能使用8个Camera,所以这里需要删掉一个暂时没用到的video,我们把video0设备删掉:

rm /dev/video0
mv /dev/video9 /dev/video0

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

./demo

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

10 Smart4418 扩展TF卡分区

10.1 Smart4418 Debian系统扩展TF卡分区

  • Debian扩展分区,要在pc上执行下列操作:
sudo umount /dev/sdx?
sudo parted /dev/sdx unit % resizepart 2 100 unit MB print
sudo resize2fs -f /dev/sdx2
  • 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卡设备文件名)

11 资源链接

Smart4418原理图PDF
尺寸(Smart4418-1512-Dimension(dxf).zip)