Difference between revisions of "SOM-4418/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(updated by API)
(updated by API)
Line 691: Line 691:
 
{{S5PXX18MakeSDCardViaSDFusing/zh|SOM-4418|sd-fuse_s5p4418}}
 
{{S5PXX18MakeSDCardViaSDFusing/zh|SOM-4418|sd-fuse_s5p4418}}
 
{{ResizeTFCardFS/zh|SOM-4418}}
 
{{ResizeTFCardFS/zh|SOM-4418}}
{{S5Pxx18HDMI/zh|SOM-4418|arch/arm/plat-s5p4418/nanopi2/lcds.c}}
 
 
{{S5Pxx18MofidyKernelCommandLineOnHostPC/zh|SOM-4418|sd-fuse_s5p4418}}
 
{{S5Pxx18MofidyKernelCommandLineOnHostPC/zh|SOM-4418|sd-fuse_s5p4418}}
 
{{NanoPCStartToUse/zh|SOM-4418}}
 
{{NanoPCStartToUse/zh|SOM-4418}}

Revision as of 02:54, 5 September 2023

English

Contents

1 介绍

Overview
Front
Back
  • SOM-4418是基于三星四核Cortex-A9 S5P4418 SoC设计的核心板, 主频高达1.4GHz,具有8G eMMC, 1GB 32bit-DDR3内存, 集成千兆以太网和音频IC。
  • SOM-4418具有LVDS和RGB-LCD显示接口, 支持电阻触摸和电容触摸。
  • SOM-4418也具有其它常用接口,如USB HOST, UART, I2C, SPI, PWM, GPIO等。

2 硬件特性

  • SoC:Samsung S5P4418 Quad Core Cortex-A9 with dynamic frequency scaling up to 1.4G Hz
  • PMU Power Management: Implemented by an MCU, support solftware power-off, and RTC alarm power-on functions
  • System Memory:1GB 32bit DDR3 RAM
  • eMMC:8GB
  • Ethernet:Gbps Ethernet Port (RTL8211E) with unique MAC, support WOL(Wake On Lan)
  • Video Input: MIPI-CSI
  • Video Output: HDMI / LVDS / LCD
  • Audio: Build in Codec, 2-Chanel headphone output, one Microphone input
  • USB: 4 x USB 2.0 Host(Via USB Hub), 1 x USB 2.0 OTG
  • GPIO: 13 x GPIOs, 3 x I2Cs, 1 x SPI, 5 x UARTs, 3 x PWMs, 2 x SDIOs
  • LED: 1 x power LED , 1 x SYS LED
  • Other Resource: 1 x onboard thermistor, RTC
  • Power: DC 5V/1A
  • Heat Sink: Aluminum heat sink
  • PCB: Six Layer, ENIG
  • PCB Dimension: 67.7 mm x 40 mm
  • Working Temperature: -40℃ to 70℃

3 Software Features

4 硬件描述

4.1 Layout

SOM-4418 Layout
  • 204 Pin Spec
    • Socket Type:0.6mm Pitch 204-Pin Standard Type DDR3 SODIMM Socket
Pin# Name Description Pin# Name Description
1 VDD_5V 4.7~5.5V Power Suply input 2 VDD_5V 4.7~5.5V Power Suply input
3 VDD_5V 4 VDD_5V
5 VDD_5V 6 VDD_5V
7 GND 8 GND
9 GND 10 VRTC_IN RTC backup battery(3V)input,backup current is 3.5uA
11 VCC_WIFI_IO(3.3V) MMC1 IO reference power,connect to wifi module IO power input 12 VCC_IO(3.3V) 3.3V out for IO reference
13 MMC1_D0 SDIO1/MMC1, connect to wifi module 14 BOOT_CS Pull low this pin to boot from SD CARD on MMC0
15 MMC1_D1 16 PWRKEY Power key
17 MMC1_D2 18 NRESETIN Hard reset input
19 MMC1_D3 20 AliveGPIO3 GPIO, reserved for RecoveryKey
21 MMC1_CMD 22 EXT_PWR_CTRL Used this pin to control power on/off of the carrier
23 GND 24 MMC0_D0 SDIO0/MMC0, for SD Card
25 MMC1_CLK SDIO1 Clock Out 26 MMC0_D1
27 WL_REG_ON(GPIOB24) GPIOB24, Used as wifi power on control signal 28 MMC0_D2
29 WL_HOST_WAKE(GPIOC17) GPIOC17, Used as wifi wake-up signal 30 MMC0_D3
31 UART1_TX UART1, connect to bluetooth module 32 MMC0_CMD
33 UART1_RX 34 MMC0_CD
35 UART1_nCTS 36 MMC0_CLK
37 UART1_nRTS 38 GND
39 BT_RST_N(GPIOB8) GPIOB8, Used as bluetooth reset 40 MIPI_CSI0_CLKN MIPI CSI Clock
41 BT_WAKE bluetooth wake-up signal 42 MIPI_CSI0_CLKP
43 BT_HOST_WAKE(/NC) Reserved for BT_HOST_WAKE 44 GND
45 LPO_32Khz 32.768kHz output for wifi/bt module 46 MIPI_CSI0_D0N MIPI CSI data0
47 GND 48 MIPI_CSI0_D0P
49 MDI0_P GbE MDI signals 50 GND
51 MDI0_N 52 MIPI_CSI0_D1N MIPI CSI data1
53 MDI1_P 54 MIPI_CSI0_D1P
55 MDI1_N 56 GND
57 GND 58 /NC
59 MDI2_P GbE MDI signals 60 /NC
61 MDI2_N 62 GND
63 MDI3_P 64 /NC
65 MDI3_N 66 /NC
67 GND 68 GND
69 SPEED_LED GbE SPEED LED signal output 70 /NC
71 LINK_LED GbE LINK LED signal output 72 /NC
Connector Key
73 GND 74 TP_INT(GPIOC16) I2C signal, connect to touch controller
75 USB_DM4 USB 2.0 host data signal 76 TP_SDA(I2C2_SDA)
77 USB_DP4 78 TP_SCL(I2C2_SCL)
79 GND 80 OneWire(GPIOC15) GPIOC15, used as FriendlyElec LCD OneWire signal
81 USB_DM3 USB 2.0 host data signal 82 GND
83 USB_DP3 84 LCD_CLK RGB LCD Clock signal
85 GND 86 GND
87 USB_DM2 USB 2.0 host data signal 88 LCD_HSYNC RGB LCD horizontal synchronization
89 USB_DP2 90 LCD_VSYNC RGB LCD vertical synchronization
91 GND 92 LCD_DE signal the external LCD that data is valid on the data bus
93 /NC 94 GND
95 /NC 96 LCD_R0 RGB LCD Red data signals
97 GND 98 LCD_R1
99 USB_OTG_D- USB 2.0 OTG data signal 100 LCD_R2
101 USB_OTG_D+ 102 LCD_R3
103 USB_OTG_ID USB 2.0 OTG ID signal 104 LCD_R4
105 VBUS USB 2.0 OTG VBUS 106 LCD_R5
107 VBUS_DRIVE(/NC) Reserved for USB 2.0 OTG VBUS Power Drive Signal 108 LCD_R6
109 HDMI_HPD HDMI Hot plug detect 110 LCD_R7
111 I2C1_SDA I2C1, used as HDMI DDC signal 112 GND
113 I2C1_SCL 114 LCD_G0 RGB LCD Green data signals
115 HDMI_CEC HDMI CEC Signal 116 LCD_G1
117 GND 118 LCD_G2
119 HDMI_TXCN HDMI Clock and data signals 120 LCD_G3
121 HDMI_TXCP 122 LCD_G4
123 GND 124 LCD_G5
125 HDMI_TX0N 126 LCD_G6
127 HDMI_TX0P 128 LCD_G7
129 GND 130 GND
131 HDMI_TX1N 132 LCD_B0 RGB LCD Blue data signals
133 HDMI_TX1P 134 LCD_B1
135 GND 136 LCD_B2
137 HDMI_TX2N 138 LCD_B3
139 HDMI_TX2P 140 LCD_B4
141 GND 142 LCD_B5
143 USB_DM1 USB 2.0 data signal 144 LCD_B6
145 USB_DP1 146 LCD_B7
147 GND 148 GND
149 /NC 150 LVDS_Y3M LVDS signals
151 /NC 152 LVDS_Y3P
153 GND 154 GND
155 /NC 156 LVDS_CLKM
157 /NC 158 LVDS_CLKP
159 GND 160 GND
161 GPIOB31 GPIOs 162 LVDS_Y2M
163 GPIOB30 164 LVDS_Y2P
165 GPIOC7 166 GND
167 GPIOC8 168 LVDS_Y1M
169 GPIOB23 170 LVDS_Y1P
171 GPIOC2 172 GND
173 GPIOC13/PWM1 PWMs 174 LVDS_Y0M
175 GND 176 LVDS_Y0P
177 GPIOC14/PWM2 178 GND
179 GPIOD1/PWM0 180 SPI0_CLK/GPIOC29 SPI
181 I2C2_SDA I2Cs 182 SPI0_MOSI/GPIOC31
183 I2C2_SCL 184 SPI0_MISO/GPIOD0
185 I2C0_SDA 186 SPI0_CS/GPIOC30
187 I2C0_SCL 188 GPIOD8/PPM
189 GPIOB27/HP_DETECT GPIOB27, used as Headphone insert detect 190 UART4_TX/GPIOB29 UARTs
191 AUDIO_GND Headphone output return path 192 UART4_RX/GPIOB28
193 HP_R Headphone output R 194 UART3_RX/GPIOD17
195 HP_L Headphone output L 196 UART3_TX/GPIOD21
197 LINEOUT_R(HP_R) Internal connect to HP_R, reserved for line out R in the future 198 UART2_RX
199 LINEOUT_L(HP_L) Internal connect to HP_L, reserver for line out L in the future 200 UART2_TX
201 MICIN_N Microphone input N 202 UART0_RX Used as Debug console
203 MICIN_P Microphone input P 204 UART0_TX
Note:
所有VDD_5V必须连接以获得最低的连接电阻。
必须连接所有GND,以实现良好的EMC性能和系统稳定性。
强烈建议使用4层PCB底板。
原理图 SOM-4418-2005-Schematic.pdf

5 参考设计

Edge-RT300

Edge-RT300

6 硬件设计注意事项

6.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

7 快速入门

7.1 准备工作

刷机前请先准备好以下硬件

  • SOM-4418核心板+Edge-RT300底板
  • TF卡: Class10或以上的8GB小卡
  • 一个DC接口的外接电源,要求输出为12V/2A
  • 可选购LCD配件HD702V
  • 可选连接一套USB键盘鼠标,同时连接还需要USB HUB
  • 如果需要开发与编译,则需要一台可以联网的电脑,推荐使用Ubuntu 18.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卡插入SOM-4418,连接HDMI或LCD, 将开发板右边的S2开关拨到SD端,拨动电源开关,启动开发板后会看到系统选择,选择你需要烧写到eMMC的系统即可。

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

将制作好的SD卡插入SOM-4418,登录串口终端,或者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 在电脑上更改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.7 运行Android或Linux

  • 将制作好SD卡插入SOM-4418,连接HDMI,按住靠近网口的boot按键,最后接电源(5V 2A)拨动开关,SOM-4418会从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

  • 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 配置Wi-Fi无线热点

先执行以下命令,默认情况下如果系统中安装了NetworkManager,会提示你先卸载NetworkManager:

sudo turn-wifi-into-apmode yes

卸载NetworkManager完成后,按提示重启开发板。
重启后,再执行上面的命令一次,这次会提示你输入WiFi热点的名称和密码,按提示操作即可。

操作成功后,你可以在电脑上搜索并连接热点,然后通过192.168.8.1这个地址来登录开发板:

ssh root@192.168.8.1

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

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

sudo iwconfig wlan0 power off

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

sudo cat /sys/module/bcmdhd/parameters/op_mode

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

sudo turn-wifi-into-apmode no

8.9 使用蓝牙

输入以下命令搜索周边的蓝牙设备:

$ su root
$ hciconfig hci0 up
$ hcitool scan

使用hciconfig命令来了解接口的状态。

8.10 连接以太网

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


8.11 定制命令行的欢迎信息(文字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.12 修改时区

例如更改为Shanghai时区:

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

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

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

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.14 运行X11程序

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

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

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

8.15 运行 Qt 5.10.0 演示程序

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

$ sudo qt5demo

S5pxx18-QtE

8.16 运行 Qt5-OpenGL示例

Run the following command

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

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

8.17 硬解播放高清视频

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.18 连接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.19 电源管理: 关机和定时开机

“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.20 安装与使用 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.21 安装与使用 Caffe

使用如下命令:

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

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

8.22.1 安装 Docker

执行下列命令:

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

8.22.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 连接方法

连接时,需要通过USB to miniPCIe转接板转接EC20,再连接到主板的USB Host端口,以T2为例,如下图所示:
T2-4G-EC20.jpg
连接后无需额外的配置,启动Android后就可以使用4G上网了,跟Android手机类拟。


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

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

重新编译 Android 源代码。

9.3 使用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.4 Android证书

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

  vendor/friendly-arm/nanopi3/security/

Android 7 缺省采用的是:

  build/target/product/security/

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

9.5.1 背景说明

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

9.5.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.5.3 修改env.conf

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

lcdtype     HDMI1080P60

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

setenv lcdtype HDMI1080P60; saveenv; reset

9.5.4 修改system.prop

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

ro.sf.lcd_density=240

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

9.5.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

SOM-4418内核所属的分支是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仓库

SOM-4418 源代码托管在 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 在Android下访问硬件资源

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

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

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


支持的接口包括:

  • GPIO
  • Serial Port
  • I2C
  • SPI


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

13 支持LCD型号

SOM-4418 目前支持的LCD型号为友善出品的:HD702V

14 原理图,Datasheet和尺寸图

15 资源链接

15.1 开发资料

15.2 创客秘籍及开发教程

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

17 技术支持

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.

18 Schematics & Mechanical drawing

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增加硬件访问库,具体可参考:[2]
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。