iTop-4412上的Qt/E 4.7.1配置工作记录

设备和软件基本信息

开发板为迅为iTop-4412精英版(Elite),核心板采用SCP封装,1 GB内存。

开发计算机操作系统为Windows Server 2012 R2 Datacenter x64,在VMware Workstation Pro 15.5中运行64位Ubuntu 12.04.5 LTS系统。Ubuntu登录用户名为picsell-dois

为便于操作,已将iTop-4412随附光盘内的文件挂载共享目录到Ubuntu的/mnt/hgfs/Shared/目录内的“iTOP-4412精英版光盘资料”文件夹。

进入Root操作环境

为便于操作,进入Root操作环境。首先在Ubuntu终端中输入指令:

sudo passwd

指定Root密码,随后输入指令:

su

进入Root操作环境。

若无特殊说明,以下操作均在Root操作环境下进行。

配置所需的ARM编译器及环境变量

Qt/E 4.7.1源代码使用arm-linux-gcc-4.3.2编译器编译,因此需要进行编译器配置:

cd /usr/local/arm/
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/08_源码_QtE以及qtopia2.2.0文件系统arm-linux-gcc-4.3.2.tar.gz' ./
tar -vxf arm-linux-gcc-4.3.2.tar.gz

配置环境变量:

sudo gedit /root/.bashrc

通过在行首添加井号(“#”)的方式注释掉先前添加的其他编译器环境变量行(即export PATH=$PATH:/usr/local/arm/…这样的行),并在文件末尾添加:

#Compiler path for Qt/E 4.7.1
export PATH=$PATH:/usr/local/arm/4.3.2/bin

保存并退出,回到终端并更新环境变量:

source /root/.bashrc

若需检查是否变更成功,可在终端输入arm并多次按键盘的TAB键触发系统的命令提示,如果提示列表中出现arm-none-linux-gnueabi-gcc-4.3.2命令,则可以认为操作成功。

同时,为了便于今后的操作,也可以使用exit命令临时退出Root环境、返回当前登录用户的操作环境,并采用和上面一致的方法更新当前用户的环境变量:

gedit ~/.bashrc
source ~/.bashrc

配置Qt/E 4.7.1编译环境

先导工作

前期工作需要借用Android 4.0.3的配置编译环境中的安装脚本,安装大量的程序包,和Android 4.0.3编译环境不同,可以不执行安装Java的脚本:

cd /home/picsell-dois/
mkdir iTop4412
cd iTop4412
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/02_编译器及烧写工具/tools/Android_JDK.tar.bz2' ./
tar -vxf Android_JDK.tar.bz2
cd Android_JDK
./install-devel-packages.sh

可以再次执行./install-devel-packages.sh来确保程序包安装完整。

对于笔者使用的Ubuntu 12.04.5 LTS系统,须重新安装xorg以及libgl1-mesa库,否则重启虚拟机后可能无法进入图形界面:

apt-get install xorg
apt-get install libgl1-mesa-glx:i386
apt-get install libgl1-mesa-dev

请注意,以上代码块中提供的三行apt-get install指令是针对笔者使用的Ubuntu 12.04.5 LTS系统的,目的是修复执行./install-devel-packages.sh(这个脚本是针对Ubuntu 12.04.2 LTS编写的)时由于程序包冲突而被破坏的图形环境,并安装编译所需的正确的库。

如果您使用的是Ubuntu 12.04.2 LTS系统,那么只需要执行./install-devel-packages.sh安装随iTop-4412光盘提供的脚本即可,千万不要执行上代码块中提供的三行apt-get install指令,否则您的操作系统将无法启动到图形界面。

最后,依次执行:

apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50

降低Ubuntu系统自带的GCC版本到4.4.7,在终端输入gcc -v指令并按回车键执行,即可检查GCC版本。

补充库文件

通过以下指令序列,配置Qt/E 4.7.1所需的库文件:

cd '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/08_源码_QtE以及qtopia2.2.0文件系统/patch/'
cp ./tslib.tar.gz /usr/local/
cd /usr/local/
tar -vxf tslib.tar.gz
cd '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/08_源码_QtE以及qtopia2.2.0文件系统/patch/'
cp ./libXext.so.6.4.0 /usr/lib32/
cp ./libXmu.so.6.2.0 /usr/lib32/
cp ./libSM.so.6.0.1 /usr/lib32/
cp ./libICE.so.6.3.0 /usr/lib32/
cp ./libXt.so.6.0.0 /usr/lib32/
cd /usr/lib32/
ln -s libXext.so.6.4.0 libXext.so.6
ln -s libXext.so.6 libXext.so
ln -s libXmu.so.6.2.0 libXmu.so.6
ln -s libXmu.so.6 libXmu.so
ln -s libSM.so.6.0.1 libSM.so.6
ln -s libSM.so.6 libSM.so
ln -s libICE.so.6.3.0 libICE.so.6
ln -s libICE.so.6 libICE.so
ln -s libXt.so.6.0.0 libXt.so.6
ln -s libXt.so.6 libXt.so
cd '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/08_源码_QtE以及qtopia2.2.0文件系统/patch/'
cp ./libuuid.so.1.3.0 /lib32/
cd /lib32/
ln -s libuuid.so.1.3.0 libuuid.so.1
ln -s libuuid.so.1 libuuid.so

安装生成系统镜像文件所需的工具

为了生成系统镜像system.img,需要安装mkimage工具:

cd '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/02_编译器以及烧写工具/tools/'
cp ./linux_tools.tgz /
cd /
tar -vxf linux_tools.tgz

至此,Qt/E 4.7.1编译和镜像构建环境搭建完毕。

复制和展开Qt/E 4.7.1源代码

继续使用Root身份操作,在/root/目录下建立yizhi目录,请注意,建议不要使用别的目录名称。

随后,复制ARM版本的Qt/E 4.7.1源码文件并展开:

cd /root/
mkdir yizhi
cd yizhi
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/08_源码_QtE以及qtopia2.2.0文件系统/qt-everywhere-opensource-src-4.7.1_20141224.tar.gz' ./
tar -vxf qt-everywhere-opensource-src-4.7.1_20141224.tar.gz

编译Qt/E 4.7.1源代码

建议再次检查各环环境配是否正确,并确保当前位于/root/yizhi/qt-everywhere-opensource-src-4.7.1目录内,运行编译脚本:

cd /root/yizhi/qt-everywhere-opensource-src-4.7.1/
./build-all

编译时间可能较长。编译得到的文件位于/opt目录中。

生成系统映像文件

从这里开始可以退出Root操作环境,亦可继续留在Root操作环境。为便于操作以及后续代码修改,此处选择退出Root操作环境,并在登录用户目录内进行处理:

cd /home/picsell-dois/iTop4412/
mkdir Qtopia
cd Qtopia
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/08_源码_QtE以及qtopia2.2.0文件系统/root_2020115.tar.gz' ./
tar -vxf root_2020115.tar.gz

请注意:不同的版本的“root_********.tar.gz”中的日期项的值可能不同。

随后,导出编译得到的文件,并生成镜像文件:

cd /home/picsell-dois/iTop4412/Qtopia/
cp -r /opt/qt-4.7.1 /home/picsell-dois/iTop4412/Qtopia/root/opt
make_ext4fs -s -l 314572800 -a root -L linux system.img root

执行完毕后,在/home/picsell-dois/iTop4412/Qtopia/目录下即可得到system.img镜像文件。

编译Linux内核

配置所需的ARM编译器及环境变量

此处使用随附的arm-2009q3作为交叉编译工具。该编译工具用于编译uBoot、Linux Kernel和Android的源代码。

从iTop-4412随附光盘内复制arm-2009q3.tar.bz2文件到/usr/local/arm/内并解包:

cd /usr/local/
mkdir arm
cd arm
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/02_编译器及烧写工具/arm交叉编译器/arm-2009q3.tar.bz2' ./
tar -vxf arm-2009q3.tar.bz2

配置环境变量:

sudo gedit /root/.bashrc

通过在行首添加井号(“#”)的方式注释掉先前添加的其他编译器环境变量行(即export PATH=$PATH:/usr/local/arm/…这样的行),并在文件末尾添加:

#Compiler path for uBoot, Kernel and Android
export PATH=$PATH:/usr/local/arm/arm-2009q3/bin

保存并退出,回到终端并更新环境变量:

source /root/.bashrc

若需检查是否变更成功,可在终端输入arm并多次按键盘的TAB键触发系统的命令提示,如果提示列表中出现arm-none-linux-gnueabi-****命令,则可以认为操作成功。

如果是64位Ubuntu系统,强烈推荐为arm-2009q3安装32位兼容环境:

sudo apt-get install lsb-core

同时,为了便于今后的操作,也可以使用exit命令临时退出Root环境、返回当前登录用户的操作环境,并采用和上面一致的方法更新当前用户的环境变量:

gedit ~/.bashrc
source ~/.bashrc

先导工作

前期工作需要借用Android 4.0.3的配置编译环境中的安装脚本,安装大量的程序包,但是,可以不执行安装Java的脚本:

cd /home/picsell-dois/
mkdir iTop4412
cd iTop4412
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/02_编译器及烧写工具/tools/Android_JDK.tar.bz2' ./
tar -vxf Android_JDK.tar.bz2
cd Android_JDK
./install-devel-packages.sh

可以再次执行./install-devel-packages.sh来确保程序包安装完整。

对于笔者使用的Ubuntu 12.04.5 LTS系统,须重新安装xorg以及libgl1-mesa库,否则重启虚拟机后可能无法进入图形界面:

apt-get install xorg
apt-get install libgl1-mesa-glx:i386
apt-get install libgl1-mesa-dev

请注意,以上代码块中提供的三行apt-get install指令是针对笔者使用的Ubuntu 12.04.5 LTS系统的,目的是修复执行./install-devel-packages.sh(这个脚本是针对Ubuntu 12.04.2 LTS编写的)时由于程序包冲突而被破坏的图形环境,并安装编译所需的正确的库。

如果您使用的是Ubuntu 12.04.2 LTS系统,那么只需要执行./install-devel-packages.sh安装随iTop-4412光盘提供的脚本即可,千万不要执行上代码块中提供的三行apt-get install指令,否则您的操作系统将无法启动到图形界面。

最后,依次执行:

apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 50
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 50
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.4 100
update-alternatives --install /usr/bin/cpp cpp-bin /usr/bin/cpp-4.6 50

降低Ubuntu系统自带的GCC版本到4.4.7,在终端输入gcc -v指令并按回车键执行,即可检查GCC版本。

复制和展开Linux内核源代码

从这里开始可以退出Root操作环境,亦可继续留在Root操作环境。为便于操作以及后续代码修改,此处选择退出Root操作环境。

随后,复制Linux内核源代码并展开:

cd /home/picsell-dois/iTop4412/
mkdir LinuxKernel
cd LinuxKernel
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/06_源码_uboot和kernel/iTop4412_Kernel_3.0_20200410.tar.gz' ./
tar -vxf iTop4412_Kernel_3.0_20200410.tar.gz
cd iTop4412_Kernel_3.0

修改内核配置及源代码

展开的目录中存在以config_for_字符串开头的文件,这些文件是根据不同的开发板配置预编的配置文件,通过cp命令将与您的设备符合的文件复制为名为.config的文件,即可将其设置为当前活动的内核配置文件:

cd /home/picsell-dois/iTop4412/LinuxKernel/iTop4412_Kernel_3.0/
cp config_for_android_scp_elite .config

如果需要以菜单形式调整内核设定,则执行:

make menuconfig

如果出现“Install ncurses(ncurses-devel) and try again”报错,则先安装libncurses5-dev:

sudo apt-get install libncurses5-dev

再重新执行:

make menuconfig

修改开机画面

开始前,请先确保已安装ARM-2009q3编译器,并根据手册指导配置了Linux内核编译环境以及Linux内核源文件。

首先,请先准备需要的开机画面图片,并将其保存为宽640像素、高480像素的bmp格式位图文件。

然后,在Windows上安装Image2Lcd程序。随后,启动Image2Lcd(建议先前往界面底部的 [注册] 选项卡注册软件,激活密钥为0000-0000-0000-0000-6A3B)。

在Image2Lcd内,点击工具栏的 [打开] 按钮,选择处理完毕的bmp文件,并确保配置选项为:

输出数据类型:C语言数组(*.c)
扫描模式:水平扫描
输出灰度:24位真彩色
最大宽度和高度:640, 480
下拉列表下方的复选框区域全部不勾选。

确认无误后,点击工具栏的 [保存] 按钮,导出代码文件,根据默认设置,Image2Lcd会自动打开导出的代码。转换工作结束。

在Linux内核编译所用的设备内,编辑下列文件:

%LinuxKernelSrc%/drivers/video/samsung/iTop-4412.h

其中%LinuxKernelSrc%指解包Linux内核源码得到的目录。打开该文件后,将Image2Lcd中导出代码所得到的数组的内容覆盖iBitmapData_q[]数组的内容并保存。

在编译环境的终端中定位到Linux内核源码目录,检查配置无误后键入指令:

make zImage

开始编译,随后刷写编译得到zImage文件即可。

如果开机画面显示偏位,那么需要修改以下文件:

%LinuxKernelSrc%/drivers/video/samsung/s3cfb_ops.c

中的s3cfb_draw_logo()函数中lefttop两个变量的值并重新编译内核。

为保证居中,lefttop两个变量的计算方法是:

left=(Screen.Width-640)/2
top=(Screen.Height-480)/2

其中,Screen.WidthScreen.Height为您的开发板的屏幕的宽度和高度,单位为像素。

编译内核

配置和修改操作完毕后,在终端执行:

make zImage

开始编译Linux内核。编译完成后得到的zImage文件位于/home/picsell-dois/iTop4412/LinuxKernel/iTop4412_Kernel_3.0/arch/arm/boot/目录内。

刷写

将编译得到的(或随光盘提供的)system.imgzImage两个文件复制到宿主机,并从随附光盘中提取\04_镜像_QT文件系统\system\ramdisk-uboot.img文件。

进入Fastboot模式

首先,将串行数据线路连接在底板CON3(UART2)连接座处的串行接口上,另一端与计算机串口(或USB转化的串口)连接牢固,并确保计算机端各驱动、软硬件配置正常。

随后,打开超级终端Hyper Terminal,新建一个串口连接,在配置窗格中,确保波特率与设备管理器中串口的波特率匹配(推荐值为115200)且编码方式为UTF-8 (Latin)(老版本Hyper Terminal可以直接使用UTF-8),其余设置通常保持默认(8位数据位/1位停止位/无校验位/停用流控制)。建议再次检查以确保设备管理器中串口的配置与Hyper Terminal中的配置一致。

通过USB数据线连接开发板的OTG接口与计算机的USB接口,并将开发板上电开机,同时在反复敲击键盘(一般为回车键或空格键),此时应当成功打断了自动引导流程,并进入uBoot命令行模式。

输入以下命令:

fastboot

并回车,即可进入Fastboot模式。进入Fastboot模式后即可通过fastboot命令行工具操作刷写、擦除等工作。

刷写

fastboot.exe程序所在的目录下启动命令提示符(或通过编辑Windows的Path环境变量将该目录纳入),依次执行:

fastboot flash kernel \PATH\TO\zImage
fastboot flash ramdisk \PATH\TO\ramdisk-uboot.img
fastboot flash system \PATH\TO\system.img
fastboot -w
fastboot reboot

完成后,设备重启,即能进入Qt/E 4.7.1环境。

配置以使Qt/E 4.7.1支持矩阵键盘

若需要使Qt/E 4.7.1环境支持矩阵键盘,需要开启-qt-kbd-linuxinput开关后重新编译Qt/E 4.7.1,并修改Qt/E 4.7.1的启动脚本/bin/qt4

修改Qt/E 4.7.1编译参数

建议再次检查各环环境配是否正确,并确保当前位于/root/yizhi/qt-everywhere-opensource-src-4.7.1目录内,输入以下指令,编辑编译脚本文件build-all

cd /root/yizhi/qt-everywhere-opensource-src-4.7.1/
sudo gedit build-all

找到echo yes | ./configure …行,并在./configure后添加开关-qt-kbd-linuxinput,使其看起来像:

echo yes | ./configure -opensource -embedded arm -xplatform qws/linux-arm-g++  -no-webkit -qt-libtiff -qt-libmng -qt-kbd-linuxinput -qt-mouse-tslib -qt-mouse-pc -qt-gfx-transformed -no-mouse-linuxtp -prefix /opt/qt-4.7.1   -I /usr/local/tslib/include -L /usr/local/tslib/lib

随后,保存并退出。

编译Qt/E 4.7.1源代码

建议再次检查各环环境配是否正确,并确保当前位于/root/yizhi/qt-everywhere-opensource-src-4.7.1目录内,运行编译脚本:

cd /root/yizhi/qt-everywhere-opensource-src-4.7.1/
./build-all

编译时间可能较长。编译得到的文件位于/opt目录中。

生成系统映像文件

从这里开始可以退出Root操作环境,亦可继续留在Root操作环境。为便于操作以及后续代码修改,此处选择退出Root操作环境,并在登录用户目录内进行处理:

cd /home/picsell-dois/iTop4412/
mkdir Qtopia
cd Qtopia
cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/08_源码_QtE以及qtopia2.2.0文件系统/root_2020115.tar.gz' ./
tar -vxf root_2020115.tar.gz

请注意:不同的版本的“root_********.tar.gz”中的日期项的值可能不同。

随后,导出编译得到的文件,并生成镜像文件:

cd /home/picsell-dois/iTop4412/Qtopia/
cp -r /opt/qt-4.7.1 /home/picsell-dois/iTop4412/Qtopia/root/opt
make_ext4fs -s -l 314572800 -a root -L linux system.img root

执行完毕后,在/home/picsell-dois/iTop4412/Qtopia/目录下即可得到system.img镜像文件。

修改Qt/E 4.7.1配置文件以启用矩阵键盘

system.img镜像文件刷入设备后,在超级终端输入:

vi /bin/qt4

i键进入插入编辑模式,将export QWS_KEYBOARD=行解除注释(即删除行首的井号(“#”)),并将其内容改为:

export QWS_KEYBOARD="USB:/dev/input/event1"

ESC键并输入:wq后按回车执行保存操作,重启设备即可。

如果需要重建system.img镜像,也可以在先前解包root_********.tar.gz得到的root目录中编辑/bin/qt4文件:

sudo gedit '/home/picsell-dois/iTop4412/Qtopia/root/bin/qt4'

完成后,回到终端执行:

cd /home/picsell-dois/iTop4412/Qtopia/
rm system.img
make_ext4fs -s -l 314572800 -a root -L linux system.img root

重建system.img并执行刷写流程即可。

安装和配置Qt Creator 5.3.2

安装Qt Creator 5.3.2

http://download.qt.io/new_archive/qt/5.3/5.3.2/ 下载qt-opensource-linux-x64-android-5.3.2.run。在终端中定位到该文件所在目录并执行:

./qt-opensource-linux-x64-android-5.3.2.run

开始安装(是否用sudo指令以Root身份运行可随意)。

配置所需的ARM编译器

使用arm-linux-4.4.1编译器,因此需要进行编译器配置:

cd /usr/local/arm/
sudo cp '/mnt/hgfs/Shared/iTOP-4412精英版光盘资料/08_源码_QtE以及qtopia2.2.0文件系统/arm-linux-4.4.1.tar.gz' ./
sudo tar -vxf arm-linux-4.4.1.tar.gz

配置Qt/E 4.7.1编译套件

从Ubuntu程序启动器启动Qt Creator,点击菜单栏的 [工具(Tools)] > [选项(Options)] > [构建和运行(Build & Run)]。

首先,切换到 [编译器(Compilers)] 选项卡,点击 [添加(Add)] > [GCC],[名称(Name)]可自由填写,[编译器路径(Compiler path)] 填写为:

/usr/local/arm/4.4.1/bin/arm-none-linux-gnueabi-gcc

点击 [Apply] 按钮。

随后,切换到 [Qt Versions] 选项卡,点击 [添加…(Add…)] 按钮,导航并选中Qt/E 4.7.1的qmake文件,由于笔者电脑已经编译过Qt/E 4.7.1,因此qmake文件位于:

/opt/qt-4.7.1/bin/qmake

光盘的/08_源码_QtE以及qtopia2.2.0文件系统/root_********.tar.gz文件的/root/opt/qt-4.7.1/bin中也提供了qmake文件。

点击 [Apply] 按钮。

最后,切换到 [构建套件(Kit)] 选项卡,点击 [添加(Add)]按钮,建立一个套件,[编译器(Compiler)] 为之前添加的ARM编译器,[Qt 版本(Qt version)] 为之前添加的Qt 4.7.1。

点击 [OK] 按钮,保存退出。

使用Qt/E 4.7.1编译套件

对于新建的项目,在 [Kit Selection] 界面,勾选之前添加的Qt 4.7.1套件即可。

对于已有的项目,打开项目后切换到左侧栏的 [项目(Projects)] 选项卡,点击 [添加构建套件(Add kit)]按钮,添加先前配置的Qt 4.7.1套件即可。

故障排除

如果向Qt 4.7.1编译时出现“ui_MainWindow.h Error 1”等错误,可能由兼容性问题引发,建议右键点击错误窗格并切换到详细信息模式,检查出错原因。

在开发板上运行Qt程序

可以使用FAT32或FAT文件系统的USB磁盘或TF卡,将程序上传到开发板内。开始前,需将开发板上电开机并与宿主机的超级终端建立通讯连接。

设备挂载

USB磁盘

对于USB磁盘,将设备插入开发板的USB接口,超级终端回显[sda] Attached SCSI removable disk等提示,在超级终端按回车键进入命令行模式,执行:

mkdir /mnt/usb1
mount /dev/udisk /mnt/usb1/

即可挂载USB磁盘。

TF卡

对于TF卡,将设备插入开发板的TF卡槽,在超级终端按回车键进入命令行模式,执行:

mkdir /mnt/sdcard/
mount /dev/mmcblk1p1 /mnt/sdcard/

即可挂载TF卡。

执行程序

在超级终端通过cp指令将自编程序复制到开发板本地,例如:

cd /mnt/usb1
cp Demo /bin/

进入/bin文件夹,建立qt4脚本的副本并编辑:

cd /bin
cp qt4 qt-main
vi qt-main

通过在行首添加井号(“#”)的方式,注释掉qt-main文件中的以下行(通常位于文件末尾):

cd /opt/qt-4.7.1/demos/embedded/fluidlauncher
./fluidlauncher -qws

并在文件末尾添加下列行:

cd /bin
./Demo -qws

此处/bin/Demo是示例程序所在的位置,请根据实际情况改动。这样,qt-main文件的末尾看起来类似这样:

#cd /opt/qt-4.7.1/demos/textedit
#./textedit -qws

cd /bin
./Demo -qws

ESC键并输入:wq后按回车执行保存操作。

退出当前正在执行的Qt程序,并在超级终端中执行:

/bin/qt-main &

即可开始运行自编程序。

配置开机自启动

初始化配置文件位于:

/etc/init.d/rcS

在超级终端输入:

vi /etc/init.d/rcS

编辑该文件,文件末尾有以下行:

#/bin/qtopia &
/bin/qt4 &

通过在行首添加井号(“#”)的方式,将这两行全部设为注释状态,并在这两行后新建一行,输入:

/bin/qt-main &

ESC键并输入:wq后按回车执行保存操作,重启设备即可。

隐藏程序中的鼠标指针

Qt/E默认会提供一个鼠标指针,如果需要隐藏Qt/E提供的鼠标指针,可以在程序的启动脚本中编辑启动程序的命令所在的行,并启动参数末尾添加“ -nomouse”开关,使其看起来像这样:

./Demo -qws -nomouse

ESC键并输入:wq后按回车执行保存操作,重启设备即可。

跳过开机时的触控校准

Qt/E 4.7.1的触控校准文件被存放在/etc/pointercal位置下,系统启动时,如果该文件不存在或为空,则系统会调用tslib的触控校准程序/usr/local/tslib/bin/ts_calibrate

为了跳过校准流程,可以在Qt/E的启动脚本(/bin/qt4或用户自定义的启动脚本)中,通过在行首添加井号(“#”)的方式,将/usr/local/tslib/bin/ts_calibrate行设为注释状态,重建system.img镜像文件并重新刷写即可。

更新libstdc++库版本

Qt/E 4.7.1自带的libstdc++库的版本为6.0.10(位于/lib/libstdc++.so.6.0.10),运行通过arm-linux-4.4.1编译器编译的程序(尤其是进行了优化的程序)时可能出现“libstdc++.so.6: version ‘GLIBCXX_3.4.11’ not found”错误,可以通过提取arm-linux-4.4.1编译器的库文件libstdc++.so.6.0.12解决。

arm-linux-4.4.1编译器的库文件libstdc++.so.6.0.12位于:

/usr/local/arm/4.4.1/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6.0.12

将该文件复制到USB磁盘或TF卡,并将该设备插入开发板的相应接口并通过在超级终端中执行mount命令挂载,假设挂载点位于/mnt/disk,在超级终端中执行:

cd /lib
cp /mnt/disk/libstdc++.so.6.0.12 ./
rm libstdc++.so
rm libstdc++.so.6
ln -s libstdc++.so.6.0.12 libstdc++.so.6
ln -s libstdc++.so.6 libstdc++.so

完成后,重新启动设备即可。

如果需要重建system.img镜像,也可以在先前解包root_********.tar.gz得到的root目录中处理/lib/stdc++.so/lib/stdc++.so.6等相关文件:

cp '/usr/local/arm/4.4.1/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6.0.12' '/home/picsell-dois/iTop4412/Qtopia/root/lib'
cd '/home/picsell-dois/iTop4412/Qtopia/root/lib'
rm libstdc++.so
rm libstdc++.so.6
ln -s libstdc++.so.6.0.12 libstdc++.so.6
ln -s libstdc++.so.6 libstdc++.so

完成后,回到终端执行:

cd /home/picsell-dois/iTop4412/Qtopia/
rm system.img
make_ext4fs -s -l 314572800 -a root -L linux system.img root

重建system.img并执行刷写流程即可。

固化更改到设备固件

如果需要重建Qtopia的system.img镜像,也可以在先前解包root_********.tar.gz得到的root目录中编辑相关文件:

gedit '/home/picsell-dois/iTop4412/Qtopia/root/etc/init.d/rcS'
cp '/home/picsell-dois/iTop4412/Qtopia/root/bin/qt4' '/home/picsell-dois/iTop4412/Qtopia/root/bin/qt-main'
gedit '/home/picsell-dois/iTop4412/Qtopia/root/bin/qt-main'

随后,将自编程序复制到/home/picsell-dois/iTop4412/Qtopia/root/目录中的相应位置。

完成后,回到终端执行:

cd /home/picsell-dois/iTop4412/Qtopia/
rm system.img
make_ext4fs -s -l 314572800 -a root -L linux system.img root

重建system.img并执行刷写流程即可。

安装绘图插件QCustomPlot

QCumstomPlot是一个支持Qt 4.6到Qt 5.11的绘图插件,可用于绘制专业的图像。

下载链接:https://www.qcustomplot.com/index.php/download

配置指南:https://www.qcustomplot.com/index.php/tutorials/settingup

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License