LINUX嵌入式实验报告.docx
- 文档编号:10175315
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:35
- 大小:119.77KB
LINUX嵌入式实验报告.docx
《LINUX嵌入式实验报告.docx》由会员分享,可在线阅读,更多相关《LINUX嵌入式实验报告.docx(35页珍藏版)》请在冰点文库上搜索。
LINUX嵌入式实验报告
■I
LINUX嵌入式实验报告
目录1..
实验一:
嵌入式Linux开发流程2..
实验二:
嵌入式Linux开发环境搭建6..
实验三:
串行端口程序设计1.1.
实验四:
A/DD/A接口实验1..6
实验五:
图形界面应用程序设计1..8
实验六:
内核与根文件系统实验2..3
实验七:
驱动程序设计实验2.9.
实验八:
无线通信实验3..3.
实验一:
嵌入式Linux开发流程
一.实验目的
了解嵌入式Linux的开发流程,会进行简单的开发。
二.实验内容
进行Linux的开发流程的简单介绍。
三.实验步骤
嵌入式Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过程:
建立开发环境,操作系统一般使用REDHAT-LINUX,版本7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装〔比方arm-linux-gcc、
arm-uclibc-gcc〕,或者安装产品厂家提供的交叉编译器。
使用Linux的RedLinux9的开发界面截图如下:
會
*诂吐片岳
C
o
Teh
配置开发主机,配置MINICOM,—般参数为波特率115200,数据位8位,停止位1,无奇偶校验,软硬件控制流设为无。
在WINDOWS下的超级终端的配置也是这样,MINICOM
软件的作用是作为调试嵌入式开发板信息输出的监视器和
键盘输入的工具;配置网络,只要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。
系统配置截图如下:
建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的BOOTLOADER,如-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体芯片进行移植修改。
有些芯片没有内置引导装载程序,比方三星的ARM7、ARM9系
列芯片,这样就需要编写烧写开发板上的flash的烧写程序,网
络上有免费下载的WINDOWS下通过JTAG并口简易仿真器烧写ARM外围flash芯片程序。
ViVi运行的截图如下:
开发应用程序,可以下载到根文件系统中,也可以放在YAFFS、
JFFS2文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起,这有点类似于UCOS-II的方式。
烧写内核,根文件系统,应用程序,发布产品。
实验二:
嵌入式Linux开发环境搭建
一、实验目的
了解并且掌握Linux的开发环境搭建方法。
二、实验内容
进行嵌入式Linux开发环境搭建
三、实验步骤
1.
在一台PC上安装RedHatLINUX9.0,选择Custom定制安装,在选择软件Package时最好
将所有包都安装,需要空间约2.7G,如果选择最后一项:
everything,即完全安装,将安装
3张光盘的全部软件,需要磁盘空间大约5G。
因此建议提前为REDHATLINUX的安装项,
留大约5—15G的空间,具体视用户的磁盘空间大小来确定,在安装完Redhat后还要安装
Linux的编译器和开发库以及ARM-Linux的所有源代码,这些包安装后的总共需要空间大
约为800M。
Linuxirindklek;
安装如下:
寅小5t£乎节乂件Mse^saick
KtdM lek MidJltTLjawiOOI VIT vfcdJk r*d}K*tvku RtdHit LJJ-.by005 肚an«t L)nnx-iOOJvn4k绢virtui.Ji K«dHtl Liniax-TCWed utli redhalvbmwmi文祥 UdMH L]ttKkx~s006v*4k VR・lt审virttt.il* r«dh.>twsd \iTiwbt«■titF•丹占 17-570KB r 、■・Hb“5 1KB vbwu*i*LL«c IJilJL3E3I \nkb 1wwT応i£*nEg】 1淸档Id药护 HrWI-Ol«t ■ft*AJL 电wh V*.w*var 2£B 安装好的Linux如下; 1© mo! 的左II比 奢 JJIiJii|1jfli ■ VMuxtTook 0%临h 2.开发工具软件的安装 安装环境搭建如上。 3.开发环境配置 配置网络,包括配置IP地址、NFS效劳、防火墙。 网络配置主要是要安装好以太 网卡,对于一般常见的RTL8139网卡,READHAT9.0可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。 然后配置宿主机IP为。 如果是在有多台电脑使用的局域网环境使用此开发设备,IP地址可以根据具体情况 设置,如下列图: 双击设备ethO的蓝色区域,进入以太网设置界面 这样其它网络设备根本无法访问它,即无法用NFSmount它,许多网络功能都将无 法使用,因此网络安装完毕后,应立即关闭防火墙。 SJJMh IT" arMX.H Minicom的配置如下: HMfGJ擁幽M I WI«hwi<*m■i«m2.w.0 A Sviia1E>iivr 心Mli>M> H LvcifiIrSt"旳翼 /*4v/1拿h FiC■ C» Cl19inFrof.fAimGi1twlPr^ffflfik E Hpi/lhir^BiIt I|i占彳见打町1Ml F liitd-wif#Fla*(aa11«1 Na 电; 計曰*CAHlir-e-l •冷 ChsnfrwhtiirbirItshf! SfttrnandiLrybvifldIflip11df|tFt-bp■贏・■ 四、实验总结 通过本次实验我学会了关于Linux配置的一些根本的应用,感觉收获特别大,这就算入 门了。 实验三: 串行端口程序设计 一、实验目的 了解在Linux环境下串行程序的根本方法。 掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。 学习使用多线程完成串口的收发处理。 二、实验内容 读懂程序源代码,学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接受和发送程序设计中。 三、预备知识有C语言的根底 掌握在Linux下常用编辑器的使用。 掌握Makefile的编写和使用。 掌握Linux下的程序编译与交叉编译过程。 四、实验原理 异步串行I/O方式是将传输数据的每个字符一位接一位〔例如先低位、后高位〕地传送。 数 据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连接线,最后用一对 线即可进行。 接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。 为了恢复发送的信息,双方必须协调工作。 在微型电脑中大量使用异步串行I/O方式,双方 使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。 但是由于每个字符 都要独立确定起始和结束〔即每个字符都要重新同步〕,字符和字符间还可能有长度不定的 空闲时间,因此效率较低。 叭业叭片g 11 1"U 1.0 I/O I 1.U [ 1/11 I/O ]1] 降1用 位您 也 1-J. ■救见位・ 上阖 位便 上图给出异步串行通信中一个字符的传送格式。 开始前,线路处于空闲状态,送出连续“1〞。 传送开始时首先发一个“0〞作为起始位,然后出现在通信线上的是字符的二进制编码数据。 每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。 后面是奇 偶校验位,根据约定,用奇偶检验位将所传字符中“1〞的位数凑成奇数个数或偶数个数。 也可以也可以约定不要奇偶校验位,这样就取消奇偶校验位。 最后是表示停止位的“1〞信 号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。 至此一个字符传送完毕,线 路又进入空闲,持续为“1〞。 经过一段随机的时间后,下一个字符开始传送才有发出起始位。 每一个数据位的宽度等于传送波特率的倒数。 微机异步串行通信中,常用的波特率为 50.95,110,150,300,600,1200,2400,4800,9600等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: 奇偶错: 在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 帧格式错: 一个字符从起始位到停止位的总尾数不对。 溢出错: 假设先接收的字符尚未被微机读取,后面的字符又传送过来,那么产生溢出错。 每一种错误都会给出相应的出错信息,提示用户处理。 一般串口调试都使用空的MODEM连接 电缆,其连接方式如下: 保枳楚〔帳林〕1—- WHStaRTS ■•Wt-yiSCTs «l«i|Pt»*fOTR2O摄骨托乐Rl22 图23.2实用RS^232C通讯连线 •ttttMDCD 22~*■22 ZO——20 tb>七“ 五、程序分析本实验的代码如下: #include #include #include #include #include #defineCOM1"/dev/ttySO〞 #defineCOM2"/dev/ttyS1〞 #defineENDMINITERM27/*ESCtoquitminiterm*/ #defineFALSE0 #defineTRUE1 volatileintSTOP=FALSE; volatileintfd; voidchild_handler(ints) { print(“stop! ! ! 'n〞); STOP=TRUE; /**/ Void*keyboard(void*date) { Intc; For(;;){ c=getchar();if(c=ENDMINITERM){STOP=TURE;Break; } } ReturnNULL; } /**/ /*modeminputhandle*/ Void*receive(void*date) { Intc; Printf(“readmodem\n〞); While(STOP==FALSE) { Read(fd,&c,1);/*comport*/ Write(1,&c,1);/*stdout*/ } Printf(“exitformreadingmodem\n〞); ReturnNULL; } /**/ Void*send(void*date) { Int='0'; Printf(“senddate\n〞); While(STOP==FALSE)/*modeminputhandler*/{ C++; C%=255; Write(fd,&c,1);/*stdout*/ Usleep(100000); } ReturnNULL;} /**/ Intmain(intargc,char**argv){ Structtermiosoldtio,newtio,oldstdio,newstdio; Structsigactionsa; Intok; Pthread_tth_a;th_b,th_c; Void*retval* If(argc>1) Fd=open(COM2,O_RDWR); Else Fd=open(COM1,O_RDWR);//|O_NOCTTY|O_NONBLOCK);If(fd<0){ Error(COM1); Exit(-1); } Tcgetattr(0,&oldstdio); Tcgetattr(fd,&oldtio);/*savecurrentmodemsettings*/ Tcgetattr(fd,&newstdio);/*getworkingstdio*/Newtio.c_cflag=BAUDRATE|CRTSCTS|CS8|CLOCAL|CREAD;/*ctrolflag*/Newtio.c_iflag=IGNPAR;/*inputflag*/ Newtio.c_oflag=0;/*outputflag*/ Newtio.c_lfag=0; Newtio.c_cc[VMIN]=1; Newtio.c_cc[VTIME]=0; /*nowcleanthemodemlineandactivatethesettingsformodem*/ Tcflush(fd,TCIFLUSH);Tcsetattr(fd,TCSANOW,&newtio);/*setattrib*/Sa.sa_handler=child_handler; Sa.sa_flags=0;Sigaction(SIGCHLD,&sa,NULL); Pthread_creat(&th_a,NULL,keyboard,0);Pthread_creat(&th_b,NULL,receive,0); Pthread_creat(&th_c,NULL,send,0);Pthread_join(th_a,&retval); Pthread_join(th_b,&retval);Pthread_join(th_c,&retval); Tcsetattr(fd,TCSANOW,&roldtio);/*restoreoldmodemsetings*/Tcsetattr(0,TCSANOW,&oldstdio);/*restoreoldttysetings*/Close(fd); Exit(0);} 六、实验步骤 1.阅读理解源码进入exp\basic\03_tty目录,使用vi编辑器或其他编辑器阅读理解源代码。 2.编译应用程序 3.下载调试 切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。 进入exp\basic\03_tty目录,运行term,观察运行结果的正确性。 [root@zxtroot]#minicom [/mnt/yaffs]mount-tnfs-onolock192.168.0.56: /arm2410s/host[/mnt/ysffs]cd/host/exp/basic/03-tty/ [/host/exp/basic/03_tty].term Readmodem Senddate 123456789: ;<=>? @ABCDEFGHIGHLMNOPQRSTUVWX 由于内核已经将串口1作为终端控制台,所以可以看到term发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口2进行收发测试。 Ctrl+c可使程序强行退出。 注意: 如果在执行./term时出现下面的错误,可以通过我们前文提到的方法建立一个连接来解决。 /dev/ttySO: Nosuchfileordirectory 解决方法: [/mnt/yaffs]cd/dev [/dev]ln-sf/dev/tts/0ttySO〔注意首字母是1,不是数字1〕 实验四: A/DD/A接口实验 AD局部 1实验目的 了解在LINUX环境下对S3C2410芯片的8通道10位A/D的操作与控制 2实验内容 学习AD接口远离,了解实现AD系统对于系统的软件和硬件要求,阅读ARM芯片文件,掌握ARM的AD相关存放器的功能,熟悉ARM系统硬件的AD相关接口uliyong外部模拟信号编程实现ARM循环采集全部前4路通道,并且在超级终端上显示。 3实验步骤 1.进入/arm2410s/exp/basic/04_ad目录,使用vi编辑器或者其他编辑器悦读理解源代码。 运行make产生ad可执行文件[root@zxt/]#cd/arm2410s/exp/basic/04_ad/[root@zxt04_ad]#make [root@zxt04_ad]#1s Binmain.cMakefilereadme.cxtsrc 3下载调试 换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录[root@zxtroot]#minicom [/mnt/yaffs]mount-tnfs-onolock192.168.0.56: /arm2410s/host[/mnt/yaffs]cd/host/esp/basic/04_ad/ [/host/exp/basic/04_ad]./adPressEnterkeyexit! 我们可以通过调节开发板上的三个黄色的电位器,来看a0,a1,a2的变化 DA局部 1实验目的 学习DA转换原理 掌握MAX504DA转换芯片的使用方法 掌握不带有DA的CPU扩展DA功能的主要方法 了解DA驱动程序参加内核的方法 2实验内容 学生DA接口原理,了解实现DA系统对于系统的软件和硬件的要求 3实验步骤 1阅读理解源码 进入/arm2410s/exp/basic/05_da目录,使用vi编辑器或者其他编辑器阅读理解源代码 2.编译应用程序 运行make产生da可执行文件da_main[root@zxt/]#cd/arm2410s/exp/basic/05_ad/[root@zxt04_ad]#make armv41-unknown-linux-gccda_main.o-oda_main[root@zxt05_da]#1s 3.下载调试 切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录然后进入/host/exp/05_da/drivers目录,用insmodexio.o命令插入DA驱动,并且用1smod命令查看是否已经插入 [/mnt/yaffs]cd/host/esp/basic/05_ad/ [/host/exp/basic/05_ad]cddrivers/ [/host/exp/basic/05_ad/drivers]1smodModuleSiveUsedbuNottaintedExio23840(unused) I2c-tops2141040(unused) 进入/host/exp/basic/05_da目录,运行./da_main观察运行结果的正确性,在输入./da_main后会出现下面的提示信息 [/host/exp/basic/05_da]./da_main Errorparameter Inputas: [~]./ad_mainda_idnumda_id: selectbetween0and1 这是由于我们没有制定参数造成的,他的格式为./da_main[da的id号][数字],我们可以通过选择0或1来决定输出到开发板上的哪个DA接口,同时还需要在0.0~4.096V之间来选择一个输出电压,下面的例子是用了开发板上的DA0且输出1V的电压,我们可以使用万用表对其进行测量。 [/host/exp/basic/05_ad]./da_main01 四.实验总结通过本次实验我了解到一些关于DAAD的相关知识。 实验五: 图形界面应用程序设计 一、实验目的 1.了解在Linux下安装Qt以及Qt/Embedded的根本步骤; 2.学会在Qt/E平台下使用Virtualframebuffer显示程序结果。 二、实验内容 1.在Linnux下编译和使用Qt/E平台; 2.在Qt/E平台下编译和运行一个程序使用Virtualframebuffer显示运行结果。 三、实验步骤 该在Trolltech公司的网站上可以下载该公司所提供的Qt/Embedded的免费版本,在安装产品光盘以后,本次实验目录下已有要下载的文件,在/arm2410s/gui/Qt/src下。 在做实验钱吧本次实验用到的三个文件拷贝到/root/2410sQt目录下。 [root@BCroot]#cd/root/ [root@BCroot]#mkdir2410sQt [root@BCroot]#cd/arm2410sQt/gui/Qt/src Q 安装编译器arm-linux-gcc-3.4.1: [root@BCsrc]#cd/arm2410s/gui/Qt/tools [root@BCtools]#tarxjvfarm-linux-gcc-3.4.1.tar.bz2-C./ [root@BCtools]#vi/root/.bashprofile//打开文件,将该文件中的PATH变亮改为PATH=$PATH: $HOME/bin: /arm2410s/gui/Qt/tools/usr/local/arm/3.4.1/bin/,存盘后退出。 [root@BCtools]#source/root/.bashprofile 如果要正确安装的话,在任意路径下输入ar后按Tab键即可列出编译器文件。 Qt/Embedded平台的搭建需要以下几步: 1、安装Tmakecd~/2410Qt— cd~/2410sQt— 3、安装Qt/Embedded cd~/2410sQt— 环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包,下面介绍一下这些环境变亮: TMAKEDIR: 只想用于编译Qt/Embedded的Tmake工具 第二步,编译Qt/Embedded cd$QT2DIR exportTMAKEPATH=4TMAKEDIR/lib/linux-g++ exportQTDIR=$QT2DIR exportPATH=$QTDIR/bi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINUX 嵌入式 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)