iMX6开发板QT移植 - 基于飞凌嵌入式i.MX6开发板

分享到:

虚拟机环境:ubuntu12.04 32bit /64bit

 

目标平台:i.MX6 开发板

 

交叉编译工具链:gcc gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12

 

文件系统: 飞凌嵌入式提供的rootfs

 

2015121916447069914

 

注意:

 

1 飞凌嵌入式iMX6开发平台发布资料里面提供编译好的Qt 库和开发工具 qt4.8.5-sdk.tar.bz2, tslib-sdk.tar.bz2,如果您进行Qt 应用程序的开发可以不用编译Qt,直接跳到1.4 节,进行应用程序的开发。

 

2 发布的Linux 文件系统中默认含有Qt 库,可以直接运行Qt 应用程序,Qt 版本:Qt4.8.5。

 

 

1.1.1 安装交叉编译器

 

拷贝tools 目录下的 gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz

 

到//work/imx6 目录下面

 

root@forlinx:/work/imx6/qt4.8.5# tar xvf gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz -C /usr/local/arm

 

注意:本操作是在32bit ubuntu12.04运行。如果在64bit ubuntu12.04下运行32bit可执行程序,必须执行 sudo apt-get install ia32-libs libc6-i386 ,安装在64bit ubuntu12.04 下32bit程序的运行库。

 

root@forlinx:/work/imx6/qt4.8.5#/usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-gcc -v

 

2015121916o279633299

 

1.1.2 设置交叉编译器环境变量

 

# gedit /etc/profile

 

在文件的末尾添加如下环境变量:

 

export PATH= root@forlinx:/work/imx6/qt4.8.5#/usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin:$PATH

 

export TOOLCHAIN= /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain

 

export TB_CC_PREFIX=arm-none-linux-gnueabiexport

 

PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi

 

如下图所示:

 

2015121916279633299

 

1.1.3 导入环境变量

 

# source /etc/profile

 

# arm-linux-gcc -v

 

如下图所示则说明添加编译器成功:

 

2015121916268776915

 

1.2 移植tslib

 

tslib 是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供

 

诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。因

 

此这里先编译安装tslib,这样在后面编译Qt 的时候才能打包编译进去

 

1.2.1 安装autoconf、automake、libtool包

 

# sudo apt-get install autoconf #tslib 依赖

 

# sudo apt-get install automake #tslib 依赖

 

# sudo apt-get install libtool #tslib 依赖

 

# sudo apt-get install g++ #tslib 依赖

 

# sudo apt-get install libc6-dev:i386 #qt4.8.5依赖

 

#sudo apt-get install build-essential #qt4.8.5依赖

 

#sudo apt-get install gcc-multilib #qt4.8.5依赖

 

1.2.2 拷贝压缩文件

 

拷贝src 目录下tslib-1.4-src.tar.bz2 的到/work/imx6(推荐)目录下面

 

# tar -xvf tslib-1.4-src.git.tar.bz2

 

# cd tslib

 

# ./tslib.sh #飞凌提供的编译脚本,执行完会将tslib 默认安装到/usr/local/arm/tslib

 

1.2.3 移植tslib到i.MX6目标板

 

假设用户的根文件系统路径为: /work/imx6/rootfs

 

执行以下命令:

 

# cd /usr/local/arm/tslib

 

# cp -ar lib/* /work/imx6/rootfs /usr/lib

 

# cp -ar bin/*/work/imx6/rootfs/usr/bin

 

# vi etc/ts.conf #去掉module_raw input 前注释符#,一定要注意中间的空格也去掉,module 顶格

 

# cp -ar etc/* /work/imx6/rootfs /etc

 

1.2.4 导出tslib环境变量

 

# cd /work/imx6/rootfs

 

# vi etc/rc.d/qt_env.sh

 

添加以下环境变量

 

export TSLIB_TSDEVICE=/dev/input/touchscreen0

 

export TSLIB_CONFFILE=/etc/ts.conf

 

export TSLIB_PLUGINDIR=/usr/lib/ts

 

export POINTERCAL_FILE=/etc/pointercal

 

export TSLIB_CALIBFILE=/etc/pointercal

 

export TSLIB_CONSOLEDEVICE=none

 

export TSLIB_FBDEVICE=/dev/fb0

 

< tslib 环境变量说明:

 

TSLIB_CONFFILE //配置文件名

 

TSLIB_PLUGINDIR //插件目录

 

POINTERCAL_FILE: //指定包含用于校准指针设备的数据的文件

 

TSLIB_TSDEVICE //触摸屏设备文件名

 

TSLIB_CALIBFILE //校准的数据文件,由ts_calibrate 校准程序生成

 

TSLIB_CONSOLEDEVICE //控制台设备文件名

 

TSLIB_FBDEVICE //设备名

 

以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的

 

开发板上的/dev 目录下的设备节点相对应。

 

1.2.5 在i.MX6q目标板下测试tslib

 

用新文件系统启动i.MX6q 板子,进入shell 后执行如下命令:

 

#source /etc/rc.d/qt_env.sh

 

# ts_calibrate 对电阻屏进行触摸较验

 

# ts_test 对电阻屏进行触摸测试

 

1.3 移植QT4.8.5

 

1.3.1 拷贝压缩文件

 

拷贝src 目录下的qt-everywhere-opensource-src-4.8.5.tar.gz 到/work/imx6 目录下面 ,请注意,

 

我们对Qt 源码进行了必要的配置,默认配置路径就是 /work/imx6 ,如果您的Ubuntu 里面没有该路

 

径请执行如下命令创建 ”/work/imx6” 路径:

 

#mkdir /work/imx6

 

执行以下命令解压Qt 源码文件夹:

 

# tar xvfj qt-everywhere-opensource-src-4.8.5.tar.gz

 

#tar xvfj linux-imx6-g++.tar.bz2

 

#cp –fr linux-imx6-g++ qt-everywhere-opensource-src-4.8.5/mkspecs/qws/ linux-imx6-g++

 

#cp qteverywhere.sh qt-everywhere-opensource-src-4.8.5/

 

# cd qt-everywhere-opensource-src-4.8.5

 

#export PATH=$PATH: /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/

 

修改qt-everywhere-opensource-src-4.8.5/mkspecs/common/linux.conf,pthread后面添加-lts

 

#make confclean

 

#make clean

 

# ./qteverywhere.sh ##飞凌提供的编译脚本,执行完会将qt 默认安装到/usr/local/arm/qt4.8.5

 

#make

 

#mkdir –p /usr/local/freescale/qt4.8.5

 

#make install

 

#/usr/local/freescale/qt4.8.5/bin/qmake –v #查看是否按照成功

 

如下图所示则说明添加qt库编译器成功

 

2015121916273096982

 

1.3.3 移植qt4.8.5 到i.MX6 目标板

 

# cd /usr/local/freescale/qt4.8.5/

 

# cp -ar lib/libQt* lib/fonts/ /work/imx6/rootfs/opt/forlinx_qt4.8/lib

 

# cp -ar demos/embeddeddialogs/embeddeddialogs /work/imx6/rootfs/opt/forlinx_qt4.8/bin

 

注:若opt/forlinx_qt4.8{lib,bin}目录不存在可以自己创建,也可以是其他目录

 

1.3.4 导出qt环境变量

 

# cd /work/imx6/rootfs

 

# vi etc/rc.d/qt_env.sh#添加以下环境变量

 

export QTDIR=/opt/qt4.8.5

 

export PATH=$QTDIR/bin:$PATH

 

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

 

export QT_PLUGIN_PATH=$QTDIR/plugins

 

export QT_QWS_FONTDIR=$QTDIR/lib/fonts

 

export QWS_MOUSE_PROTO=tslib:/dev/input/event2

 

export QWS_DISPLAY="linuxfb:mmWidth50:mmHeight130:0"

 

export QWS_SIZE=800x480

 

Qt 环境变量说明:

 

LD_LIBRARY_PATH:指定qt 的共享库具体路径

 

QT_QWS_FONTDIR:指定qt 的font 具体路径

 

QWS_SIZE:设定在屏幕尺寸

 

QWS_DISPLAY:指定的显示类型和帧缓冲区

 

QWS_MOUSE_PROTO:指定触摸设备

 

以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发

 

板上的/dev 目录下的设备节点相对应。

 

开机自动启动程序放在/etc/rc.d/apps.sh

 

内容如下:

 

#!/bin/sh

 

#apps

 

cd /opt/qt4.8.5/demos/embedded/fluidlauncher

 

./fluidlauncher -qws &

 

#apps

 

手动运行程序

 

#source /etc/rc.d/qt_env.sh

 

cd /opt/qt4.8.5/demos/embedded/fluidlauncher

 

./fluidlauncher -qws &

 

 

1.3.5 i.MX6 目标板下测试QT4.8.5

 

用新移植的文件系统启动开发板,进入shell 后执行如下命令:

 

# cd /opt/forlinx_qt4.8/bin/

 

# ./embeddeddialogs -qws&

 

注意:如果想让界面竖屏显示,只需添加-display "Transformed:Rot90"参数即可。

 

如下图所示:

 

2015121916326977766

 

1.4 Qt Creator开发环境搭建及编程

 

1.4.1 安装Qt Creator2.4.1

 

在Ubuntu图形gui安装

 

2015121916325371565

 

在Ubuntu 命令行执行如下命令:

 

#apt-get install qtcreator

 

安装完成后在终端输入以下命令,开启Qt Creator

 

#qtcreator&

 

2015121916334758527

 

1.4.2 设置Qt Creator 使其支持交叉编译

 

点击Qt Creator 的Tools 菜单下的Options,点击左列 Build & Run,然后点击界面右侧的Tools Chains

 

标签页, 然后点击Add 添加GCCE, 单击Compiler path Browse 添加交叉编译器

 

(/usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-g++)的路径,如下图所示:

 

2015121916355200178

 

Qt Creator Versions 的设置

 

点击Add 添加/usr/local/freescale/qt4.8.5/bin/qmake 文件(我们提供的qt4.8.5-sdk.tar.bz 含有qmake 文件,把

 

qt4.8.5-sdk.tar.bz 压缩包释放到/usr/local/ freescale 目录即可),添加进去,之后,点击Apply 即配置完成。

 

2015121916364692609

 

1.4.3 新建hello Qt程序进行测试

 

创建一个Qt Widget Project 项目,如下图:

 

2015121916361285199

 

输入项目名称和项目路径,如下图:

 

2015121916379932951

 

选择Manually 版本(就是我们刚才添加的那个交叉编译器版本,一定要选对)

 

2015121916401385175

 

剩下的步骤默认就好,然后就可以通过Build->Build All 进行编译,如下图:

 

2015121916406864057

 

1.4.4 在开发板上测试qt 应用程序

 

2015121916411175473

 

注:由于qt 字体库里已包含一个中文字体,故直接可以在程序中使用中文,无需额外操作

 

继续阅读
Freedom开发平台FRDM-KE02Z——8位机终结者

飞思卡尔的Kinetis L系列是全球第一款基于ARM Cortex-M0+内核的微控制器产品,主要针对低端的8位/16位微控制器应用。Cortex-M0+家族不断扩大,飞思卡尔又宣布发布了最新的工业 级Kinetis E系列微控制器。全新Kinetis E系列MCU具有强大的系统电磁抗噪能力(过去只有8位和16位MCU具有这种能力),同时可在复杂电气噪声环境和要求高可靠性的应用中保持高稳定性,提 供高效率和最佳代码密度。

浅谈汽车的影像技术的未来发展

前言 起点其实非常早   汽车影像系统是一个听起来非常高端甚至于玄奥的东西,但是他却没那么复杂,众多消费者在买车时经常问到的“倒车影像”系统就是目前常见的汽车影像类产品之一,限于笔者的