ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:329.65KB ,
资源ID:4651352      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4651352.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式课程设计报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式课程设计报告.docx

1、嵌入式课程设计报告嵌入式课程设计-基于QT的界面程序设计学院: 信息科学与工程学院 专业: 电子信息工程 班级: 姓名: 学号: 指导老师: 日期: 2015年06月15日 目录一、设计目的 3二、设计任务及要求 3三、方案设计 31 内核编译 32 文件系统 4四、搭建嵌入式系统开发环境 41 安装交叉编译器 42 安装tslib-1.4.1 43 安装Qt4.7 54、qt-4.5文件系统 6五、NFS挂载 6六、QT界面设计(LED实现) 71 QT creater安装 72 ARM平台的编译环境设置 73 创建工程 74 LED界面设计 85 主要程序代码 8七、结果 12八、总结 1

2、21遇到的问题及解决方法 122实验心得感想 13基于QT界面的程序设计一、设计目的1进一步巩固嵌入式系统的基本知识;2掌握嵌入式应用系统的基本结构;3掌握嵌入式系统开发环境建立和使用;4掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;5学会查阅有关专业资料及设计手册;6.QT界面编程。二、设计任务及要求1掌握嵌入式系统开发环境建立和使用;2掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;3、QT在PC上的安装、4、QT在开发板上的移植5、QT界面程序设计6编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;7绘制有关图纸三、方案设计1 内核编译两种方

3、案;一:静态编译内核,二:动态编译内核。用动态链接库编译生成的可执行文件需调用.so文件方可正常运行,灵活但稍显麻烦;用静态链接库编译生成的可执行文件可直接运行,不用再调用如.so般的依赖库文件,简单但不灵活,本次选用静态编译。2 文件系统在嵌入式linux系统中,编译的环境和运行的环境不一样,所以我们需要交叉编译工具,一般是在PC上面运行交叉编译工具编译好程序,然后再烧写到目标板的flash上,对于应用程序,我们需要频繁的调试,如果每次都需要烧写,那一定是一件很烦的事情,因此我们此次尝试通过NFS文件系统来调试程序的方法,减少调试工作量。四、搭建嵌入式系统开发环境1 安装交叉编译器(1)解压

4、EABI-4.3.3_EmbedSky_20091210.tar.bz2tar -xvf EABI-4.3.3_EmbedSky_20091210.tar.bz2 (2)设置环境变量export PATH=/opt/EmbedSky/4.3.3/bin:$PATH(3).永久设置环境变量vi /etc/profile 在最后添加一行export PATH=/opt/EmbedSky/4.3.3/bin:$PATH2 安装tslib-1.4.1(1)解压tslib-1.4.tar.gztar -zxvf tslib-1.4.tar.gz -C /(2)创建目录mkdir /opt EmbedSk

5、y/tslib_install(3)生成configure./autogen.sh(4)配置./configure -prefix=/opt/EmbedSky/tslib_install -host=arm-linux ac_cv_func_malloc_0_nonnull=yes(5)编译(大概2030分钟)make(6)安装make install如果以上步骤没错,则可以在/opt/tslib_install下出现我们需要的库文件,这些库文件我们移植时会用到。3 安装Qt4.7(1)解压qt-everywhere-opensource-src-4.7.0.tar.gztar -zxvf q

6、t-everywhere-opensource-src-4.7.0.tar.gz -C /(2)创建目录,把QT4.7安装在qt-4.7.0-arm目录下mkdir /opt/qtEmbedded/qt-4.7.0-arm(3)配置configure./configure -embedded arm -release -opensource -silent -qt-libpng -qt-libjpeg -qt-libmng -qt-libtiff -no-multimedia -make libs -nomake tools -nomake examples -nomake docs -nom

7、ake 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 -no-mmx -no-multimedia -svg -no-webkit -no-3dnow -no-sse -no-ss

8、e2 -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -no-glib -prefix /opt/EmbedSky/qt-4.7-arm/ -I /opt/EmbedSky/tslib_install/include -L /opt/EmbedSky/tslib_install/lib(4)编译(大概2.5小时)make(5)安装make install安装成功后/opt/QtEmbedded-4.7.0-arm/bin里面有qmake,稍后会用到4、qt-4.5文件系统(1)将root_qt_4.5_2.6.3

9、0.4_20100601.tar.bz2 解压到根下(2)超级用户下修改文件权限Chmod R 777 /opt/EmbedSky/root_nfs (3)拷贝字体文件解压: tar -xvf /opt/wqy-zenhei-0.8.38-1.tar.gz -C /opt/EmbedSky (3)Qt4.7相关文件mkdir -p /opt/EmbedSky/root_nfs/opt/qt_4.7cp -rf /opt/EmbedSky/qt-4.7-arm/lib /opt/EmbedSky/root_nfs/opt/qt_4.7cp -rf /opt/EmbedSky/qt-4.7-arm

10、/plugins /opt/EmbedSky/root_nfs/opt/qt_4.7mkdir /opt/EmbedSky/root_nfs/opt/qt-4.7/bin拷贝自己的可执行文件到bin/opt/EmbedSky/root_nfs/opt/qt-4.7/bin(4) 修改环境profilevi /etc/profile export set QTDIR=/opt/qt-4.7 export set QPEDIR=/opt/qt-4.7五、NFS挂载参考实验指导书二,在CentOS下安装、配置nfs服务安装NFS安装nfs服务器端:$yum install nfs-kernel-se

11、rver 3、配置/etc/exportsNFS允许挂载的目录及权限在文件/etc/exports中进行了定义。例如,我们要将根目录下的/opt/EmbedSky/rootfs目录共享出来,那么我们需要在/etc/exports文件末尾添加如下一行:/opt/EmbedSky/rootfs *(rw,sync,no_root_squash)4、 拷贝文件将 tslib_install/lib/ 下的文件及bin下 tslib提供的触摸屏校准程序 ts_calibrate和仅利用qt-4.7生成的 lib和 plugins 文件。拷贝到共享目录/source/rootfs下5 文件系统挂载(1)

12、设置虚拟机的IP地址(2)设置参数 超级终端命令端口下,USB线,网线,和串口连接正常,启动开发板,进入调试。依次设置PC机ip :192.168.1.7和开发板IP:192.168.1.6。保存并退出(3)nfs启动选择8进入系统,成功后 ,超级终端命令端口输入ls查看开发板文件系统中是否有先前拷贝的文件,有即挂载成功。六、QT界面设计(LED实现)1下载QT creater解压安装 【注:新版下载文件格式为.run文件,需要更改文件权限才能正常安装使用】2 ARM平台的编译环境设置(1)添加arm的环境3 创建工程(1)创建工程打开qtcreator后,创建一个工程,选择QT Gui Ap

13、plication 或者QT Widgets Application (3)手动arm 和pc机环境下的qmake4 LED界面设计(LED 14分别控制等01,CLOSE用于熄灭全部的灯)5 主要程序代码(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

14、 L2(); void L3(); void L4(); void CL();private: Ui:LED *ui; int led1,led2,led3,led4;#endif / LED_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 scre

15、enWidth=QDirectPainter:screenWidth(); int screenHeight=QDirectPainter:screenHeight(); this-resize(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

16、(),this,SLOT(L3(); connect(ui-pushButton_LED4,SIGNAL(clicked(),this,SLOT(L4(); connect(ui-pushButton_CLOSE,SIGNAL(clicked(),this,SLOT(CL(); led1=0;/软件清0,熄灭所有LED灯 led2=0; led3=0; led4=0; fd=open(/dev/GPIO-Control,0);/定义io端口 if(fd0) perror(open device leds fail); exit(1); LED:LED() delete ui;void LED:

17、L1()/LED控制程序 led1+; if(led1=1)/检测到有触屏信号L1输入全部灯熄灭,再将L1点亮 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) led1=0; ioctl(fd,0,0); qDebug() led1 off ; void LED:L2()/检测到有触屏信号L2入全部灯熄灭,再将L2亮 led2+; if(led2=1) ioctl(fd,1,1); qDebug() led2 on ; el

18、se if(led2=2) led2=0; ioctl(fd,0,1); qDebug() led2 off; void LED:L3()/检测到有触屏信号L3入全部灯熄灭,再将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 LED:L4()/检测到有触屏信号L4入全部灯熄灭,再将L4点亮 led4+; if(led4=1) ioctl(fd,1,3); qDebug() led4 on ; else i

19、f(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(fd,1,2);/ ioctl(fd,1,3);/ qDebug() all le

20、d on ;/程序构建调试完毕后,进入终端将源代码编译,将可执行文件拷贝到source下的rootfs中。在超级终端下调试:(1) 到校准文件的路径下执行./ts_calibtate(2) 输入ps命令,把 hello world程序kill(3) 执行./zgh qws fn HHH,成功后,能弹出自己设计的界面,按键能按照之前设计的运行。 七、结果成功后,能弹出自己设计的界面,按键能按照之前设计的运行。LED 1:按一次点亮LED0,再按一次熄灭 LED 2:按一次点亮LED1,再按一次熄灭 LED 3:按一次点亮LED2,再按一次熄灭 LED 4:按一次点亮LED3,再按一次熄灭 CLO

21、SE :当全部灯亮的时候,按一次熄灭全部的灯。八、总结1遇到的问题及解决方法错误1不同操作系统下指令的差别,之前Ubuntu使用apt-get的指令在centOS中需要使用yum命令,个别指令存在差别错误2configure:error:noacceptableCcompilerfoundin$PATHyum-yinstallgccgcc-c+gdb 问题解决。错误3 make command not found命令yum install make问题解决。错误4: install-fixincludes error 1.命令make clean 然后 make问题解决。错误5: gnu/st

22、ubs-32.h no such file or directory命令 yum install glibc-devel.i686问题解决错误6不同操作系统下指令的差别,之前Ubuntu使用apt-get的指令在centOS中需要使用yum命令,个别指令存在差别错误7: ft2build.h: No such file or directory命令yum install fontconfig-devel问题解决。错误8: Basic XLib functionality test failed! You might need to modify the include and library

23、search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11命令:执行yum install libX*,直接安装所有libX开头的包。程序编译错误:错误9:cannot find lgl error: collect2: ld returned 1 exit status命令yum install mesa-libGL-devel mesa-libGLU-devel (2个opengl核心库)命令yum install freeglut-devel (OpenGL Utility ToolKit )2实验心得感想通过本次实验,更加深入的了解了嵌入式程序开发的流程和方法。学习在搭建交叉编译环境的基础上对开发板进行NFS挂载调试。理论学习和实际操作存在着巨大差距,在课本上诸多的环境设置都是理想的,但一旦自己动手却总是一波三折,由于是用自己新装的centOS系统,因此总是会缺少各种设置或者编译器版本不够诸如此类的问题,但可喜的是,在同学帮助下和查阅资料的情况下,诸多问题迎刃而解,并最终成功进入编写程序调试设备的阶段。在尝试解决各类问题的同时,自己也从中学到更多的知识,更加输入的了解其环境搭建过程。总之,此次课程设计收获颇丰。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1