Difference between revisions of "Smart4418"
(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
Contents
1 介绍
- 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
- 说明
- 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连接器
- 具体外围及扩展电路请参考我们设计的底板Smart210/4418 SDK
- Smart4418原理图pdf
4 机械尺寸
- 需要更详细的尺寸, 请下载dxf文件:Smart4418-1512-Dimension(dxf).zip
5 参考开发底板
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.md5boot.img
system.img
userdata.img
cache.img
partmap.txt
images\android Debian (Jessie) debian-jessie-images.tgz
debian-jessie-images.tgz.hash.md5boot.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进行操作。
- 以下是串口的接法。接上串口,即可调试:
- 如果提示输入密码,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的画面:
你也可以通过 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即可进行拍照。
9.2 Smart4418连接CMOS 500万摄像头模块
- Smart4418使用Android5.1系统,假设你已经接好LCD屏或者HDMI,进入系统后,直接点击“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卡设备文件名)