嵌入式课程设计报告_第1页
嵌入式课程设计报告_第2页
嵌入式课程设计报告_第3页
嵌入式课程设计报告_第4页
嵌入式课程设计报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式课程设计课题: 基于QT的界面程序设计 专业: 电子信息工程 班级: 电子 1102 班 姓名: 陈玮、郑楚钒 学号: / 指导老师: 陈婧/张平均/肖传清 日期: 2014.09.01-2014.09.14 目录一、 设计目的3二、设计任务及要求3三、方案设计31 内核编译32 系统文件3四、嵌入式系统开发环境建立31 安装交叉编译器32 安装tslib43 安装Qt4.754、制作文件系统65内核的静态编译8五、烧写11六、NFS挂载111、安装NFS112、配置/etc/exports123远程挂载开发板的文件系统12七、QT界面设计(LED实现)151运行qt-creator-l

2、inux-86-opensource-2.7.0.bin安装qtcreater152 添加ARM平台的编译环境设置153 创建一个工程154 LED界面设计(LED 14分别控制等01,CLOSE用于熄灭全部的灯)165 主要程序代码16八、结果21九、设计过程中遇到的问题21遇到的问题及解决方法21十、设计总结22a)参考文献22基于QT界面的程序设计1、 设计目的1进一步巩固嵌入式系统的基本知识;2掌握嵌入式应用系统的基本结构;3掌握嵌入式系统开发环境建立和使用;4掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;5学会查阅有关专业资料及设计手册;6.QT界面编程。二、设计任务及要

3、求1掌握嵌入式系统开发环境建立和使用;2掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;3、QT在PC上的安装、4、QT在开发板上的移植1)、触摸屏原理及tslib库的工作原理;2)、QT设计LED灯控制,设计方案自由发挥,可以单个控制LED灯、也可以流水灯的控制,可控制流水灯的频率(1-5HZ可选)5、QT界面程序设计6编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;7绘制有关图纸.三、方案设计1 内核编译有两种方案,一种是静态编译内核,另一种是动态编译内核。静态编译在编译的过程中比较麻烦,而且还要编译镜像文件;动态编译虽然较简单,但是每次都要编译。我选择

4、的是静态编译,这样只需要编译一次就可以了。2 系统文件可以远程挂载,也可以编译成镜像文件。编译镜像文件的话,只要里面的东西改变就要重新编译,重新导入。所以我选择NFS挂载。四、嵌入式系统开发环境建立1 安装交叉编译器(1)解压EABI-4.3.3_EmbedSky_.tar.bz2tar xvf EABI_4.3.3_EmbedSky_.tar.bz2 -C /(2)设置环境变量export PATH=/opt/EmbedSky/4.3.3/bin:$PATH(3).永久设置环境变量vi /etc/profile 在最后添加一行export PATH=/opt/EmbedSky/4.3.3/b

5、in:$PATH2 安装tslib(1)解压tslib.tar.gztar -xvf tslib.tar.gz -C /(2)创建目录mkdir /opt EmbedSky/tslib_install(3)在线安装autoconfautomakelibtool工具(4)生成configure文件./autogen.sh(5)配置configure文件./configure-prefix=/opt/EmbedSky/tslib_insatall-host=arm-linuxac_cv_func_malloc_0_nonnull=yes(6)编译(大概2030分钟)make(7)安装make in

6、stall如果以上步骤没错,则可以在/opt/tslib_install下出现我们需要的库文件,这些库文件我们移植时会用到。3 安装Qt4.7(1)解压qt-everywhere-opensource-src-4.7.4.tar.gztar -zxvf qt-everywhere-opensource-src-4.7.4.tar.gz -C /(2)配置configure./configure -embedded arm -release -opensource -silent -qt-libpng -qt-libjpeg -qt-libmng -qt-libtiff -no-multimed

7、ia -make libs -nomake tools -nomake examples -nomake docs -nomake demos -qt-kbd-linuxinput -qt-mouse-tslib -xplatform qws/linux-arm-g+ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-qt3support -no-nis -no-cups -no-iconv -no-dbus -no-openssl -no-fast -no-accessibility -no-scripttools -

8、no-mmx -no-multimedia -svg -no-webkit -no-3dnow -no-sse -no-sse2 -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -no-glib -prefix /opt/EmbedSky/qt-4.7.4-arm/ -I /opt/EmbedSky/tslib_install/include -L /opt/EmbedSky/tslib_install/lib(3) 编译(大概两个小时)make(4) 安装make install安装成功后/opt/EmbedS

9、ky/qt-4.7.4-arm/bin里面有qmake4、制作文件系统(1) 文件系统相关文件将root_qt_4.5__.tar.bz2 解压到根下(2) 修改用户权限(3) 触摸屏校准tslib相关文件 将/opt/EmbedSky/tslib_install/lib/目录下的文件拷贝到文件系统目录的root_nfs/lib/下 拷贝 tslib 提供的触摸屏校准程序 ts_calibrate至root_nfs/bin/目录下 (4)拷贝字体文件解压: tar xvfz /opt/wqy-zenhei-0.8.38-1.tar.gz -C /opt/EmbedSky(5)Q

10、t4.7相关文件在文件系统中创建文件夹/opt/qt-4.7.4,用于存放qt-4.7.4的生成文件mkdir -p /opt/EmbedSky/root_nfs/opt/qt-4.7.4将/opt/EmbedSky/qt-4.7-.4arm/lib和/opt/EmbedSky/qt-4.7-.4arm/plugins拷贝到文件系统中的/opt/EmbedSky/root_nfs/opt/qt-4.7.4文件夹中cp-rf/opt/EmbedSky/qt-4.7.4-arm/lib/opt/EmbedSky/root_nfs/opt/qt-4.7.4cp-rf/opt/EmbedSky/qt-

11、4.7.4-arm/plugins/opt/EmbedSky/root_nfs/opt/qt-4.7.4mkdir /opt/EmbedSky/root_nfs/opt/qt-4.7.4/bin拷贝自己的可执行文件到/opt/EmbedSky/root_nfs/opt/qt-4.7/bin(6) 修改文件系统中的profile文件vi /etc/profileexport set QTDIR=/opt/qt-4.5 改成 export set QTDIR=/opt/qt-4.7.4export set QPEDIR=/opt/qt-4.5 改成 export set QPEDIR=/opt/q

12、t-4.7.45内核的静态编译(1) 解压liux--.tar.bz2 到根 (2)配置裁剪内核输入make menconfig 弹出以下菜单选择 Load an Alternate Configuration File,将弹出配置文件选择对话框,在文本框中输入配置文件config_EmbedSky_A70_256MB,如下图,选择“OK”按回车键完成配置文件的选择:完成配置文件的选择后,菜单将进入到初始界面,接下来将根据下面的步骤来完成对LED 驱动的支持,通过计算机键盘上下键选择Device Drivers 并按回车,将出现以下菜单:按上下键选择 Character dev

13、ices 并按回车,将出现以下菜单:按上下键选择EmbedSky SKY2440/TQ2440 Board GPIO Test (Control LED) 并按y 键,前面的内将有*号,表明选中Led 驱动,如下图:按左右键选择 Exit 回到上一级菜单,依次,当最后一次选择Exit 时,会弹出以下对话框提示是否保存配置:执行以下命令编译内核make zImage编译完成之后将在路径$linux-/arch/arm/boot 下生成zImage 镜象五、烧写1U-boot的移植打开超级终端将板子和电脑连上后,选择1烧写U-boot,然后用dnw传送U-boot文件2内核Z-im

14、age的移植选择3烧写内核,然后用dnw传送Z-image文件3远程挂载开发板的文件系统六、NFS挂载在ubuntu下安装、配置nfs服务的步骤如下:Ubuntu14.04配置TFTP和NFS1、安装NFSUbuntu上默认是没有安装nfs服务器的,因此我们首先安装nfs服务器端:$sudo apt-get install nfs-kernel-server 2、配置/etc/exportsNFS允许挂载的目录及权限在文件/etc/exports中进行了定义。例如,我们要将根目录下的/opt/EmbedSky/rootfs目录共享出来,那么我们需要在/etc/exports文件末尾添加如下一行

15、:/opt/EmbedSky/rootfs *(rw,sync,no_root_squash)3远程挂载开发板的文件系统(1) 修改虚拟机IP地址 ifconfig eth0 0修改/opt/EmbedSky/toot_nfs/etc/init.d/目录下的rcS文件设置开发板的IP地址,并将无用的代码注释掉(2)打开超级终端,连接开发板(3)修改开发板/etc/init.d/目录下的rcS文件,并将无用的代码注释掉(4)在超级终端设置IP和挂载目录在开发板中先输入0进入ParameterMenu,再输入1进行SetNFSbootparameter,依次设置虚拟机的IP

16、地址、开发板的IP地址、子网掩码的IP地址以及挂载目录,最后先输入s保存,再输入q退回主菜单,再选择8进入Bootthesystem挂载成功后如下图所示:七、QT界面设计(LED实现)1运行qt-creator-linux-86-opensource-2.7.0.bin安装qtcreater 2 添加ARM平台的编译环境设置(1) 添加arm的环境3 创建一个工程(1) 创建工程打开qtcreator后,创建一个工程,如下图,命名为LED,类名为led,之后一直next (2)添加arm 和pc机环境下的qmake4 LED界面设计(LED 14分别控制等01,CLOSE用于熄灭全部的灯)5

17、主要程序代码(1)程序初始化Led.h#ifndef LED_H#define LED_H#include#include namespace Ui class LED;class LED : public QMainWindow Q_OBJECT public: explicit LED(QWidget *parent = 0); LED();public slots: void L1(); void L2(); void L3(); void L4(); void CL();private: Ui:LED *ui; int led1,led2,led3,led4;#endif / LED_

18、HLed.cpp#include led.h#include ui_led.h#include #include #include #include#include #include#include#includeint fd;LED:LED(QWidget *parent) : QMainWindow(parent), ui(new Ui:LED) ui-setupUi(this); int screenWidth=QDirectPainter:screenWidth(); int screenHeight=QDirectPainter:screenHeight(); this-resize

19、(screenWidth,screenHeight); connect(ui-pushButton_LED1,SIGNAL(clicked(),this,SLOT(L1(); connect(ui-pushButton_LED2,SIGNAL(clicked(),this,SLOT(L2(); connect(ui-pushButton_LED3,SIGNAL(clicked(),this,SLOT(L3(); connect(ui-pushButton_LED4,SIGNAL(clicked(),this,SLOT(L4(); connect(ui-pushButton_CLOSE,SIGN

20、AL(clicked(),this,SLOT(CL(); led1=0; led2=0; led3=0; led4=0; fd=open(/dev/GPIO-Control,0); if(fd0) perror(open device leds fail); exit(1); LED:LED() delete ui;void LED:L1() led1+; if(led1=1) ioctl(fd,0,0); ioctl(fd,0,1); ioctl(fd,0,2); ioctl(fd,0,3); ioctl(fd,1,0); qDebug() led1 on ; else if(led1=2)

21、 led1=0; ioctl(fd,0,0); qDebug() led1 off ; void LED:L2() led2+; if(led2=1) ioctl(fd,1,1); qDebug() led2 on ; else if(led2=2) led2=0; ioctl(fd,0,1); qDebug() led2 off; void LED:L3() led3+; if(led3=1) ioctl(fd,1,2); qDebug() led3 on ; else if(led3=2) led3=0; ioctl(fd,0,2); qDebug() led3 off ; void LE

22、D:L4() led4+; if(led4=1) ioctl(fd,1,3); qDebug() led4 on ; else if(led4=2) led4=0; ioctl(fd,0,3); qDebug() led4 off ; void LED: CL() if(led1=1)&(led2=1)&(led3=1)&(led4=1) ioctl(fd,0,0); ioctl(fd,0,1); ioctl(fd,0,2); ioctl(fd,0,3); qDebug() all led off ; / else/ ioctl(fd,1,0);/ ioctl(fd,1,1);/ ioctl(

23、fd,1,2);/ ioctl(fd,1,3);/ qDebug() all led on ;/程序调试完毕后,进入终端,到项目目录下,查到LED源代码,输入make,编译,编译成功后,将其拷贝到/opt/EmbedSky/root_nfs/opt/qt-4.7.4/bin中。在超级终端下调试:(1) 到校准文件的路径下执行./ts_calibtate(2) 输入ps命令,把 hello world程序kill(3) 执行./LEDqws fn HHH,成功后,能弹出自己设计的界面,按键能按照之前设计的运行。 八、结果成功后,能弹出自己设计的界面,按键能按照之前设计的运行。LED 1:按一次点亮LED0,再按一次熄灭 LED 2:按一次点亮LED1,再按一次熄灭 LED 3:按一次点亮LED2,再按一次熄灭 LED 4:按一次点亮LED3,再按一次熄灭 CLOSE :当全部灯亮的时候,按一次熄灭全部的灯。九、设计过程中遇到的问题遇到的问题及解决方法(1) 配置qt-4.7.时出现的问题解决方法:编译器版本的问题,重新安装编译器。(2) nfs挂载文件系统的时候不能挂载成功解决方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论