2023年LINU嵌入式实验报告.pdf
L I NUX嵌入式实验报告目录目录.错误!未定义书签。实验一:嵌入式L in u x 开发流程.错误!未定义书签。实验二:嵌入式L in u x开发环境搭建。错误!未定义书签。实验三:串行端口程序设计。错误!未定义书签。实验四:A/D D/A接口实验。错误!未定义书签。实验五:图形界面应用程序设计。错误!未定义书签。实验六:内核与根文献系统实验.错误!未定义书签。实验七:驱动程序设计实验.错误!未定义书签。实验八:无线通信实验。错误!未定义书签。实验一:嵌入式L imix开发流程一.实验目的了解嵌入式L i n u x 的开发流程,会进行简朴的开发。二.实验内容进行Linux的开发流程的简朴介绍。三.实验环节嵌入式Linu x 开发,根据应用需求的不同有不同的配置开发方法,但是一般都要通过以下过程:建立开发环境,操作系统一般使用REDHAT-LINUXM本 7 到 9 都可以,选择定制安装或所有安装,通过网络下载相应的GCC交叉编译器进行安装(比如arm-1 i nux-gc c a rm-uclibc-gc c),或者安装产品厂家提供的交叉编译器。使用Linux的Red L inux 9 的开发界面截图如下:routVM*rr Took倒配置开发主机,配置MINICOM,一般参数为波特率115200,数据位8 位,停止位1,无奇偶校验,软硬件控制流设为无。在 W I N D O W S 下的超级终端的配置也是这样,MINICOM 软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具;配置网络,只要是配置N F S 网络文献系统,需要关闭防火墙,简化嵌入式网络调试环境设立过程。系统配置截图如下:.画M S 厂 。%此建立引导装载程序B OOTLOADE R,从网络上下载一些公开源代码的 BOOTLOADER,如-BOOT、BLOB、VIVI、L I LO、A RM-BOOT、RED-BOOT等,根据自己具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如三星的ARM 7、ARM 9 系列芯片,这样就需要编写烧写开发板上的f l a s h 的烧写程序,网络上有免费下载的WINDOWS下通过JTAG并口简易仿真器烧写ARM外围f las h 芯片程序。V i Vi运营的截图如下:C:DocujBent9 9nd S etti1n t八d。【泉面j f 2 4.日日,SEC JTAG PLASH v 0.?,S3C2410X 4 SMm 410 B/D)S PROVIDED W KENT 208,0628S kent9up-tech.covbIS A9Z:SJP/f!e/d-ERROR:No CPU is dfrtectedrr virtual 2 KBvwwtrt-1 lor47 KBJaaaDn固R*d Ht Linux vdkVHwtrt virtual d1 KBR-d K“Linux-1003 vndkVWvtrt virtual dR4 KatUnwc-s006 vdkWvtrc virtual 4rtdhal wsdVWtr intpsKot0 KBrdhat.vwxfWw*r b I KBv y 2 log:34 KBusana国囿“4 2-大 小5 1 2字节文件 B562S0 lekRia 市1LinwcsOOl vdkVWirtrt virtual d.R4Linuxs004 vdkW vtrt virtual drdhtt nvrsVlwtrt virtual 9 K Brtdhat vssVM*r suspended17.570 KBvwtrt-0 locSI KB50 KB安装好的Linux如下;七、sn 09 ft1622.开发工具软件的安装IB与理tti 粒 cfi 拄 磁D俯助包1ro o ljl cd/nnl/cdronycdronil cd 2410“2410“,Is(roolfociIhostrootloeiIhosl(roollocaIhosl24IO-S?2410-S Ltsor,?(roolHoca Ihosl(rootMoca I host,.pdf Linux V7.02410s*cd LinuxX V7.0/(JOB V5.0M4n,与-XM it ZWR 小。WfWi2*Ik伸 出 吆 1帆2”亳 虫&他 吐 花,。拘第X府 内 善 个/1*H,哄叁 ftti k W N 1 3 H 0 M nw 4M咯配就0、5H1 7:w15 h双击设备ethO的蓝色区域,进入以太网设立界面root的主H录从这叭开始河收站VMware ToolsSH 09/I7:I6对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP访问它所有拒绝,这样其它网络设备主线无法访问它,即无法用N F S m ount它,许多网络功能都将无法使用,因此网络安装完毕后,应立即关闭防火墙。ro o t的主H术令从这班开始立个馒别8 5火堵同收站。友 制V Mu arc Tools力火飨现VIS/l 09 h17:17安全国蝴配HM in i com的配置如下:四、实验总结通过本次实验我学会了关于L i n u x 配置的一些基本的应用,感觉收获特别大,这就算入门了。实验三:串行端口程序设计一、实验目的了解在L inux环境下串行程序的基本方法。掌握终端的重要属性及设立方法,熟悉终端I/0函数的使用。学习使用多线程完毕串口的收发解决.二、实验内容读懂程序源代码,学习终端I/0函数的使用方法,学习将多线程编程应用到串口的接受和发送程序设计中。三、预备知识有C语言的基础掌握在L inu x下常用编辑器的使用。掌 握Make fi 1 e的编写和使用。掌 握L i nux下的程序编译与交叉编译过程。四、实验原理异步串行I/O方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行1/0可以减少信号连接线,最后用一对线即可进行。接受方对于同一根线上一连串的数字信号,一方面要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,并且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立拟定起始和结束(即每个字符都要重新同步),字符和字符间还也许有长度不定的空闲时间,因此效率较低。卜-第n个字符-A|_ I:%1%D。_ _1 1 0 1/0 I/O 1/0 I/O 1/0 1/0 I/O 1/0 1111 0 1空空起I 奇 件 空闲闲始卜-数 据 便-T 蜴止 闲位位位I I 位位 位上图给出异步串行通信中一个字符的传送格式。开始前,线路处在空闲状态,送出连续“1”。传送开始时一方面发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶检查位将所传字符中“1”的位数凑成奇数个数或偶数个数。也可以也可以约定不要奇偶校验位,这样就取消奇偶校验位。最后是表达停止位的“1”信号,这个停止位可以约定连续1 位、1 .5 位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,连续为“1”。通过一段随机的时间后,下一个字符开始传送才有发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为5 0.95,110,150,3 0 0,600,12 0 0,24 0 0,4800,9600 等。接受方按约定的格式接受数据,并进行检查,可以查出以下三种错误:奇偶错:在约定奇偶检查的情况下,接受到的字符奇偶状态和约定不符。帧格式错:一个字符从起始位到停止位的总尾数不对。溢犯错:若先接受的字符尚未被微机读取,后面的字符又传送过来,则产生溢犯错。每一种错误都会给出相应的犯错信息,提醒用户解决。一般串口调试都使用空的MODEM连接电缆,其连接方式如下:图2.3.2实用RS-232C通讯连线(b -t W五、程序分析本实验的代码如下:#i n c lude#include#inclu d e#incl u de#in c lu d e#i n clu d e#define BAUDRATE B 115200#define COM1 /d e v/ttyS0,#de fine C O M 2/dev/ttySl”#d e fine ENDMINITERM 27/*ESC to quit mini term*/#define FAL SE 0#define TRUE 1v o l a t i l e i n t S T O P=F A L S E;v o 1 a t i l e i n t f d;v o i d c h i l d _ h a n d 1 e r (i n t s)Ip r i n t (s t o p!n );S T O P=T R U E;/*/V o i d*k e y b o a r d (v o i d*d a t e )1In t c;Fo r (;)c=g e t c h a r ();i f (c 二 E N D M I N I T E R M)S T O P=T U R E;Br e a k;)R e t u r n N U L L;)/*/*m o d e m i n p u t h a n d i e*/V o i d*r e c e i v e (v o i d*d a t e)In t c;P r i n t f (r e a d m o d e m n );W h i l e (S T O P=FAL S E)(R e a d (f d,&c ,1);/*c o m p o r t */W r i t e(l,&c,1);/*s t d o u t */)P r i n t f (e x i t f o r m r e a d i n g m o d e m n);R e t u r n N U L L;)/*./V o i d*s e n d (v o i d*d a t e )!In t =O;P r i n t f (s e n d d a t en );W h i l e(S T O P-FAL S E)/*m o d e r n i n p u t h a n d 1 er*/(C+;C%=255;W r i t e (f d ,&c,1);/*s t d o u t*/U s l e e p (1 0 0 00 0);)R e t u r n N U L L;/*/I n t m a i n (i n t a r g c,c h a r*a r g v )S t r u c t t e r m i o s o 1 d t i o,n e w t i o,o l d s t d i o ,n e w s t d i o ;S t r u c t s i g a c t i o n s a ;I n t o k;P t h r e a d _ t t h _a;t h _ b ,t h _ c;V o i d *r e t v a l大If(a r g c l)Fd=o p e n(C0M 2,O R D W R);El s eFd=o p e n(CO M l,0_ R DW R);/|0_ N 0CT T Y I 0 _ N 0 N B L O C K);I f (f d?A B CDE FGH1GHLMNOPQR S TUVW X由于内核已经将串口 1作为终端控制台,所以可以看到te rm发出的数据,却无法看到开发主机发来的数据,可以使用此外一台主机连接串口 2进行收发测试。Ct r 1+c可使程序强行退出。注意:假如在执行./te r m时出现下面的错误,可以通过我们前文提到的方法建立一个连接来解决。/d e v /ttySO:No s uch f ile or d ir e ctory解决方法:/mn t/y a f f s c d/dev/d e v 1 n-s f/d e v/t t s/0 ttySO(注意首字母是 1,不是数字 1)实验四:A/D D/A接口实验AD部分一实验目的了解在LINUX环境下对S3C24 1 0 芯片的8 通 道 10位 A/D的操作与控制二实验内容学习AD接口远离,了解实现A D 系统对于系统的软件和硬件规定,阅读ARM芯片文献,掌握ARM的 AD相关寄存器的功能,熟悉A RM 系统硬件的AD相关接口 ul i yong外部模拟信号编程实现ARM循环采集所有前4 路通道,并且在超级终端上显示。三 实验环节1.进入/arm 2 4 1 Os/ex p/b a s ic/0 4 _a d 目录,使 用 v i 编辑器或者其他编辑器悦读理解源代码。2 .变异应用程序运营m a k e 产生a d 可执行文献 ro o t zxt/#c d/a r m2410s/e x p/b a s ic/0 4_ ad/r o otzxt04_ad#ma k ea rmv41-u nknown-1 inus-g c c c-o main.o main.carmv41-u n kn o w n-linu x-gcc-o./bi n/ad m a in.o-1 p t h readarm v 41-unknown-linux-gc c o ad mai n.o-lpth r eadr o o t z x t 0 4_a d#lsAd h ardwar e.h m a in.o M a k efile.bak s 3 c 2 410-a d c.hB in mai n.c Ma k efi 1 e readme,e x t sre3 下载调试换到m in i c o m 终端窗口,使用NFSm o un t 开发主机的/arm2 4 1 Os至 U/hos t目录r o otzxtroot#minic o m/mnt/yaf f smou n tt n fs o n ol o c k 192.168.0.5 6:/a r m2 4 lOs/h o st/mn t/yaff s cd/h o st/esp/b a s ic/04_ad/host/e x p/b a sic/04_adJ./adPr e ss Ente r key e x i t!a 0=0.0032a 1=3.2 96 8 a2=3.2968我们可以通过调节开发板上的三个黄色的电位器,来看a0,a 1,a2,的变化DA部分-实验目的学习DA转换原理掌握MAX 5 04DA转换芯片的使用方法掌握不带有D A 的 C P U 扩 展 DA功能的重要方法了解DA驱动程序加入内核的方法二 实验内容学生DA接口原理,了解实现DA系统对于系统的软件和硬件的规定三 实验环节1 阅读理解源码进入/a rm241 0 s/ex p/b as i c/05_da目录,使 用 v i编辑器或者其他编辑器阅读理解源代码2.编译应用程序运营make 产生d a 可执行文献d a_ma i nroot z x t/#c d/arm241 0 s/ex p/b as i c/0 5 _ ad/r oo t z x t04_ad#m a kearmv41-un k nown-1 i nus-gc c-c-o main.o mai n.carmv41-unk n ownlin u x-g cc d a _main.oo da_mai nrootzx t 05_ d a#Isda_m a in d a _ma i n.c da_main.o d oc drive r sMakefil e s 3 c44 b O-spi.h3.下载调试切换到minicom终端窗口,使 用 NFS mount开发主机的/arm 2410 s 到/hos t 目录然后进入/h o s t/e x p/05_d a/dr i v e rs 目录,用 i nsmo d e x i o.o 命令插入 DA驱动,并且用 Ism o d 命令查看是否已经插入/mnt/ya f f s c d/host/esp/b a s i c/05_ad/h o s t/e xp/basic/0 5 _ a dc d d river s/h ost/exp/b a s i c/05_a d、driver s Jin s mod exi o,oUsi n g exio.o/h o st/exp/basic/O 5 _ a d/drivers Ism o dMo d u 1 e S i v e Us e d b u Not t a in t edExio 23840(u n use d)I 2 c-t o p s 2 14104 0(unus e d)进入/ho s t/e xp/basic/0 5 _ d a目录,运 营./d a _m ain观测运营结果的对的性,在输入./d a_m ai n 后会出现下面的提醒信息/host/exp/b a s ic/0 5 _da./d a_ mai nError p a r a mete rInpu t as:./ad_mai n da_ i d n u md a _id:s e lect b e t we e n 0 and 1n um:ra n geO.0 4.096这是由于我们没有制定参数导致的,他的格式为./da_m a in da的 id 号 数字,我们可以通过选 择 0 或 1 来决定输出到开发板上的哪个D A接口,同时还需要在0.0 4.09 6 V 之间来选择一个输出电压,下面的例子是用了开发板上的DA0且 输 出 IV 的电压,我们可以使用万用表对其进行测量。/host/e xp/b asi c/05_ad./da_m a i nO 1C u r r e ntV o 1 tage is 1.000000 v四.实验总结通过本次实验我了解到一些关于DA A D 的相关知识。实验五:图形界面应用程序设计一、实验目的1.了解在Linux下安装Q t 以及Qt/E mbedde d 的基本环节;2.学会在Qt/E平台下使用Virtu a 1 frame b uffe r 显示程序结果。二、实验内容1.在 Linnux下编译和使用Q t/E 平台;2.在 Qt/E 平台下编译和运营一个程序使用Virtual fr a mebu f f e r 显示运营结果。三、实验环节该 在 T r ollt e c h 公司的网站上可以下载该公司所提供的Q t/Em b edded的免费版本,在安装产品光盘以后,本次实验目录下已有要下载的文献,在/arm24 10s/gu i/Q t/src下。在做实验钱吧本次实验用到的三个文献拷贝到/ro o t/2 4 10sQ t目录下。r o otBC r ootj#cd/r o ot/root BC r ootl#m k d ir2410sQtr o ot BC r o o t#cd/arm2 4 1 OsQt/gui/Qt/srcr o otB C sr c#cp-arftma k e-1.13.tar.g z qt-em b ed d e d-2.3.1 0-f re e.tar.g zQt-x 11-2.3.2 t ar.g z/root/2 4 1 lOsQ t安装编译器 a r m linux-gcc-3.4.1:r ootB C s rc#cd/a r m 2 41 0 s/gui/Q t/t ool s r oot B C t ools#t ar xj v f arm-li n ux-g c c-3.4.1.tar.bz 2 C./roo t BC t o ols#v i/roo t/.ba s h pro f i le/打开文献,将该文献中的P ATH变亮改为PATH=$P ATH:$HOM E/b in:/a rm 2 410s/gui/Qt/to o 1 s/us r/lo c al/a rm/3.4.1/bin/,存盘后退出。r o otB C t o o 1 s#s o ur c e/ro o t/.ba s h p rofile假如耍对的安装的话,在任意途径下输入a 后按T a b 键即可列出编译器文献。Qt/Em b e d d e d 平台的搭建需要以下儿步:1、安装 Tm a k ecd-/2410 Q t-tar-x z f t make-1.1 3.tar.g z-e x port T MA K E DI R=$P WD/tmake-1.132、安装 Qt2.3.2cd-/2410sQtta r-xzftq t-2.3.2.t ar.g z e xportTMA K E DIR=$PWD/qt-2.3.23、安装 Q t/E m b ed d e dcd/2410sQtt a r-x z ftqt 2.3.1 0-f r ee.t a r.gz-exportTM AK E DI R=$PWD/q t-2.3.1 0环境变量的设立是非常重要的,它关系到能否对的的安装及编译这些安装包,下面介绍一下这些环境变亮:TMAKEDIR:只想用于编译Qt/Embedded的 Tm a k e 工具QT2DIR::指向qt-2.3.2的文献夹QTEDIR::指向q t-2.3.10的文献夹第二步,编译 Qt/Embedde d1.Build Qt2.3.2cd$QT2DIRexp ortTMAKEP ATH=4 T MAKEDIR/1 i b/lin u x-g+expo r t QTDIR=$QT2DI Re x po r t PATH=$QTDIR/bin:$PAT HexportLD_LI B bin/RARY_PATH=$QT D IR/li b:$LD_LIBRARY_PAT H/conf i gu re-no-xft/出现选项时都要输入y esmakec p-art b i n/u ic$Q T E D I R/bi n/./c onfigure是对Q t进行配置,它涉及很多选项,例如可以通过添加“一n 0-0 pengl”等,假如想要进一步了解可以通过键入。/configu r e一help来获得更多的帮助信息。编译完毕后需要将生成的/61/11点复制到(2丁 口11下创建的目录bin,由于在随后的编译Qt/Embedded的时候会用到这个工具。2、B ui 1 d Q v fbe x port TM A KEPATH=$TM AKED I R/1 ib/1 i nux-g+exp o rt Q T D IR=$QT2D I Rex p o rtP A T H=$QTDIR/b i n:$PATHe x p ort L D_LIBRA R Y _PAT II=$Q T DIR/Iib:$LD_LI B RA RY_PATHc d$QTESI R/tools/qvf b/root/241 0 s/tm a k e-1.1 3/b i n/tmake-o M a ke f ile qvfb.p romak emvqvfb$QTEDIR/b i n/这一步 bui 1 d q v fb 并建立了从 Qt/Embed ded 2.3.1 0 至 lj Q t/Embedd e d2.3.2 的静态的链接。其中qv f b 工具用来生成Vi rtu a l framebuffe r,这是一个非常有用的工具,它可以模拟在开发板上的显示情况,假如在Virtual fram ebuf f e r 中运营没有问题的话,可以直接通过交叉编译在开发板上运营。3.Build Qt/Embeddedcd$Q T EDIRe x port TMA K EPATH=$TMA K E DIR/lib/qws/linu x-x8 6-g+e x po r t QTD I R=$QTEDIRe x p or t PATH=$QTDIR/bin:$PATHexport LD_LI BRARY_P ATH=$QTD I R/lib:$LD_L I BRARY.PATH /CONFIG U RE-NO-XF T-QVFB D EPTHS4.8,16,3 2YES4.m ak e 在配置./c onfi g ure 中-qvfb 用来支持 Virt u al f ramebuffer d e pths4,8/6,32支持4 位,8 位,1 6 位,3 2 位,的显示深度,此外还可以添加如一s y e s t em-jpeg和一gif来提供对j p e g 和 g i f 的支持。配置系统同时还支持对特定平台系统选项的添加,但一般来讲,凡是支持f rameb u ffer的 li n u x 系统都可以使用“li n ux-ge n e r i c-g+”平台。具体的配置信息可以通过运营./config u r e help命令来查看。第四步,查看运营结果,假如上面各步都可以成功的编译通过,下面就可以通过运营Qt/Embe dded自带的d e m o 来查看结果。在 Virtu a 1 framebu f f e r 上运营;e x po r t QTD I R=$QTEDI Re x por t PATH=$QTDIR/bin:$PATHex p ort LD.LIBRA R Y_PATH=$Q TD I R/1 ib:$LD_LIBRAR Y_PATHc d$QT E S I R/ex a mp I es/1 a u nch e r/qvfb-w idth640h e ig h t 480&sle e p 1 0./1aunc h er-q w s运营结果如下:一16|短bb业“*|Qt/Em beddedThis display is a simple QLEinbeddedlaiincha application mming directly on tlicLinux console.Tlie buttons and listbox toUie rigit invoke additional applications.Help Text BrowserC a n v a s .a l p h a,b i n d i n gText EditorScribble EditorInternationalizationMagnifier.一I addressbook TOrientationG No Rotationr Rotate 90degr Rotate 180dcgr Rotate 270degRestart|QuilaclockLess is moreQt/Embedded is modular aid scalable You将上面的环节完毕后,沃恩就已经建立好了在本机上开发Q t 应用程序的环境,下面我们通过编写一个“hel 1 oem bedded”的程序来了解Q t 程序设计。#c d/ro o t/2 41 0 sQ t/r oo t B C 2 4 1 0 sQt#m k d ir exp r o o tBC2410sQt#c d e x p r ootBC ex p#vi h e 1 lo.cp p使用V I 编写文献hell o.cpp,程序代码如下:/h e 1 lo.epp#i n cl u d e#i nelu d eInt main(i n t a r gc,c h ar*a rgv)(Q Applica t ion a p p(a rg c,arg v);Q L abe 1 *hello=new QL a bei(hello qt/emb e d de d”,0);App.s e tMa i n W idget(h ello);Hello-show();Return app.ex e c();)现在开始逐行讲解一下每一句的意思,中我了这些以后可以帮助我们更加 了 解 Q T 的程序设计。第 1行和第二行包含了两个头文献,这两个头文献中包含qap p 1 i c ation fll qla b e l 类的定义。第 5 行创建了一个qappl i c ation对象,用于管理整个程序的资源,它需要两个参数,由于q t 自身需要一些明林行的参数。第 6 行创建了一个用来显示hello qt/em bedded!的部件。在 Q T中,都是一个可视化的用户接口,按钮,菜单,滚动条都是部件的实例。部件可以包含其他部件,例如,一个应用程序窗口通常是一个包含Q Men u Bar,QT o olBar,Q StatusBar和其他的部件。在 Q Lab 1 e 模糊中的参数0 表达,这是一个窗口而不是嵌入到其他窗口中的部件。第 7 行设立hello部件为程序的主部件,当用户关闭主部件后,应用程序将会被关闭。假如没有主部件的话,即使用户关闭了程序也会在后他继续运营。第 8 行使h e 1 1。部件可视,一百年来说部件被创建后都是被隐藏的,因此可以显示在前根据需要来定制部件,这样的好处是可以避免部件创建所导致的闪烁。第 9 行把程序的控制权交还给Qt,这时候程序就进入就绪模式,可视随时被用户行为激活,例如点击鼠标,敲击键盘等。下面我们哟啊让我们的程勋运营起来,一方面要让它可以在Virtual fra me bu f f e r中显示出来,然后再通过交叉编译在开发板上运营。要在本机的Virtual fram e bu f f e r中显示结果,下面几个环节是必须的:1.生成工程文献(.p ro)每一个q t程序都相应一个工程文献,由于tm ak e工具要借此工程生成相应make f ile文献。生成工程文献使用prog e n 工具,他的位置在$tm a k edir/b i n 下使用proge n 生成工程文献的方法如下:$TMA K ED I R/b in/pro g en-tapp.t-h e 1 1 o.pro 生成的这个 h e 1 1 o.p r o 工程文献是可以被修饰的,可以编辑里面的头文献,源文献等内容。2.生成m akefile文献3.Q T 提供生成make f ile 文献的工具t m ak e,这极大地方便了应用程序的开发,节省了大量的时间,并且还可根据不同平台的需要生成适合于不同平台的mak efi1 e 文献。在使用tm ak e工具前,必须查看相应的环境便令是否对的,由于我们要编译在本机上运营的Q T 程序,所以指定的编译器应为“linu x-x 86-g+”,在命令行中输入下面的命令来检查环境变量是否对的:echo$T MAKEPATH查看返回的结果的结尾字符是否是“/qws/lin u x-x86-g+,假如不是的话,需要在命令行中重新设立TMAKEPAT H exp o r t TMAKEPATH=/t mak e 的安装途径(如$TMAKE D IR)/1 i b/qws/linux-x86 g+此外还要使Q TD IR指向 QT/EMBEDDED 的安装途径,如:exp o rt QTDIR=$QTED1R 或者直接指定途径ex p o r t QTDIR=./qt-2.3.10完毕了上面的环境变量的设立,并用ech。命令检查无误以后,就可以以使用tmake工具来生生我们需要的m akefile文献,在命令行中如下命令:$TMAKED IR/bin/tm a ke-0 Mak e f il e hel 1 o.pr o完毕上面的环节以后就可以在当前的目录中生成一个mak e f i le 文献,关于makef ig u re 文献的功能和结构这里就不在做过多的介绍了,可以参考前面的张杰来了解makef i 1 e o最后在命令行中输入“m a k e ”命令就可以对整个程序惊醒编译连接了。最后生成一个二进制的可执行文献he 1 1 o 用 Virtual framebuffe r 显示效果如下:我们可以通过j QLab e l*he 1 1 o Q L a bel(uHe 1 lo Qt/E m b e d d ed!”,0)这句话进行修改使我们的程序显示起来更为美观,修改如下:QLabel*hel 1 o QLab e 1(H e 1 1 o 9,Q t/E mbed d ed!”,0);修改后显示效果如图所示:Virtual framebufferE te a*Hello Qt/Emt)e(kfed!四.实验总结通过本次实验我学会GU I 的基本设计,收获颇多。实验六:内核与根文献系统实验一.实验目的了解Linu x 的内核与根文献的概念,学会他们的烧写。二.实验内容结合实验指导书进行内核与根文献系统的烧写。三.实验内容烧写Linux内核程序。一方面安装驱动程序,需要进行相关驱动的安装,点击添加硬件,如图所示:选择下一步,截图如下:潼加硬件向导硬件连整好了吗?您巳经将此硬件连接到计算机了吗?G基,.爱已资连援了益通理出。否,我尚未添加k匕接件00|取清 添加Givei o点击下一步安装安装好了截图如图所示:添加硬件向导安装了下列硬件正在完成添加硬件向导3giveiotm dow s巳先成为这个设备安装软件.要美闭这个向导,话单击“完成”.一 竟 而 一好了之后,需要烧写VIVI使用CMD打开烧写程序在此后出现的三次规定输入参数,第一次是让选择Fla s h,选 0,然后回车如图所示:第二次是选择j ta g 对 fl a sh 的两种功能,也选0,然后回车,如图所示:第三次是让选择起始地址,选 0,然后回车,等待大约3-5 分钟的烧写时间,如图所示:当V I V I烧写完毕后选择参数2,退出烧写。如图所示:至此内核烧写完毕四.烧写根文献系统在vivi状态下,输入烧写根文献的命令为:t f tp f la s h ro o t root.c r am f s.如图所示:r.-旬 终 纥目万阳1xn set c 192.168.0.115Set IP to 192.168.6.115vivi set s 192 168。82Set IP to 192.168.8.82vivi t f tp flash kernel zlmageTFTPing zlnage*.OK.received 1690 blocks(864760 byts)Downloaded file via IF IP to 0 x30000000.size 864760 bytesr ound block size=0 xO0Od40OOE rasing.doneW ritin g.doneW ritten 864760 bytesvivi tftp flash root root.craafsTFTPing root.cram fs*.二 二 二 改:.received 4658 blocks(2383872 bvtes)Downloaded file via TFTP to 0 x30000000 size=2383872 bytesFound block size-0 x00248000W ritin g.size=2383872bad.block 0doneW ritten 2383872 bytesvivio.od oiMtwr”劾x)m m至此根文献系统烧写完毕!四.实验总结通过本次的实验我学会了 L i n u x内核的烧写和根文献系统的烧写,感 觉lin u x学起来很难,以后会继续努力。实验七:驱动程序设计实验.实验目的学习在LINUX下进行驱动设计的原理;掌握使用模块方式进行驱动开发调试的过程。二.实验内容在P C机上编写简朴的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。三.实验环节L in u x中的驱动设计是嵌入式Li n ux开发中十分重要的部分,他规定开发者不仅要熟悉Linux的内核机制、