韌體燒錄完成后就進入了FriendlyCore系統,
FriendlyCore介紹
FriendlyCore,是一個沒有X-windows環境,基于Ubuntu core構建的系統,使用Qt-Embedded作為圖形界面的輕量級系統,兼容Ubuntu系統軟體源,非常適合于企業用戶用作產品的基礎OS,
本系統除了保留Ubuntu Core的特性以外,還包括以下特性:
集成Qt4.8;
集成NetworkManager網路管理器;
集成bluez等藍牙相關軟體包;
集成alsa相關軟體包;
集成命令列系統配置工具npi-config;
集成Python GPIO模塊RPiGPIO;
集成Python/C語言撰寫的demo程式,位于/root目錄;
使能512M的swap磁區;
運行FriendlyCore
對于有HDMI介面的板子,如果要在電視上進行操作,需要連接USB滑鼠和鍵盤,
如果需要進行內核開發,最好選購一個串口配件,連接了串口,則可以通過串口終端對開發板進行操作,

FriendlyCore默認帳戶:
普通用戶:
用戶名: pi
密碼: pi
Root用戶:
用戶名: root
密碼: fa
進入系統后可以執行下列命令查看檔案系統磁區大小:
df -h

可以看到其中有一個overlay檔案系統,
OverlayFS
簡介
Overlayfs是Linux下的一種堆疊檔案系統,通俗地講,根檔案系統雖然在邏輯仍然是一個磁區,但物理上被拆分成了兩個磁區來存盤,其中,一個磁區只讀存放固化的系統資料(rootfs磁區),另一個磁區存盤寫入的資料(data磁區),優點如下:
- 方便恢復出廠設定,格式化data磁區即可;
- 避免重復掉電或例外掉電導致data磁區掛載例外無法進入系統,由于rootfs是只讀的,此時仍可以進入系統,方便維護升級;
如何鑒別系統是否作業在OverlayFS
執行df命令,如果/磁區掛載型別為 overlay,表示OverlayFS正在作業:
pi@NanoPi-M1-Plus:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 474848 0 474848 0% /dev
tmpfs 102304 3564 98740 4% /run
overlay 28925547 1315493 26112465 5% /
tmpfs 511512 0 511512 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 511512 0 511512 0% /sys/fs/cgroup
/dev/mmcblk0p1 40862 11852 29010 30% /boot
tmpfs 102304 0 102304 0% /run/user/1000
使用OverlayFS時的磁區布局
會有三個磁區,分別為 rootfs磁區、data磁區與boot磁區,對應映像檔案rootfs.img, userdata.img 和 boot.img:
root@NanoPi-M1-Plus:~# lsblk /dev/mmcblk0
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 29.7G 0 disk
|-mmcblk0p2 179:2 0 1.2G 0 part
|-mmcblk0p3 179:3 0 28.5G 0 part
`-mmcblk0p1 179:1 0 40M 0 part /boot
其中,rootfs磁區存放固化的系統資料,所有對根目錄的資料寫入,都會寫入到 data磁區,
使用OverlayFS實作恢復出廠設定功能
手動清除user data磁區資料
掛載data磁區并重命名相關目錄:
mount /dev/mmcblk0p3 /media/ && cd /media/
mv root/ deleteme.root
mv work/ deleteme.work
reboot
重啟完成后,洗掉目錄:
mount /dev/mmcblk0p3 /media/ && rm -rf /media/deleteme.*
更多請看:How to use overlayfs on Linux/zh
定制命令列的歡迎資訊(文字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
查看CPU溫度和頻率
命令列查看:
$ cpu_freq
Aavailable frequency(KHz):
480000 624000 816000 1008000
Current frequency(KHz):
CPU0 online=1 temp=26548C governor=ondemand freq=624000KHz
CPU1 online=1 temp=26548C governor=ondemand freq=624000KHz
CPU2 online=1 temp=26548C governor=ondemand freq=624000KHz
CPU3 online=1 temp=26548C governor=ondemand freq=624000KHz
上述資訊表示當前有4個CPU核在線, 溫度均約為26.5攝氏度, 運行的策略均為根據需求來決定運行頻率, 當前的運行頻率均為624MHz,設定頻率的命令如下:
$ cpu_freq -s 1008000
Aavailable frequency(KHz):
480000 624000 816000 1008000
Current frequency(KHz):
CPU0 online=1 temp=36702C governor=userspace freq=1008000KHz
CPU1 online=1 temp=36702C governor=userspace freq=1008000KHz
CPU2 online=1 temp=36702C governor=userspace freq=1008000KHz
CPU3 online=1 temp=36702C governor=userspace freq=1008000KHz
上述命令將4個CPU核的頻率設定為1008MHz,
連接wifi
無論是SD介面的WiFi還是USB介面的WiFi, 它們的連接方式都是一樣的,
NanoPi NEO Air上帶的wifi是正基科技的APXX系列芯片,它屬于SD WiFi,

另外系統默認也已經支持市面上眾多常見的USB WiFi,插在板子的USB介面上就能使用,已測驗過的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賬戶(密碼:fa)
su root - 查看網路設備串列
nmcli dev
注意,如果列出的設備狀態是 unmanaged 的,說明網路設備不受NetworkManager管理,你需要清空 /etc/network/interfaces下的網路設定,然后重啟.
-
開啟WiFi
nmcli r wifi on -
掃描附近的 WiFi 熱點(按q退出串列狀態)
nmcli dev wifi -
連接到指定的 WiFi 熱點
nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0
請將 SSID和 PASSWORD 替換成實際的 WiFi名稱和密碼,
連接成功后,下次開機,WiFi 也會自動連接,

此時可以看到wlan0網口已經有ip了,ping百度也通了,說明網路連接已經正常了,

網路正常后,可以執行下列命令來更新下軟體包:
sudo apt-get update
更詳細的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目錄下,
配置WiFi無線熱點
上面是把開發板作為station連入家里的wifi熱點,讓開發板上網,本節再把開發板配置為wifi熱點,這樣手機和電腦可以連到開發板的wifi構成一個局域網,
執行以下命令進入AP模式:
su root
turn-wifi-into-apmode yes
這時會提示你輸入WiFi熱點的名稱和密碼,按提示操作即可,
操作成功后,你可以在電腦/手機上搜索并連接熱點,然后通過192.168.8.1這個地址來登錄開發板:
ssh root@192.168.8.1
在提示輸入密碼時,輸入預設的密碼fa,即可登入,
為了保證ssh的流暢,用以下命令關閉wifi的省電模式:
iwconfig wlan0 power off
要切換回普通的Station模式,輸入如下命令:
turn-wifi-into-apmode no
使用藍牙傳輸檔案
以傳輸檔案到手機為例進行說明,首先,將你的手機藍牙設定為可偵測狀態,然后執行以下命令開始藍牙搜索:
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"/>
npi-config目前僅支持基于Ubuntu的系統, 例如FriendlyCore、Ubuntu-oled、Ubuntu-tft, 暫時不支持在Debian系統上運行,
如果你在 npi-config 中沒有WiKi里描述的功能選單,可能是因為你的 npi-config 版本太舊,連上網路, 然后利用選單上的 Update 功能更新一下即可,
$ npi-config
7 Update| Update this tool to the latest version
1 Change User Password
修改默認用戶的登錄密碼
2 Hostname
修改主機名,比如我們修改為:ql

3 Boot Options
B1 Autologin: 設定如何登錄系統
有3種選擇:
- Console: 開機后要求輸入用戶名和密碼, 然后登錄終端;
- Console Autologin: 開機后自動以pi用戶登錄終端;
- Qt/Embedded: 開機后不登錄終端, 而是直接運行Qt Demo;
B2 Wait for Network at Boot: 開機時是否等待網路連接
一般設定為否, 就算是網路不通也仍然可以進入系統,
B3 Boot device: 選擇啟動設備
進入后,如果板子接了SSD,可以看到下面的串列
- D1 Hard drive
- D2 TF card
選擇 D1 Hard drive,然后按提示進行操作即可,這樣就可以讓板子從SSD運行系統,
以后要恢復回 TF 卡啟動,可在上述選單中選擇 D2 TF card,
當然如果板子上只有TF卡,那么上面的啟動串列就為空,
4 Localisation Options
修改系統語言、時區,
5 Interfacing Options
控制是否允許使用遠程SSH控制系統,

6 Advanced Options
A0 Display: 選擇系統默認顯示設備
該功能僅支持全志芯片系列的開發板,
Linux系統默認只從一個顯示設備輸出畫面, 使用下列命令可以選擇系統默認的顯示設備:
$ npi-config
6 Advanced Options| Configure advanced setting
A0 Display| Select system default display device
fb0| framebuffer0
fb1| fb_st7789v(X)
(X)表示對應的顯示設備是使能的, 不同型號的板子的fb設備是不一樣的, 在H3/H5的板子里fb0是HDMI, fb1是Matrix - 2’8 SPI Key TFT, 請根據實際情況進行選擇, 設定完畢后需要重啟系統,
A1 Audio: 選擇系統默認音頻設備
該功能僅支持全志芯片系列的開發板,
Linux系統默認只從一個音頻設備輸出音頻, 使用下列命令可以選擇系統默認的音頻設備:
$ npi-config
6 Advanced Options| Configure advanced setting
A1 Audio| Select system default audio device
card0| [Dummy], device 0: Dummy PCM
card1| [Loopback], device 0: Loopback PCM
card2| [H3 Audio Codec], device 0: CDC PCM Codec-0 (X)
card3| [allwinner,hdmi], device 0: 1c22800.i2s-i2s-hifi i2s-hifi-0
(X)表示對應的音頻card設備是使能的, 不同型號的板子的card設備是不一樣的, 請根據實際情況進行選擇, 設定完畢后需要重啟系統,
A2 Welcome message: 使能或關閉開機歡迎界面
A3 Serial: 使能或關閉串口功能
該功能僅支持全志芯片系列并且使用Linux-4.14內核的開發板,

A4 I2C: 使能或關閉I2C功能
該功能僅支持全志芯片系列并且使用Linux-4.14內核的開發板,
A5 SPI: 使能或關閉SPI功能
該功能僅支持全志芯片系列并且使用Linux-4.14內核的開發板,
支持使能部分SPI設備, 包括2.8寸TFT螢屏和SPI Flash,
使能Matrix - 2’8 SPI Key TFT
Matrix - 2’8 SPI Key TFT是一個2.8寸的TFT顯示屏, 詳細的使用方法請參考: Matrix - 2’8 SPI TFT/zh, 這里只關注如何使能該配件,
$ npi-config
6 Advanced Options| Configure advanced settings
A5 SPI| Enable/Disable SPI
spi0 Enable/Disable spi0[enabled]
spidev0.0| SPI0 char device
spi-2.8'tft| Matrix-2'8_SPI_Key_TFT(X)
spi-flash| SPI0 flash
(X)表示SPI0上連接的Matrix - 2’8 SPI Key TFT是使能的, 設定完畢后需要重啟系統, 系統啟動后螢屏上會顯示校準的界面,
使能SPI0上的SPI Flash
$ npi-config
6 Advanced Options| Configure advanced setting
A5 SPI| Enable/Disable SPI
spi0 Enable/Disable spi0[enabled]
spidev0.0| SPI0 char device
spi-2.8'tft| Matrix-2'8_SPI_Key_TFT
spi-flash| SPI0 flash(X)
FriendlyElec H5/H3/H2+的Linux-4.14內核集成了"mxicy,mx25l12805d"的SPI Flash驅動,但是默認并沒有使能,選擇’spi-flash’后即可將其使能, 設定完畢后需要重啟系統,
啟動Linux系統時,看到類似下面的啟動資訊則說明SPI Flash被成功檢測到了:
m25p80 spi0.0: mx25l12805d (16384 Kbytes)
1 ofpart partitions found on MTD device spi0.0
Creating 1 MTD partitions on "spi0.0":
0x000000000000-0x000001000000 : "spi-flash"
SPI Flash在Linux系統下的使用方法如下:
$ cat /sys/class/mtd/mtd0/size # 以byte為單位
$ cat /sys/class/block/mtdblock0/size # 以sector(512 byte)為單位
$ apt-get install mtd-utils
$ flash_eraseall -j /dev/mtd0 # 格式成jffs2的格式
$ mount -t jffs2 /dev/mtdblock0 /mnt
$ mkfs.ext4 /dev/mtdblock0 # 也格式化為ext4
$ mount -t ext4 /dev/mtdblock0 /mnt
A6 PWM: 使能或關閉PWM功能
該功能僅支持全志芯片系列并且使用Linux-4.14內核的開發板,
A7 I2S: 使能或關閉I2S功能
該功能僅支持全志芯片系列并且使用Linux-4.14內核的開發板,
使能NanoHat PCM5102A

A8 IR: 使能或關閉IR 接收功能
該功能僅支持全志芯片系列并且使用Linux-4.14內核的開發板,
注意: 請先檢查紅外接收器是否存在,
紅外接收功能默認是關閉的, 可以通過npi-config使能:
$ npi-config
6 Advanced Options Configure advanced settings
A8 IR Enable/Disable IR
ir Enable/Disable ir[enabled]
重啟系統, 然后使用下列命令測驗紅外接收:
$ apt-get install ir-keytable
$ echo "+rc-5 +nec +rc-6 +jvc +sony +rc-5-sz +sanyo +sharp +mce_kbd +xmp" > /sys/class/rc/rc0/protocols # 使能紅外協議
$ ir-keytable -t
Testing events. Please, press CTRL-C to abort.
ir-keytable -t用于檢查是否有接收到紅外信號, 使用任意遙控器發送按鍵資訊給紅外接收器, 可以看到類似下列資訊:
1522404275.767215: event type EV_MSC(0x04): scancode = 0xe0e43
1522404275.767215: event type EV_SYN(0x00).
1522404278.911267: event type EV_MSC(0x04): scancode = 0xe0e42
1522404278.911267: event type EV_SYN(0x00).
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/330417.html
標籤:其他
上一篇:GPIO引腳的輸入輸出模式
