[嵌入式系统]课程设计
课程设计
题 目:
班 级:学 号:
姓 名:
指导老师:
2016年 01 月 17
日
目录
一、实验课题 ---------------------------------------------------------------------------------- 1
二、课程目标 ---------------------------------------------------------------------------------- 1
三、任务要求 ---------------------------------------------------------------------------------- 1
四、课程内容 ---------------------------------------------------------------------------------- 1
4.1 Linux初识 --------------------------------------------------------------------------------------- 1
4.1.1 CentOS简介(教室虚拟机用) --------------------------------------------------------- 2
4.1.2 MintLinux简介(自用) ----------------------------------------------------------------- 2
4.2 准备 ---------------------------------------------------------------------------------------------- 3
4.3 安装交叉编译工具 ---------------------------------------------------------------------------- 3
4.4 安装nfs服务 ----------------------------------------------------------------------------------- 5
4.5 安装minicom串口通信工具 ---------------------------------------------------------------- 7
4.6 TQ2440与Linux的文件共享 ---------------------------------------------------------------- 8
4.6.1 在TQ2440挂载Linux文件系统 ------------------------------------------------------- 8
4.6.2 TQ2440利用nfs服务启动远端QT文件系统 ---------------------------------------- 9
4.7 TQ2440开发版烧写 -------------------------------------------------------------------------- 10
4.8 QT编程环境搭建 ------------------------------------------------------------------------------ 10
4.8.1 编译QT的x86及arm双平台环境 -------------------------------------------------- 10
4.8.2 安装QTCreator软件 -------------------------------------------------------------------- 11
4.8.3 MintLinux下QT环境遇到的问题 ---------------------------------------------------- 12
4.9 完善QT文件系统的QT-4.7库 ------------------------------------------------------------- 12
4.9.1 Tslib触屏检测 ---------------------------------------------------------------------------- 12
4.9.2 移植QT-4.7库到nfs文件系统 ------------------------------------------------------- 13
4.9.3 在nfs文件系统中添加文泉驿中文正黑体字库 ------------------------------------ 13
4.9.4 设置环境变量及指令软连接 ----------------------------------------------------------- 13
4.10 利用QtCreator创建测试程序 ------------------------------------------------------------ 14
4.10.1 新建项目“FloatTest” ----------------------------------------------------------------- 14
4.10.2 界面ui设计 ----------------------------------------------------------------------------- 15
4.10.3 添加代码 --------------------------------------------------------------------------------- 15
4.10.4 编译测试 --------------------------------------------------------------------------------- 16
4.10.5 QT项目文件结构的认识 -------------------------------------------------------------- 17
4.11 LED编程测试--------------------------------------------------------------------------------- 17
4.11.1 动态加载LED驱动程序 -------------------------------------------------------------- 17
4.11.2 新建文件夹“Qt4_LED”作项目文件夹 ------------------------------------------- 17
4.11.3 touch 出QT项目4个基础文件 ----------------------------------------------------- 17
4.11.4 界面ui设计 ----------------------------------------------------------------------------- 17
4.11.5 利用vim编写代码 -------------------------------------------------------------------- 18
4.11.6 利用终端编译 --------------------------------------------------------------------------- 20
五、课程总结 -------------------------------------------------------------------------------- 21
一、实验课题
Linux平台下基于TQ2440嵌入式开发板的QT编程及移植
二、课程目标
进一步巩固嵌入式系统的基本知识; 掌握嵌入式应用系统的基本结构; 掌握嵌入式系统开发环境搭建与试用; 掌握嵌入式系统基本驱动、应用程序的设计和移植调试;
三、任务要求
安装交叉编译工具;
安装nfs服务与minicom软件;
搭建QT环境(编译QT源码方式)及安装QtCreator软件;
学习QT编程语言;
四、课程内容
4.1 Linux初识
Linux,用最简单的术语来说,它也就是个操作系统。通过系统,让应用程序和管理人员能够访问计算机上的设备来执行所需的功能。详细了说,Linux也是和Windows、Mac OS等非常相似的操作系统。
Linux是一种自由和开放源代码的类UNIX操作系统。该操作系统的内核由linus在1991年10月5日首次发布。只要遵循GNU通用公用许可证(GPL)任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和二次发布。大多数Linux发行版还包括像提供GUI的X-Window之类的界面框架。
严格来说,Linux只表示操作系统内核本身,但现况基本指代所有采用Linux内核的操作系统,包括GUI组件和许多其他工具。这些支持用户空间的系统工具和库主要由Richard于1983年发起的GNU计划提供,但Linux不属于GNU计划。
4.1.1 CentOS简介(教室虚拟机用)
CentOS(Community Enterprise Operating System)是Linux发行版之一,它是来自于RHEL(Red Hat Enterprise Linux)依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的RHEL使用。两者的区别在于,CentOS并不包含封闭源代码软件,对上游代码的主要修改是为了移除不能自由使用的商标。2014年,CentOS宣布与Red Hat合作,但CentOS将会在新的委员会下继续运作,并不受RHEL的影响。
4.1.2 MintLinux简介(自用)
Linux Mint是一种基于Ubuntu和Debian开发出的Linux操作系统。由Linux Mint Team团队于2006年开始发行。Linux Mint的目标是为家庭用户和企业客户提供一个免费、高效、易用、高雅的桌面操作系统。
Linux Mint是目前DistroWatch排行榜上第一名的Linux发行版。
他继承了Ubuntu的众多优点,同时也在Ubuntu的基础上加入很多自己优秀的特性。Linux Mint致力于提供一种更开箱即刻可用的用户体验,免去用户要安装系统后还要自己安装一系列满足基本使用需求的软件。它包括提供浏览器插件、多媒体编解码器、对DVD播放的支持、Java和其他组件。它也增加了一套定制桌面及各种菜单,一些独特的配置工具,以及一份基于web的软件包安装界面。
因为基于Ubuntu,Linux Mint与Ubuntu软件仓库完全兼容,采用apt管理和.deb软件包。
从5.0开始,Mint遵循每六个月发布一次新版本的制度,并且采用简化的版本计划。 从17.0开始,Mint基于Ubuntu长期支持版,并会在下一个长期支持版发布之前持续向后移植一些重要的应用程序,下一个长期支持版本发布后,则转为只有安全更新的模式直到支持结束。
此外有不基于Ubuntu而基于Debian稳定版的版本,称之为LMDE (Linux Mint Debian Edition),目前最新版本为2(Besty)。
4.2 准备
4.3 安装交叉编译工具
解压缩EABI工具包:tar jxvf /mnt/hgfs/hz/EABI-4.3.3_EmbedSky_20091210.tar.bz2 –C / 添加路径至全局变量PATH
vim /etc/bash.bashrc
添加上:extport PATH=$PA
TH:/opt/EmbedSky/4.3.3/bin
使用source /etc/bash.bashrc使bash.bashrc重新生效
查看全局变量PATH:echo $PA
TH
使用arm-linux-gcc –v查看该交叉编译器版本,间接确定了该交叉编译工具在全局可用
4.4 安装nfs服务
使用sudo apt-get install nfs-kernel-server来安装nfs服务
同时,还需关闭防火墙ufw以及卸载iptables服务
并在/etc/exports添加nfs共享路径及权限:
重启nfs服务:
简单测试nfs服务挂载功能:
可以看到,成功把自己的根目录挂载到/mnt下了
使用:umount /mnt来卸载:
4.5 安装minicom串口通信工具
使用指令:sudo apt-get install minicom来安装minicom软件
我们还需要进行一些设置,才能使minicom识别到串口minicom -s:
完后保存为默认dfl,Exit退出
4.6 TQ2440与Linux的文件共享
4.6.1 在TQ2440挂载Linux文件系统
4.6.2 TQ2440利用nfs服务启动远端QT文件系统
解压缩root_qt_4.5_2.6.30.4_20100601.tar.bz2:
tar jxvf root_qt_4.5_2.6.30.4_20100601.tar.bz2 -C / 改名为rootnfs:
修改nfs文件系统的rcS配置:
使用串口线和网线,使TQ2440与PC机连接,终端开启minicom,TQ2440开机,终端敲空格,进入定义启动方式:先选0 set boot parameters;再选1 set NFS parameters;然后输入PC机IP:192.168.1.3;TQ2440开发板IP:192.168.1.6;子网掩码:255.255.255.0;nfs文件系统路径:/opt/EmbedSky/rootnfs;s 保存当前设置;q 退回上层菜单;8 重新启动。
4.7 TQ2440开发版烧写
使用DNW软件(Windows平台)用USB线连接TQ2440开发板 按照如下顺序烧写(传送文件): u-boot_TFT70.bin (u-boot) zImage_2.6.30.4_A70_256MB.bin (内核) root_qtopia_2.2.0_2.6.30.4_256MB.bin (文件系统)
4.8 QT编程环境搭建
4.8.1 编译QT的x86及arm双平台环境
解压缩qt-everywhere-opensource-src-4.7.0.tar.gz到/opt/EmbedSky/qt-4.7/下
复制执行脚本到/opt/EmbedSky/qt-4.7/下
当前qt-4.7路径下
分别执行./x86_qt4.7_build和./arm_qt4.7_build来编译x86和arm的双平台Qt库环境
4.8.2 安装QTCreator软件
执行chmod 777 qt-creator-linux-x86-opensource-2.0.0.bin赋予可执行权限
然后执行./qt-creator-linux-x86-opensource-2.0.0.bin进行安装
4.8.3 MintLinux下QT环境遇到的问题
编译完成后,x86的qmake手动添加到QtCreator后是可以rebuild成功的,但是arm的却不行,于是上网开始找答案,解决方法如下:
4.9 完善QT文件系统的QT-4.7库
4.9.1 Tslib触屏检测
解压缩tslib-1.4.1.tar.bz2到根目录
创建一个tslib的安装目录
进入源码目录进行编译、安装:
将tslib_install/lib/下的文件拷贝到文件系统的lib/下
将tslib提供的触摸屏校准程序ts_calibrate拷贝到nfs文件系统下
4.9.2 移植QT-4.7库到nfs文件系统
在nfs文件系统中创建/opt/qt-4.7,用来存放qt4.7的库文件
4.9.3 在nfs文件系统中添加文泉驿中文正黑体字库
将wqy-zenhei中文字体库拷贝到nfs文件系统下:
4.9.4 设置环境变量及指令软连接
修改nfs文件系统的etc/profile:
修改nfs文件系统的bin/qt4:
创建双平台的qmake软连接
4.10 利用QtCreator创建测试程序
4.10.1 新建项目“FloatTest”
新建Qt Gui Application模板项目:
4.10.2 界面ui设计
4.10.3 添加代码
floatcal.h添加如下代码:
floatcal.cpp添加如下代码:
4.10.4 编译测试
用qmake-arm命令生成arm编译的
makefile
然后再执行make,就生成了arm平台可执行的二进制文件,复制到nfs文件系统下:
在minicom使用./FloatTest –qws –fn HHH,执行该二进制可执行文件,就可看到TQ2440开发板上运行了我们设计的这个浮点计算器程序。
4.10.5 QT项目文件结构的认识
Qt项目仅需要4个的初始文件就可以使用命令,创建一个项目文件夹:XXX.cpp、XXX.h、XXX.ui、main.cpp。main.cpp基本上就是一个模板,可以固定不变,只要修改ui和其他cpp文件,就可以实现其他不同的功能了。
4.11 LED编程测试
4.11.1 动态加载LED驱动程序
复制EmbedSky_LED.ko到nfs文件系统目录下,使用insmod指令,动态加载驱动: # insmod EmbedSky_LED.ko 查看是否加载成功: #ls /dev/
看到dzled设备,即表示驱动加载成功。
4.11.2 新建文件夹“Qt4_LED”作项目文件夹
新建Qt4_LED文件夹:
4.11.3 touch 出QT项目4个基础文件
4.11.4 界面ui设计
利用QtCreator打开Qt4_LED.ui文件进行UI设计
4.11.5 利用vim编写代码
Qt4_LED.h:
Qt4_LED.cpp:
By Jaus_Hwang 黄钊
19
4.11.6 利用终端编译
利用qmake-arm –project生成qt4_led.pro工程文件:
20
By Jaus_Hwang 黄钊
利用qmake-arm –makefile Qt_LED.pro生成Makefile文件,然后make编译出arm平台的二进制可执行文件Qt4_LED,复制到nfs文件系统目录下
minicom终端执行./Qt4_LED –qws –fn HHH,就可以看到TQ2440开发板的显示屏上显示了设计的UI界面,并且当选中LED1时,开发板上第4个LED灯熄灭;选中LED2时,开发板上第3个LED灯熄灭;选中LED3时,开发板上第2个LED灯熄灭;选中LED4时,开发板上第1个LED灯熄灭。
五、课程总结
经过了这两周在实验室的学习,对嵌入式开发有了一定的了解,不过与此相比,我感觉我学到的Linux知识更多,Linux的效率真不是Windows所能比的。虽然UI可能。。。并不,现在的Linux桌面环境(DE),诸如:gnome、KDE、xfce4、LXDE等等的设计,真不比Win差,或许现在很多人不能接受Linux当做日常使用和工作的主要原因,还是迫于软件的局限,毕竟太多软件只有Win系的版本。虽然能找到些许替代软件,但还是有很大区别,且大部分人熟悉了一款软件,接收了一款软件,真的很难再去习惯另外一款软件,操作系统也就更不用说了。
而对于我而言,我是个喜欢各种尝鲜的人,经过这两周,真真切切地把我培养成了Linux粉。就这两周,我尝试了各种Linux发行版本。CentOS、RHEL、Debian、Fedora、Ubuntu、openSUSE、Linux Mint、ArchLinux,先是在虚拟机上作尝试,然后又不满足于虚拟机的性能局限,且笔记本里头我加了一块SSD,于是就真机也装上体验。这当中几个发行版本,最最喜欢的当属ArchLinux了,系统极度浓缩,从安装系统开始,每装上的一个软件都是自己选择的,系统的每一个路径有什么,都在自己的掌控中。试过一次后,我就喜欢上了这种纯指令的理念,从系统的安装到后期的日常使用,都是通过终端指令,进行人机交互,这种感觉就好像拥有了一个世界似的。
By Jaus_Hwang 黄钊
21