《合工大嵌入式系统实验报告(共20页).doc》由会员分享,可在线阅读,更多相关《合工大嵌入式系统实验报告(共20页).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上计算机和信息学院嵌入式系统实验报告学生姓名: 学 号: 专业班级: 2014 年 6 月 20 日实验一(1):熟悉Linux 开发环境一、实验目的熟悉Linux 开发环境,学会基于Mini6410 的Linux 开发环境的配置和使用。使用Linux 的arm-linux-gcc 编译,minicom串口方式下载调试二、实验内容本次实验使用Fedora 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写hello.c 和Makefile 文件。学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。下载
2、已经编译好的文件到目标开发板上运行。三、实验设备及工具(包括软件调试工具)硬件:Mini6410嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。 软件:PC机操作系统Fedora9MINICOMARM-LINUX 开发环境四、实验步骤1、建立工作目录rootzxtsmile#mkdirhellorootzxtsmile#cdhello2、编写程序源代码在Linux下的文本编辑器有许多,常用的是vi和Xwindow界面下的gedit等,开发过程中推荐使用vi。Kdevelope、anjuta软件的界面和vc6.0类似,使用它们对于熟悉windows环境下开发的用户更容易上手。
3、实际的hello.c源代码较简单,如下:includemain()printf(“helloworldn”);我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:rootzxthello#vihello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:wq”保存并退出。这样我们便在当前目录下建立了一个名为hello.c的文件。3、编写Makefile 要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需
4、要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,只需要敲一个“make”命令整个工程就可以实现自动编译,本次实验只有一个文件,它还不能体现出使用Makefile的优越性,但当工程比较大文件比较多时,不使用Makefile几乎是不可能的。本次实验用到的Makefile文件如下:CC=armv4l-unknown-linux-gccEXEC=helloOBJS=hello.oCFLAGS+=LDFLAGS+=staticall:$(EXEC)$(EXEC):$(OBJS)$(CC)$(LDFLAGS) o $(OBJS)clean:-rm-f$(EXEC)*.elf
5、*.gdb*.o4、编译使用程序在上面的步骤完成后,我们就可以在hello 目录下运行“make”来编译我们的程序了。如果进行了修改,重新编译则运行: 5、下载调试1、进入root 终端输入su root,再输入密码即可。2、终端输入minicom出现上面的界面,点击回车,出现下图此时才能进行正常的下载。3、ctrl+a,再点击s,出现下图选择第一个zmodem,回车。出现下图回车,出现下图输入绝对路径,出现下图回车,出现下图从上图可以看出,文件未被下载,原因是mini6410板子已经有了hello可执行文件(之前下载的),若需要下载,则需要删除之前的hello文件,rm hello即可。删除
6、之后,继续下载,出现下图下载成功。4、运行程序在电脑终端输入./hello,或者在mini6410终端输入hello都可。五、思考题1Makefile 是如何工作的?其中的宏定义分别是什么意思?Makefile定义了一系列规则,指明了哪些文件需要编译,哪些文件需要先编译等复杂命令。终端中只要在工作目录下输入make即可编译,输入make clean 则清除编译。makefile是一个文本文件,用于描述程序源代码之间以及程序可执行代码和源代码之间的依赖关系。 关于宏定义,简单点说就是文本替换。为了方便使用不同的编译器或者编译环境以及硬件环境,一些复杂的软件使用了大量的宏定义来代替诸如“gcc”这
7、样的最基本的东西。CC:指明编译器;EXEC:指明编译后生成的可执行文件名称;OBJS:目标文件列表;CFLAGES:编译参数;LDFLAGES:链接参数;All:编译主入口;clean:清除编译。实验一(2):多线程使用程序设计一、实验目的1. 了解多线程程序设计的基本原理 2. 学习pthread库函数的使用。二、实验内容1、读懂pthread.c的源代码,熟悉几个重要的pthread库函数的使用。掌握共享锁和信号量的使用方法。2、运行make产生pthread程序,使用minicom串口方式连接开发主机进行运行实验。三、实验设备及工具硬件:Mini6410嵌入式实验平台、PC机Penti
8、um 500以上, 硬盘10G以上。 软件:PC机操作系统Fedora9MINICOMARM-LINUX 开发环境 四、实验步骤1.使用vi编辑器或其他编辑器阅读理解源代码。2. 运行make产生pthread可执行文件3. 切换到minicom终端窗口。可能出现拔插USB数次。4.运行pthread,观察运行结果的正确性。5. 修改一些参数,再次运行调试,加深对多线程的理解。实验二(1):A/D接口实验一、实验目的了解在linux 环境下对S3C6410芯片的8 通道10位A/D 的操作和控制。二、实验内容学习A/D 接口原理,了解实现A/D 系统对于系统的软件和硬件要求。阅读ARM 芯片文
9、档,掌握ARM 的A/D 相关寄存器的功能,熟悉ARM 系统硬件的A/D 相关接口。利用外部模拟信号编程实现ARM 循环采集AIN0通道,并且在超级终端上显示。三、实验步骤1、阅读理解源码使用vi 编辑器或其他编辑器阅读理解源代码。 2、编译使用程序运行make clean和make 产生ad 可执行文件 3、下载调试换到minicom终端窗口。 我们可以通过调节开发板上的W1可调电阻,可以看到不断变化的转换结果。四、思考题1. 逐次逼近型的A/D转换器原理是什么? 答:逐次逼近型的A/D 转换器逐次逼近型(也称逐位比较式)的A/D 转换器,使用比积分型更为广泛,其原理框图如图2.3.1 所示
10、,主要由逐次逼近寄存器SAR、D/A 转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR 寄存器中的数字量经D/A 转换后得到电压Vc 和待转换模拟电压V。进行比较。2A/D 转换的重要指标包括哪些? 答:分辨率、精度(绝对误差,相对误差,转换时间,工作温度范围)3ARM的A/D功能的相关寄存器有哪几个,对应的地址是什么?2、ARM的A/D功能的相关寄存器有哪几个,对应的地址是什么?答: 寄存器名 地址ADC控制寄存器(ADCCON) 0XADC触摸屏控制寄存器(ADCTSC) 0XADC启动延时寄存器(ADCDLY) 0X ADCDAT0 0XCADC转换数据寄存器(A
11、DCCON) ADCDAT1 0X4如何启动ARM 开始转换A/D,有几种方式?转换开始时ARM 是如何知道转换哪路通道的?如何判断转换结束?答:方式一:软件启动1.定义和A/D转换相关的寄存器;2.定义和A/D转换相关的寄存器初始化;3.RADCCON=0X1。方式二:硬件启动1.复位A/D转换器;2.外接用高电平触发ADCCON0.转换开始时ARM时知道转换哪条通道的方式:通过对ADCCON5:3的未赋值来选择通道。实验二(2):LED驱动程序以及测试使用程序一、实验目的1、学习在LINUX下进行驱动设计的原理。2、了解LED驱动程序和使用测试程序的设计。二、实验内容1、读懂LED驱动程序
12、,熟悉驱动程序中调用的几个函数。2、设计LED测试使用程序,控制LED灯的亮或灭。四、实验步骤1、阅读理解源码进入/code/04_leds 目录,使用vi 编辑器或其他编辑器阅读理解源代码。 2、编译使用程序运行make 产生ad 可执行文件 rootzxt /# cd /arm6410s/code/04_leds / rootzxt 03_adc# make Arm-linux-gcc Wall -02 led.c o led3、下载调试在测试之前请先关闭led-player,即打开mini6410开发板上友善之臂选项中的“LEDs”,在弹出的界面上单击按钮“stop test-playe
13、r”,关闭led-player。换到minicom终端窗口,使用NFS mount开发主机的/arm2410s到/host目录。 rootzxt root# minicom /mnt/yaffs mount -t nfs -o nolock 192.168.0.56:/arm6410s /host /mnt/yaffscd /host/code/04_leds/host/code/04_leds /./led 0 1/host/code/04_leds /./led 1 1/host/code/04_leds /./led 2 1/host/code/04_leds /./led 3 1/ho
14、st/code/04_leds /./led 0 0五、实验结果如下图:六、实验感想本次实验让我进一步学习到LINUX下进行驱动设计的原理,了解了LED驱动程序和使用测试程序的设计;读懂LED驱动程序,熟悉驱动程序中调用的几个函数,设计LED测试使用程序,控制LED灯的亮或灭;掌握在Linux 集成开发环境中编写和调试程序的基本过程,了解ARM 芯片的基本结构和Linux 内核中关于设备控制的基本原理。联系了课堂内容,加深了对Linux系统和嵌入式课程的兴趣。实验三:I2C-EEPROM编程实验一、实验目的1. 了解I2C总线的基本原理2. 理解如何通过I2C总线对EEPROM数据的读写。二、
15、实验内容读懂eeprog.c的源代码,熟悉几个重要的函数的使用。三、实验设备及工具(包括软件调试工具)硬件:Mini6410嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。 软件:PC机操作系统Fedora9MINICOMARM-LINUX 开发环境 四、实验步骤1、阅读理解源代码使用vi 编辑器或其他编辑器阅读理解源代码。 2、编译使用程序运行make 产生ad 可执行文件 3、下载调试换到minicom终端窗口,运行: 输入./i2ctest r 则读。输入./i2ctest w 则写。现象如下图所示。五、思考题1、I2C总线的优点是什么? 答:a) 硬件简单,资源消耗
16、少,只有时钟和数据线。b) 时钟同步和仲裁的实现原理也很简单,以开漏/集电极以线路逻辑简单实现。c) 协议设计精巧、易用、灵活。数据,地址,指令都可传。d) 使用广泛。2、I2C总线的启动信号和结束信号有什么特点、。 答:a)启动信号。 在时钟线SCL保持高电平期间,数据线SDA上的电平被拉低(即负跳变),定义为I2C总线总线的启动信号,它标志着一次数据传输的开始。启动信号是一种电平跳变时序信号,而不是一个电平信号。启动信号是由主控器主动建立的,在建立该信号之前I2C总线必须处于空闲状态。 b)停止信号。 在时钟线SCL保持高电平期间,数据线SDA被释放,使得SDA返回高电平(即正跳变),称为
17、I2C总线的停止信号,它标志着一次数据传输的终止。停止信号也是一种电平跳变时序信号,而不是一个电平信号,停止信号也是由主控器主动建立的,建立该信号之后,I2C总线将返回空闲状态。实验四:串行端口程序设计一、实验目的1、了解在linux 环境下串行程序设计的基本方法。 2、掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用。 3、学习使用多线程来完成串口的收发处理。 二、实验内容读懂程序源代码,学习终端I /O 函数的使用方法,学习将多线程编程使用到串口的接收和发送程序设计中。 三、预备知识1、有C 语言基础。 2、掌握在Linux 下常用编辑器的使用。 3、掌握Makefile 的编写
18、和使用。 4、掌握Linux 下的程序编译和交叉编译过程三、实验原理异步串行I /O 方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行IO 可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行IO方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。 图2.2.1 串
19、行通信字符格式图2.2.1 给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5 位、6位、7 位或8 位,一般采用ASCII 编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。
20、每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600 等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: l 奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。l 帧格式错:一个字符从起始位到停止位的总位数不对。l 溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。每一种错误都会给出相应的出错信息,提示用户处理。一般串口调试都使用空的MODEM 连接电缆,其连接方式如下:图2.2.2 实用RS-232C 通讯连线四、实验步骤1、阅读理解
21、源码使用vi编辑器或其他编辑器阅读理解源代码。 2、编译使用程序运行make 产生term 可执行文件3、下载调试切换到minicom 终端窗口,运行term,观察运行结果的正确性。 由于内核已经将串口1 作为终端控制台,所以可以看到term 发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口2 进行收发测试。实验五:QT编程使用一、实验目的熟悉QT编程的完整步骤,理解信号和槽机制;学会使用designer图形界面设计工具。 二、实验内容本实验将介绍如何创建一个简单的 Qtopia2.2.0 程序,并将其集成到 Qtopia2.2.0 中,我们将以 一个简单的计算器作为例子
22、,演示开发一个Qtopia2.2.0 使用程序的完整步骤,包括使用 designer 设计图形程序界面、交叉编译 arm 版本的程序等等,为了简单,本示例所编写的计算器只提供加法功能。 三、实验设备及工具(包括软件调试工具)硬件:Mini6410嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。 软件:PC机操作系统Fedora9MINICOMARM-LINUX 开发环境 四、实验原理什么是Qt Qt 是一个跨平台的 C+ 图形用户界面库,由挪威 TrollTech 公司于 1995 年底出品,并于 2008年6月17日被NOKIA公司收购,以增强NOKIA公司在跨平台软件研
23、发方面的实力,更名为Qt Software。 基本上, Qt 同 X Window 上的 Motif, Openwin, GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但是 Qt 具有下列优点: 1. 优良的跨平台特性: 使用 Qt 开发的软件,相同的代码可以在任何支持的平台上编译和运行,而不需要修改(或修改极少)源代码。会自动依平台的不同,表现平台特有的图形界面风格。 Linux/X11:用于 X Window System(如 Solaris、AIX、HP-UX、Linux、BSD)。 支持 KDevelop 和Eclipse IDE集
24、成。 Mac:用于Apple Mac OS X。基于 Cocoa 框架。支持 Universal Binary。支持以 Xcode编辑、编译和测试。 Windows:用于 Microsoft Windows。支持 Visual Studio 集成。 Embedded Linux:用于 嵌入式 Linux。可以通过编译移除不常使用的组件和功能。通过自己的视窗系统 QWS,不需依赖 X Window System,直接写入 Linux帧缓冲。可以减少存储器消耗。并提供虚拟帧缓冲 QVFb,方便在桌面系统上进行嵌入式测试。 Windows CE / Mobile :用于 Windows CE。 Sy
25、mbian:用于 Symbian platform。 Meego:用于 Meego。 2. 面向对象 Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。 3. 丰富的 API 经过多年发展,Qt 不但拥有了完善的 C+图形库,而且近年来的版本逐渐集成了数据库、OpenGL库、多媒体库、网络、脚本库、XML 库、WebKit 库等等,其核心库也加入了进程间通信、多线程等模块,极大的丰富了 Qt 开发大规模复杂跨平台使用程
26、序的能力,真正意义上实现了其研发宗旨“Code Less; Create More; Deploy Anywhere.”。五、实验步骤下面的章节将一步步演示如何构造这个程序,在这开始之前,我们先创建一个 qtopia2_apps 目录,用于专门存放我们自已编写的 qtopia2.2.0程序, 在 Linux 终端中键入以下命令创建该目录: # mkdir -p /opt/qtopia2_apps 然后在 qtopia2_apps 目录下创建 mycalc 作为本示例的项目目录,在终端上输入如下命令: # cd /opt/qtopia2_apps # mkdir mycalc 1、 使用desi
27、gner 工具设计图形界面 Qt/Qtopia都带有designer工具, 可以设计所见即所得的图形界面,我们现在就使用 designer 工具来设计mycalc程序的主界面,主界面将保存成名为 main_form_base.ui 的ui文件,输入如下命令启动designer工具,并以ui文件名作为参数: # cd mycalc s#/opt/FriendlyARM/arm-qtopia/qtopia-2.2.0-FriendlyARM/qt2/bin/designer main_form_base.ui在弹出的 New Form 界面中,选择“Widget”然后点击”OK“,我们将创建一个基
28、于 QWidget 的窗体而不是 QDialog 或其它:这时,将会显示窗口的编辑画面,我们需要修改窗口的大小,使得 3.5 寸的屏幕也能完整显示我们的程序,并且需要修改窗口标题。 1.1 在窗体上放置控件 修改完窗口的属性值后,接下来我们就要在窗口上放置控件了,往窗口上放置控件的方法是:在工具栏上点击要放置的控件,再在窗口空白处点击一下即可。 根据我们最初的设计思路,我们需要在窗口上放置以下控件: 1) 二个 Button(按钮): 一个是“=”,用于点击时计算结果,一个是“Close”,用于退出程序。 2) 三个 Line Edit(单行文本框): 两个用于输入要执行加法运算的数字,另一个
29、用于显示计算结果。 3) 一个 Label(文本标签):用于显示加号。 请参考下图放置上面列出的控件,控件的工具栏图标在下图中我已经以红色方框标记出来了:放置完控件之后,我们将 Label 文本标签上的文字改为“+”,修改方法是双击 Label 文本标签,然后在弹出的编辑框上输入“+”即可; 用同样的方法修改两个按钮上的文字,将两个按钮上的文字一个修改成“=”, 一个修改成”Close”。 修改完控件上文字之后,按照上图的位置摆放控件,在摆放之前,需要适当地调整控件的大小,调整控件大小的方法是,先单击要调整的控件,然后在控件的边框上的小黑框上单击拖动即可。 1.2 修改控件属性 我们还需要设置
30、一些控件的属性,主要是修改文本框的实例名称,这样在代码里面可以方便引用它们,修改方法是点击左边的文本框控件,在右边的属性窗口进行修改,请按下图的指示修改三个文本编辑控件的属性,三个文本框的实例名称分别被修改成 m_x, m_y 和 m_result。1.3 为按钮添加点击事件的处理 最后还要给按钮添加点击事件的处理,我们首先需要新建两个 slot 函数,一个用于处理“=”按钮的点击事件,一个用于处理 Close 按钮的点击事件,新建 slot 的步骤如下: 1)点击”Edit”菜单,选择“Slots”,将弹出如下所示的 slot 编辑对话框。2) 在上面的对话框中,点击”New Slot“按钮
31、, 然后在Slot编辑框中输入 “calcButtonClicked()” 。3) 然后再点”New Slot“按钮,并在 Slot 编辑框中输入“closeButtonClicked()”, 如下图所示,最后点击 OK 保存并退出该对话框。至此,slot 添加完毕,现在将 slot 函数和按钮的点击事件对应起来: 4) 单击工具栏上的 Connect Signal/Slots 图标,然后参照下图所示进行操作,在“=”按钮上按下鼠标左键不放然后拖动到窗口的空白处放开鼠标,操作完成后将会弹出 Edit Connects 对话框:5) 在弹出的 Edit Connects对话框中,将 clicke
32、d()事件连接到 calcButtonClicked() slot函数。6) 下面用同样的方法操作 Close 按钮。7) 最后,如下图所示将 Close 按钮的 clicked()事件连接到 closeButtonClicked() slot函数。至此,界面设计完毕,可以进入写代码环节了。2、 编写代码 界面设计完,现在开始为 mycalc编写代码,我们需要创建三个源代码文件,一个是头文件 main_form.h,一个是源代码文件 main_form.cpp,一个是 main.cpp,分别在以下章节中创建这些文件: 2.1 编写程序入口main.cpp 首先用 vi 编辑器创建并打开 mai
33、n.cpp 文件: # vi main.cpp 在 vi 编辑器中输入如下源代码内容: #include main_form.h#include QTOPIA_ADD_APPLICATION(mycalc,TMainForm)QTOPIA_MAINmain.cpp 只有 4 行源代码,它的实现很简单,宏展开后会是一个 main 函数,然后创建QPEApplication 对象 和 TMainForm主窗口对象,最后显示主窗口并执行 QApplication:exec()进入事件循环。 main.cpp 所用到的头文件 main_form.h 和 TMainForm 类到目前为止还不存在,我们接
34、下来就要新建它们。 2.2 编写主窗口头文件main_form.h 接下来用 vi 编辑器创建并打开 main_form.h 文件: # vi main_form.h 在 vi 编辑器中输入如下源代码内容: #if !defined (_MAIN_FORM_H_) # define _MAIN_FORM_H_ #include main_form_base.h #include class TMainForm: public TMainFormBase Q_OBJECT public: TMainForm(QWidget * parent = 0, const char * name = 0,
35、 WFlags f = WType_TopLevel) : TMainFormBase(parent,name,f) virtual TMainForm() public slots: void calcButtonClicked(); void closeButtonClicked(); ; #endif main_form.h 文件中包含了 main_form_base.h 头文件,这个 main_form_base.h 头文件不需要用户编写,编译时由 uic 编译器根据 main_form_base.ui 文件自动生成的。 在自动生成的 main_form_base.h 头文件,是 Qt
36、 自带的 uic 编译器由 main_form_base.ui 转换成的 C+程序代码,这部分代码实现了界面的基类 TMainFormBase, 并定义了相关的 slot 函数,因此,要使用我们自已用 designer 设计的程序界面,我们只需将主窗口 TMainForm 从 TMainFormBase类继承即可,由于我们接下来要编写按钮功能的代码,所以我们还需要重载 calcButtonClicked() 和 closeButtonClicked() 函数。 2.3 编写主窗口源文件main_form.cpp 接下来用 vi 编辑器创建并打开 main_form.cpp 文件: # vi m
37、ain_form.cpp 在 vi 编辑器中输入如下源代码内容: #include main_form.h #include void TMainForm:calcButtonClicked() m_result-setText( ); if (m_x-text().isEmpty() | m_y-text().isEmpty() return ; bool ok = false; int x = m_x-text().toInt(&ok); if (!ok) m_x-setText(); return ; ok = false; int y = m_y-text().toInt(&ok);
38、if (!ok) m_y-setText(); return ; m_result-setText( QString:number( x + y ) ); void TMainForm:closeButtonClicked() close(); 上述源代码主要实现了 calcButtonClicked() 和 closeButtonClicked() 这两个 slot 函数,closeButtonClicked 比较简单,直接调用基类的 close() 函数关闭窗口即可退出程序,而calcButtonClicked 函数则取 m_x 和 m_y 这两个文本框的值,然后相加将结果放到 m_res
39、ult 文本框中,其间进行了一些容错处理,比如如果用户输入的不是数字,则拒绝计算结果并清空该文本框。 2.4 编写项目文件mycalc.pro 源代码写完了,在编译之前,还得再写一个 mycalc.pro 项目文件。 接下来用 vi 编辑器创建并打开 mycalc.pro 文件: # vi mycalc.pro 在 vi 编辑器中输入如下内容: CONFIG += qtopiaappCONFIG -= buildQuicklaunch HEADERS = main_form.h SOURCES = main_form.cpp main.cpp INTERFACES = main_form_ba
40、se.ui TARGET = mycalc 上面的项目文件中,CONFIG+=qtopiaapp 表示要编译的是一个 Qtopia 程序,HEADERS 和SOURCES 列出了 mycalc 的源代码和头文件清单,而 TARGET 则指定最后生成的可执行文件名为 mycalc, CONFIG-=buildQuicklaunch 的意思是需要编译成一个独立的可执行程序,而不是使用程序插件。 3 交叉编译示例程序并在mini6410 上运行 在项目目录创建一个 ARM 版本的编译脚本 buildarm.sh,#!/bin/shsource /opt/FriendlyARM/arm-qtopia/
41、qtopia-2.2.0-FriendlyARM/setQpeEnvqmake -spec qws/linux-arm-g+ -o Makefile.target *.pro make -f Makefile.target cleanmake -f Makefile.target然后执行该脚本编译 mycalc : # ./buildarm.sh 编译完成后,在mycalc下生成了mycalc可执行文件。再编写一个左面配置文件,mycalc.desktop,内容是: TranslationFile=QtopiaSettingsContext=mycalcCommentDesktop Entry
42、/Name=Use soft hyphen (char U00AD) to indicate hyphenationDesktop EntryExec=mycalcIcon=mycalcType=ApplicationName=My CalculatorCanFastload=04、通过minicom,烧写文件到开发板4.1、将mycalc可执行文件烧写到开发板/opt/Qtopia/bin目录下将mycalc.desktop烧写到开发板/opt/Qtopia/apps/Applications/目录下。六、实验心得本次QT编程使用的实验让我熟悉了对实验平台的使用方法和实验平台运行原理;学会了
43、操作虚拟机和知道如何用虚拟机和开发平台连接然后编程、编译连接形成开发平台能执行的使用,最后下载到开发板中,最后通过刷新开发平台之后就可以看到自己编写的程序了。对Linux的指令使用进一步加深了理解并得以熟练使用。对于基于ARM的QT使用程序开发有了初步的认识和了解,在以后的空闲时间会进一步学习并加以掌握。在最后说一下几次实验的总结,我发现做实验时才发现书本内容掌握并不透彻,纸上得来终觉浅,没有吃透书本知识在实际操作时才捉襟见肘,只得到处请教同学然后慢慢摸索。不过在这个过程中我的提高无疑是巨大的。实验时将每个步骤搞清楚弄明白,在试验后回想实验操作的具体步骤,这样能极好的加深印象,实验和书本知识结合对于学习嵌入式系统是大有裨益的。专心-专注-专业