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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

LINUX嵌入式实验报告.docx

1、LINUX 嵌入式实验报告嵌入式实验报告LINUX 嵌入式实验报告LINUX 嵌入式实验报告 实验一:嵌入式 Linux 开发流程一实验目的了解嵌入式 Linux 的开发流程,会进行简单的开发。二实验内容进行 Linux 的开发流程的简单介绍。三实验步骤嵌入式 Linux 开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过程:建立开发环境,操作系统一般使用 REDHAT-LINUX,版本 7 到 9都可以,选择定制安装或全部安装,通过网络下载相应的 GCC 交叉编译器进行安装(比如 arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。

2、使用 Linux 的 Red Linux 9 的开发界面截图如下:配置开发主机,配置 MINICOM,一般参数为波特率 115200,数据位 8 位,停止位 1,无奇偶校验,软硬件控制流设为无。在WINDOWS 下的超级终端的配置也是这样,MINICOM 软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具;配置网络,只要是配置 NFS 网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。系统配置截图如下:建立引导装载程序 BOOTLOADER,从网络上下载一些公开源代码的 BOOTLOADER,如-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOO

3、T 等,根据自己具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如三星的 ARM7、ARM9 系列芯片,这样就需要编写烧写开发板上的 flash 的烧写程序,网络上有免费下载的WINDOWS 下通过 JTAG并口简易仿真器烧写 ARM 外围 flash 芯片程序。ViVi 运行的截图如下:开发应用程序,可以下载到根文件系统中,也可以放在 YAFFS、JFFS2 文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起,这有点类似于 UCOS-II 的方式。烧写内核,根文件系统,应用程序,发布产品。实验二:嵌入式 Linux 开发环境搭建一、实验目的了解并且掌握 Lin

4、ux的开发环境搭建方法。二、实验内容进行嵌入式 Linux 开发环境搭建三、实验步骤1.REDHAT LINUX 9.0 的安装在一台 PC 上安装 RedHat LINUX9.0,选择 Custom 定制安装,在选择软件 Package 时最好将所有包都安装,需要空间约 2.7G,如果选择最后一项:everything,即完全安装,将安装 3 张光盘的全部软件,需要磁盘空间大约 5G。因此建议提前为 REDHAT LINUX 的安装项,留大约 515G 的空间,具体视用户的磁盘空间大小来确定,在安装完 Redhat 后还要安装 Linux 的编译器和开发库以及 ARM-Linux 的所有源代

5、码,这些包安装后的总共需要空间大约为 800M。安装如下:安装好的 Linux 如下;2.开发工具软件的安装安装环境搭建如上。3.开发环境配置双击设备 eth0 的蓝色区域,进入以太网设置界面对于 REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP 访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFS mount 它,许多网络功能都将无法使用,因此网络安装完毕后,应立即关闭防火墙。Minicom 的配置如下:四、实验总结通过本次实验我学会了关于 Linux 配置的一些基本的应用,感觉收获特别大,这就算入门了。实验三:串行端口程序设计一、实验目的了解在 Linux 环境下串

6、行程序的基本方法。掌握终端的主要属性及设置方法,熟悉终端 I/O 函数的使用。学习使用多线程完成串口的收发处理。二、实验内容读懂程序源代码,学习终端 I/O 函数的使用方法,学习将多线程编程应用到串口的接受和发送程序设计中。三、预备知识有 C 语言的基础掌握在 Linux 下常用编辑器的使用。掌握 Makefile 的编写和使用。掌握 Linux 下的程序编译与交叉编译过程。四、实验原理异步串行 I/O 方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行 I/O 可以减少信号连接线,最后用一对线即可进行。接收方对于同一根线上一连串

7、的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行 I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。上图给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为 5 位、6 位、7 位或 8 位,一般采用 ASCII 编码。后面是奇偶校验位,根据约定

8、,用奇偶检验位将所传字符中“1”的位数凑成奇数个数或偶数个数。也可以也可以约定不要奇偶校验位,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续 1位、1.5 位或 2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才有发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50.95,110,150,300,600,1200,2400,4800,9600 等。接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不

9、符。帧格式错:一个字符从起始位到停止位的总尾数不对。溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。每一种错误都会给出相应的出错信息,提示用户处理。一般串口调试都使用空的 MODEM 连接电缆,其连接方式如下:五、程序分析本实验的代码如下:#include#include#include#include#include#include#define BAUDRATE B115200#define COM1“/dev/ttyS0”#define COM2“/dev/ttyS1”#define ENDMINITERM 27/*ESC to quit miniterm*/#

10、define FAL SE 0#define TRUE 1volatile int STOP=FALSE;volatile int fd;void child_handler(int s)print(“stop!n”);STOP=TRUE;/*_*/Void*keyboard(void*date)Int c;For(;)c=getchar();if(c=ENDMINITERM)STOP=TURE;Break;Return NULL;/*_*/*modem input handle*/Void*receive(void*date)Int c;Printf(“read modemn”);While

11、(STOP=FALSE)Read(fd,&c,1);/*com port*/Write(1,&c,1);/*stdout*/Printf(“exit form reading modemn”);Return NULL;/*_*/Void*send(void*date)Int=0;Printf(“send daten”);While(STOP=FALSE)/*modem input handler*/C+;C%=255;Write(fd,&c,1);/*stdout*/Usleep(100000);Return NULL;/*_*/Int main(int argc,char*argv)Stru

12、ct termios oldtio,newtio,oldstdio,newstdio;Struct sigaction sa;Int ok;Pthread_t th_a;th_b,th_c;Void*retval*If(argc1)Fd=open(COM2,O_RDWR);Else Fd=open(COM1,O_RDWR);/|O_NOCTTY|O_NONBLOCK);If(fd0)Error(COM1);Exit(-1);Tcgetattr(0,&oldstdio);Tcgetattr(fd,&oldtio);/*save current modem settings*/Tcgetattr(

13、fd,&newstdio);/*get working stdio*/Newtio.c_cflag=BAUDRATE|CRTSCTS|CS8|CLOCAL|CREAD;/*ctrol flag*/Newtio.c_iflag=IGNPAR;/*input flag*/Newtio.c_oflag=0;/*output flag*/Newtio.c_lfag=0;Newtio.c_ccVMIN=1;Newtio.c_ccVTIME=0;/*now clean the modem line and activate the settings for modem*/Tcflush(fd,TCIFLU

14、SH);Tcsetattr(fd,TCSANOW,&newtio);/*set attrib*/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,&ret

15、val);Tcsetattr(fd,TCSANOW,&roldtio);/*restore old modem setings*/Tcsetattr(0,TCSANOW,&oldstdio);/*restore old tty setings*/Close(fd);Exit(0);六、实验步骤1.阅读理解源码进入 expbasic03_tty目录,使用 vi 编辑器或其他编辑器阅读理解源代码。2.编译应用程序3.下载调试切换到 minicom 终端窗口,使用 NFS mount 开发主机的/arm2410s 到/host 目录。进入 expbasic03_tty 目录,运行 term,观察运行

16、结果的正确性。rootzxt root#minicom/mnt/ysffscd/host/exp/basic/03-tty/host/exp/basic/03_tty.termRead modem Send date 123456789:;?ABCDEFGHIGHLMNOPQRSTUVWX由于内核已经将串口 1 作为终端控制台,所以可以看到 term 发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口 2进行收发测试。Ctrl+c可使程序强行退出。注意:如果在执行./term 时出现下面的错误,可以通过我们前文提到的方法建立一个连接来解决。/dev/ttySO:No suc

17、h file or directory解决方法:/mnt/yaffscd/dev/dev ln-sf/dev/tts/0 ttySO(注意首字母是 1,不是数字 1)实验四:A/D D/A 接口实验AD 部分一 实验目的 了解在 LINUX 环境下对 S3C2410 芯片的 8 通道 10 位 A/D 的操作与控制二 实验内容学习 AD 接口远离,了解实现 AD 系统对于系统的软件和硬件要求,阅读 ARM 芯片文件,掌握 ARM 的 AD 相关寄存器的功能,熟悉 ARM 系统硬件的 AD相关接口 uliyong 外部模拟信号编程实现ARM 循环采集全部前 4 路通道,并且在超级终端上显示。三

18、实验步骤1.进入/arm2410s/exp/basic/04_ad 目录,使用 vi 编辑器或者其他编辑器悦读理解源代码。2.变异应用程序运行 make 产生 ad 可执行文件rootzxt/#cd/arm2410s/exp/basic/04_ad/rootzxt04_ad#makearmv41-unknown-linus-gcc-c-o main.o main.carmv41-unknown-linux-gcc-o./bin/ad main.o-lpthreadarmv41-unknown-linux-gcc-o ad main.o-lpthreadrootzxt04_ad#1sBin ma

19、in.cMakefile readme.cxt src3 下载调试换到 minicom 终端窗口,使用 NFSmount 开发主机的/arm2410s到/host 目录rootzxtroot#minicom/mnt/yaffscd/host/esp/basic/04_ad/host/exp/basic/04_ad./adPress Enter key exit!a0=0.0032a1=3.2968a2=3.2968我们可以通过调节开发板上的三个黄色的电位器,来看 a0,a1,a2,的变化DA 部分一 实验目的学习 DA 转换原理掌握 MAX504DA 转换芯片的使用方法掌握不带有 DA 的 C

20、PU扩展 DA 功能的主要方法了解 DA 驱动程序加入内核的方法二 实验内容学生 DA 接口原理,了解实现 DA 系统对于系统的软件和硬件的要求三 实验步骤1 阅读理解源码进入/arm2410s/exp/basic/05_da 目录,使用 vi 编辑器或者其他编辑器阅读理解源代码2.编译应用程序 运行 make 产生 da 可执行文件 da_mainrootzxt/#cd/arm2410s/exp/basic/05_ad/rootzxt04_ad#makearmv41-unknown-linus-gcc-c-o main.o main.carmv41-unknown-linux-gcc da_

21、main.o-o da_mainrootzxt05_da#1sda_main da_main.c da_main.o doc driversMakefile s3c44b0-spi.h3.下载调试切换到 minicom 终端窗口,使用 NFS mount 开发主机的/arm2410s 到/host 目录然后进入/host/exp/05_da/drivers 目录,用 insmod exio.o 命令插入 DA 驱动,并且用 1smod 命令查看是否已经插入/mnt/yaffscd/host/esp/basic/05_ad/host/exp/basic/05_adcd drivers/host/

22、exp/basic/05_ad、driversinsmod exio.oUsing exio.o/host/exp/basic/05_ad/drivers1smodModule Sive Used bu Not taintedExio 23840(unused)I2c-tops2 141040(unused)进入/host/exp/basic/05_da 目录,运行./da_main 观察运行结果的正确性,在输入./da_main 后会出现下面的提示信息/host/exp/basic/05_da./da_mainError parameterInput as:./ad_main da_id n

23、umda_id:select between 0 and 1num:range0.04.096这是由于我们没有制定参数造成的,他的格式为./da_mainda 的id 号数字,我们可以通过选择 0 或 1 来决定输出到开发板上的哪个DA 接口,同时还需要在 0.04.096V 之间来选择一个输出电压,下面的例子是用了开发板上的 DA0 且输出 1V 的电压,我们可以使用万用表对其进行测量。/host/exp/basic/05_ad./da_main0 1CurrentVoltage is 1.000000v四实验总结通过本次实验我了解到一些关于 DA AD 的相关知识。实验五:图形界面应用程序

24、设计一、实验目的1.了解在 Linux 下安装 Qt以及 Qt/Embedded 的基本步骤;2.学会在 Qt/E 平台下使用 Virtual framebuffer 显示程序结果。二、实验内容1在 Linnux 下编译和使用 Qt/E 平台;2在 Qt/E 平台下编译和运行一个程序使用 Virtual framebuffer 显示运行结果。三、实验步骤该在 Trolltech 公司的网站上可以下载该公司所提供的Qt/Embedded 的免费版本,在安装产品光盘以后,本次实验目录下已有要下载的文件,在/arm2410s/gui/Qt/src 下。在做实验钱吧本次实验用到的三个文件拷贝到/roo

25、t/2410sQt目录下。rootBC root#cd/root/rootBC root#mkdir2410sQtrootBC root#cd/arm2410sQt/gui/Qt/srcQrootBC src#cd/arm2410s/gui/Qt/tools rootBC tools#source/root/.bash profile如果要正确安装的话,在任意路径下输入 ar 后按 Tab 键即可列出编译器文件。Qt/Embedded 平台的搭建需要以下几步:1、安装 Tmakecd/2410Qtcd/2410sQt3、安装 Qt/Embeddedcd/2410sQt环境变量的设置是非常重要的

26、,它关系到能否正确的安装及编译这些安装包,下面介绍一下这些环境变亮:TMAKEDIR:只想用于编译 Qt/Embedded 的 Tmake 工具 第二步,编译 Qt/Embeddedcd$QT2DIRexport TMAKEPATH=4TMAKEDIR/lib/linux-g+exportQTDIR=$QT2DIRexport PATH=$QTDIR/bin:$PATHexportLD_LIBbin/RARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH/configure-no-xft/出现选项时都要输入 yesmakecp-artbin/uic$QTEDIR/bin/.

27、/configure 是对 Qt 进行配置,它包括很多选项,例如可以通过添加“-no-opengl”等,如果想要进一步了解可以通过键入。/configurehelp 来获得更多的帮助信息。编译完成后需要将生成的/bin/uic 复制到¥QTEDIR 下创建的目录 bin,因为在随后的编译 Qt/Embedded 的时候会用到这个工具。2、Build Qvfbexport TMAKEPATH=$TMAKEDIR/lib/linux-g+export QTDIR=$QT2DIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib

28、:$LD_LIBRARY_PATHcd$QTESIR/tools/qvfb/root/2410s/tmake-1.13/bin/tmake-o Makefile qvfb.promakemv qvfb$QTEDIR/bin/3.Build Qt/Embeddedcd$QTEDIRexport TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g+export QTDIR=$QTEDIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH./CONFIGURE-NO-

29、XFT-QVFB-DEPTHS4.8,16,32YES4.make在配置./configure 中-qvfb 用来支持 Virtual framebuffer-depths4,8,16,32 支持 4 位,8 位,16 位,32 位,的显示深度,此外还可以添加如-syestem-jpeg 和-gif 来提供对 jpeg 和 gif 的支持。配置系统同时还支持对特定平台系统选项的添加,但一般来讲,凡是支持framebuffer 的 linux 系统都可以使用“linux-generic-g+”平台。详细的配置信息可以通过运行./configurehelp 命令来查看。第四步,查看运行结果,如果上

30、面各步都能够成功的编译通过,下面就可以通过运行 Qt/Embedded 自带的 demo 来查看结果。在 Virtual framebuffer 上运行;export QTDIR=$QTEDIRexport PATH=$QTDIR/bin:$PATHexport LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATHcd$QTESIR/examples/launcher/qvfb-width640-height 480&sleep 10./launcher-qws运行结果如下:将上面的步骤完成后,沃恩就已经建立好了在本机上开发 Qt 应用程序的环境,下面我们通过

31、编写一个“hello embedded”的程序来了解 Qt 程序设计。rootBC2410sQt#mkdir exprootBC2410sQt#cd exprootBC exp#vi hello.cpp使用 VI 编写文件 hello.cpp,程序代码如下:/hello.cpp#include#includeInt main(int argc,char*argv)QApplication app(argc,argv);QLabel*hello=new QLabei(“hello qt/embedded”,0);App.setMainWidget(hello);Hello-show();Retu

32、rn app.exec();现在开始逐行讲解一下每一句的意思,中我了这些以后可以帮助我们更加了解 QT 的程序设计。第 1行和第二行包含了两个头文件,这两个头文件中包含qapplication 和 qlabel 类的定义。第 5行创建了一个 qapplication 对象,用于管理整个程序的资源,它需要两个参数,因为 qt 本身需要一些明林行的参数。第 6行创建了一个用来显示 hello qt/embedded!的部件。在 QT 中,都是一个可视化的用户接口,按钮,菜单,滚动条都是部件的实例。部件可以包含其他部件,例如,一个应用程序窗口通常是一个包含QMenuBar,QToolBar,QSta

33、tusBar 和其他的部件。在 QLable 含糊中的参数 0 表示,这是一个窗口而不是嵌入到其他窗口中的部件。第 7行设置 hello 部件为程序的主部件,当用户关闭主部件后,应用程序将会被关闭。如果没有主部件的话,即使用户关闭了程序也会在后他继续运行。第 8行使 hello 部件可视,一百年来说部件被创建后都是被隐藏的,因此可以显示在前根据需要来定制部件,这样的好处是可以避免部件创建所造成的闪烁。第 9 行把程序的控制权交还给 Qt,这时候程序就进入就绪模式,可视随时被用户行为激活,例如点击鼠标,敲击键盘等。下面我们哟啊让我们的程勋运行起来,首先要让它能够在 Virtual framebuffer 中显示出来,然后再通过交叉编译在开发板上运行。要在本机的 Virtual framebuffer 中显示结果,下面几个步骤是必须的:1.生成工程文件(.pro)每一个 qt 程序都对应一个工

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

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