FriendlyCore (based on ubuntu-core with Qt)/zh
Contents
1 介绍
Ubuntu Core with Qt-Embedded,是一个没有X-windows环境,使用Qt-Embedded作为图形界面的轻量级Ubuntu系统,基于官方的Ubuntu core系统开发而成,非常适合于企业用户用作产品的基础OS。
本系统除了保留Ubuntu Core的特性以外,还包括以下特性:
- 支持电容和电阻触摸屏 (型号:S700, X710, S70, HD702, S430, HD101, S70等友善推出的LCD屏)
- 支持WiFi连接
- 支持以太网连接
- 支持蓝牙,已预装bluez等相关软件包
- 支持音频播放
2 固件下载
在各个产品的维基页面中下载。
3 Ubuntu Core 的使用
3.1 运行Ubuntu Core
- 要在电视上进行操作,你需要连接USB鼠标和键盘。
- 如果您需要进行内核开发,你最好选购一个串口配件,连接了串口,则可以通过终端对板子进行操作。
- Ubuntu-Core默认帐户:
普通用户:
用户名: pi 密码: pi
Root用户:
用户名: root 密码: fa
默认会以 pi 用户自动登录,你可以使用 sudo npi-config 命令取消自动登录。
- 更新软件包:
$ sudo apt-get update
3.2 使用npi-config配置系统
npi-config是一个命令行下的系统配置工具,可以对系统进行一些初始化的配置,可配置的项目包括:用户密码、系统语言、时区、Hostname、SSH开关、自动登录选项等,在命令行执行以下命令即可进入:
$ sudo npi-config
3.3 扩展TF卡文件系统
第一次启动Debian系统时,系统会自动扩展文件系统分区,请耐心等待,TF卡/eMMC的容量越大,需要等待的时间越长,进入系统后执行下列命令查看文件系统分区大小:
df -h
3.4 连接WiFi
Ubuntu 使用 NetworkManager 工具来管理网络,其在命令行下对应的命令是 nmcli,要连接WiFi,相关的命令如下:
- 查看网络设备列表
$ sudo nmcli dev
注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.
- 开启WiFi
$ sudo nmcli r wifi on
- 扫描附近的 WiFi 热点
$ sudo nmcli dev wifi
- 连接到指定的 WiFi 热点
$ sudo nmcli dev wifi connect "SSID" password "PASSWORD"
请将 SSID和 PASSWORD 替换成实际的 WiFi名称和密码。
连接成功后,下次开机,WiFi 也会自动连接。
更详细的NetworkManager使用指南可参考这篇文章: Use NetworkManager to configure network settings
3.5 连接以太网
默认插上网线开机,会自动连接并通过DHCP获取IP地址,如需要配置静态IP地址,请参考 NetworkManager 的相关文档: Use NetworkManager to configure network settings。
3.6 使用蓝牙
如果你的开发板板载有蓝牙模块,可输入以下命令搜索周边的蓝牙设备:
hcitool scan
使用hciconfig命令来了解接口的状态。
3.7 播放音频
在串口终端执行以下aplay命令播放一段音频:
aplay -t raw -c 2 -f S16_LE -r 44100 /root/test.pcm
3.8 运行Qt示例程序
在命令行执行:
$ sudo /opt/QtE-Demo/run.sh
3.9 开机自动运行Qt示例程序
使用npi-config工具进行开启:
sudo npi-config
进入Boot Options -> Autologin -> Qt/Embedded,选择Enable然后重启即可。
3.10 使用触摸屏
电容屏一般无需设置即可使用,电阻屏则需要校准,校准的行为在 /usr/bin/setqt4env 这个脚本中触发的,这个脚本非常有用,它会设置Qt相关的环境变量,会在使用电阻屏时,根据条件判断是否需要运行校准程序。
如果你需要重新校准电阻触摸屏,可以删除以下文件来实现,命令如下:
rm /etc/pointercal
删除之后重新启动系统即可。
4 开发自已的Qt应用
4.1 PC上安装Qt-Embedded
Ubuntu Core的文件系统中包含了完整的Qt-Embedded二进制包,我们只需要复制到电脑上即可使用。
方法是,先制作一张 Ubuntu Core with Qt-Embedded 系统的SD卡,此时 SD 卡一般有两个分区,第二个分区是Ubuntu core系统的根分区,
将这个分区挂载到某个目录,假设挂载到 /media/root/rootfs, 用以下命令安装:
# sudo mkdir -p /usr/local/Trolltech
如果是32位的文件系统,复制以下目录:
# sudo cp -af /media/root/rootfs/usr/local/Trolltech/QtEmbedded-5.9.1-arm /usr/local/Trolltech/
如果是64位的文件系统,复制以下目录:
# sudo cp -af /media/root/rootfs/usr/local/Trolltech/QtEmbedded-5.9.1-arch64 /usr/local/Trolltech/
4.2 PC上安装交叉编译器(arm-linux-gcc 4.9.3)
首先下载并解压编译器:
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)
4.3 编写并运行Qt版本的Hello world
在PC上建立个helloqt目录并新建一个main.cpp的源文件:
cd ~ mkdir helloqt vi main.cpp
main.cpp的代码如下:
#include <QApplication> #include <QPushButton> int main(int argc, char **argv) { QApplication app (argc, argv); QPushButton button ("Hello world !"); button.show(); return app.exec(); }
退出vi后,执行以下命令编译:
cd ~/helloqt /usr/local/Trolltech/QtEmbedded-4.8.6-arm/bin/qmake -project /usr/local/Trolltech/QtEmbedded-4.8.6-arm/bin/qmake make
编译成功后,会得到了 helloqt 的二进制文件,将它上传到开发板后,在串口终端用以下命令运行:
. setqt4env
helloqt -qws&
4.4 开机自动运行Qt程序
以运行上一章节中的 helloqt4 程序为例,假设它放在 /root 目录,则你可以编辑 /etc/rc.local 文件,先删除以下这两行:
cd /usr/local/Trolltech/QtEmbedded-4.8.6-arm/demos/embedded/fluidlauncher ./fluidlauncher -qws&
注意需要保留 . /usr/bin/setqt4env 这一行内容,并在这一行的后面加上 /root/helloqt -qws & 即可。
5 常见问题
- 编译Qt程序时出现无法链接到 libts, libz等库
原因是你的 arm-linux-gcc 4.9.3 编译器没有集成这些库,到产品的下载页面重新下载一次编译器,重新安装后即可解决。
6 更新日志
6.1 2017-04-18
Ubuntu-Core系统更新如下:
- 修改了登录欢迎界面,当用户登录时会打印系统的基本状态信息;
- 增加 npi-config 工具,npi-config是一个命令行下的系统配置工具,可以对系统进行一些初始化的配置,可配置的项目包括:用户密码、系统语言、时区、Hostname、SSH开关、自动登录选项等,在命令行执行以下 sudo npi-config 即可进入;
- 预装NetworkManager作为网络管理工具;
- 新增pi用户,并配置为自动登录,自动登录特性可以使用npi-config工具配置;
6.2 2017-03-08
1) 启用UART2
2) 增加HD101B屏幕的支持
6.3 2017-02-09
Ubuntu Core系统中增加7寸电阻屏 S70B 的支持
6.4 2016-11-17
增加H43屏的支持
6.5 2016-09-02
集成了CAM500A(ov5640)摄像头的demo程序(nanocams)
6.6 2016-07-01
修复了Ubuntu Core下USB Wi-Fi无法加载固件的问题