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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

《嵌入式系统》实验报告指导书含答案.docx

1、嵌入式系统实验报告指导书含答案实验一 熟悉嵌入式LINUX开发环境1、实验目的熟悉UP-TECHPXA270-S的开发环境。学会WINDOWS环境与嵌入式Linu环境共享资源的基本方法。2、实验内容学习UP-TECHPXA270-S系统的使用、XP和虚拟机之间传送文件方法以及UP-TECHPXA270-S和虚拟机之间共享目录的建立方法。3、预备知识了解UP-TECHPXA270-S的基本结构和配置,Linux基本知识。4、实验设备硬件:UP-TECHPXA270-S开发板、PC机(内存500M以上)。软件:PC机操作系统RADHAND LINUX 9+MIMICOM+RAM LINUX操作系统

2、5、实验步骤(1)、在虚拟机下练习Linux常用命令。(注意以下操作只能在rootBC root#,也就是root文件夹下运行,不然会导致系统不能启动) a. 学习命令通过“man *”和“* -help”得到的命令使用方法。 b学习并掌握如下命令: ls,cd ,pwd,cat,more,less,mkdir, rmdir ,rm,mv,cp,tar,ifconfig(2)、XP与虚拟机之间传送文件(Samba服务器建立、网络设置、文件传送);(3)、了解系统资源和连线;(4)、开发板与虚拟机之间共享目录建立(设置NFS、开发板IP设置、目录挂载),挂载文件;(5)vi(vim)的使用(6)

3、输入qt,启动桌面,按CTRL+C退出 6、实验报告要求(1)、XP和虚拟机之间传送文件步骤; 虚拟机共享XP文件: 选择虚拟机设置,设置要共享的文件启动Linux进入/mnt/hgfs即可看到共享文件夹服务器设置samba服务器(设置需要共享的目录)XP共享虚拟机文件:服务器设置samba服务器(设置需要共享的目录)确保网络的PING通(即在同一局域网):1.虚拟机的192.168.1.234(RH9)2.XP的为192.168.1.1253.在XP 下点击开始-运行(192.168.1.234)4.用户名bc密码123456以上实现了Linux虚拟机(RH9)和XP的文件的共享(2)、开发

4、板与虚拟机之间建立共享目录以及文件挂载步骤;1. 服务器设置nfs服务器(设置需要共享的目录)2. 设置开发板的ip地址:ifconfig eth0 192.168.1.53. 在实验箱终端里输入mount -t nfs -o nolock 192.168.1. 234:/up-techpxa270/exp /mnt/nfs 4. /mnt/nfs即为共享目录(3)、请画出虚拟机、PC机和ARM实验箱之间的硬件连接图;(4)、在Linux中怎样配置网络;系统设置-网络,在新的选项卡中(5)、实验中遇到的问题与解决过程。第一个实验相对简单些就是熟悉实验环境,然后练习了文件挂载, 学会了开发板和虚

5、拟机之间传送文件的方法。挂载时我觉得难点是容易忽略IP的配置,若两者IP不在同一局域网,则挂载不成功。最后是练习VI编辑器的使用,VI编辑器在上学期学过,这次只是重新熟悉下。实验二 嵌入式LINUX系统的编程1、实验目的熟悉UP-TECHPXA270-S下Linux的开发环境,了解GNU/make工具的工作原理。学会使用makefile管理项目,学会编写一个Makefile文件。熟悉arm-linux-gcc交叉编译的使用,了解嵌入式开发的基本过程。2、实验内容新建一个目录,编写几个源文件,使用makefile 管理项目。学习在linux 下的编程和编译过程,以及UP-TECHPXA270-S

6、 开发板开发环境的设置。下载已经编译好的文件到UP-TECHPXA270-S 开发板中运行。3、预备知识C 语言的基础知识、程序调试的基础知识和方法,LINUX 的基本操作。4、实验设备及工具(包括软件调试工具)硬件:UP-TECHPXA270-S 嵌入式开发板、PC 机Pentumn500 以上, 硬盘10G 以上。软件:PC 机操作系统REDHAT LINUX 9.0 MINICOM ARM-LINUX 开发环境5、实验步骤(1)、建立工作目录(2)、编写程序源代码(3)、编写makefile 文件(4)、编译应用程序(5)、下载调试(6)、 写一个简单的工程,并输出自己的姓名和学号,利用

7、Makefile管理工程,并写出Makefile文件,进行调试。6、实验报告要求(1)、写清每步实验步骤的具体操作内容。1.建立工作目录:先挂载:服务器设置nfs服务器(设置需要共享的目录)设置开发板的ip地址:ifconfig eth0 192.168.1.5在实验箱终端里输入mount -t nfs -o nolock 192.168.1. 234:/up-techpxa270/exp /mnt/nfs /mnt/nfs即为共享目录在/mnt/nfs下建立自己的目录:mkdir cz2.编写程序源代码使用VI编辑器在工作目录写入源代码3.编写makefile 文件使用 vi makefil

8、e命令 来编写makefile文件4.编译应用程序使用编译命令:make f makefile 来编译程序5.下载调试在宿主PC上启动NFS服务并设置共享目录。就可进行两者通信了。6.写一个简单的工程,并输出自己的姓名和学号,利用Makefile管理工程,并写出Makefile文件,进行调试。(2)、简述Makefile文件的规则。Makefile文件 Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像

9、一个Shell脚本一样,其中也可以执行操作系统的命令。makefile是一个make的规则描述脚本文件,包括四种类型行:目标行、命令行、宏定义行和make伪指令行(如“include”)。makefile文件中注释以“#”开头。当一行写不下时,可以用续行符“”转入下一行。(3)、简述调试情况。先是*.h和*.c文件的编写,最后是makefile文件编写。写好makefile文件amake后,用命令:make f amake进行编译,但是一直提示一个错误,说是amake文件第6行出错,然后使用vi amake命令进行amake文件修改,但还是出错,花了半个多小时都没成功,后来重新编写amake文

10、件才得以编译成功。我猜测是第一次写amake文件时,加入了不能识别的字符。实验三 串行端口程序设计1、实验目的了解在Linux 环境下串行程序设计的基本方法; 掌握终端的主要属性及设置方法;熟悉终端IO 函数的使用;完成串口的收发处理。2、实验内容读懂程序源代码,学习终端IO 函数tcgetattr(), tcsetattr(),tcflush()的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。3、预备知识有 C 语言基础;掌握 Makefile 的编写和使用;掌握 Linux 下的程序编译与交叉编译过程4、实验设备及工具硬件:UP-TECHPXA270-S 嵌入式开发板、PC

11、机Pentumn500 以上, 硬盘10G 以上。软件:PC 机操作系统REDHAT LINUX 9.0 MINICOM ARM-LINUX 开发环境5、实验步骤(1)、将E盘下的03_tty复制到D:PXA270Share下;将虚拟机的共享打开;(2)、主机A的虚拟机添加串口,主机A的COM1与实验箱ttyS1相连,实验箱ttyS0与另一台PC机B相连;(3)、将每台虚拟机linux的/up-techpxa270/exp/basic/03_tty删除,将两台主机的D:PXA270Share03_tty复制到虚拟机linux下的/up-techpxa270/exp/basic下;(4)、进入/

12、up-techpxa270/exp/basic/03_tty 目录,使用vi 编辑器或其他编辑器阅读理解serial_rcv和serial_send的源代码。(5)、分别编译serial_rcv和serial_send下的源文件生成可执行文件。(6)、自主选择作为发送端或接收端,并修改相应的代码。(7)、挂载PC机B的/up-techpxa270/exp到开发板的/mnt/nfs。(8)、在开发板和PC机Alinux下运行可执行程序,一个发送数据,一个接收数据。(9)、修改程序,使发送端发送一个特定字符给接收端,且发送端回显一个字符或一句话。6、实验报告要求(1)、写清每步实验步骤的具体操作内

13、容。 1.将E盘下的03_tty复制到D:PXA270Share下;将虚拟机的共享打开:打开虚拟机,选择red hat 的设置,在“选项”的选项卡下打开虚拟机共享 2.主机A的虚拟机添加串口,主机A的COM1与实验箱ttyS1相连,实验箱ttyS0与另一台PC机B相连; 3.将每台虚拟机linux的/up-techpxa270/exp/basic/03_tty删除,分别将两台主机的D:PXA270Share03_tty复制到虚拟机linux下的/up-techpxa270/exp/basic下; 4.进入/up-techpxa270/exp/basic/03_tty 目录,使用vi 编辑器或其

14、他编辑器阅读理解serial_rcv和serial_send的源代码。5.分别编译serial_rcv和serial_send下的源文件生成可执行文件。使用make 命令在linux平台编译6.自主选择作为发送端或接收端,并修改相应的代码。7.挂载PC机B的/up-techpxa270/exp到开发板的/mnt/nfs。服务器设置nfs服务器(设置需要共享的目录),设置开发板的ip地址:ifconfig eth0 192.168.1.5,在实验箱终端里输入mount -t nfs -o nolock 192.168.1. 234:/up-techpxa270/exp /mnt/nfs ,/mn

15、t/nfs即为共享目录 8.在开发板和PC机Alinux下运行可执行程序,一个发送数据,一个接收数据。 运行程序:./ serial 9.修改程序,使发送端发送一个特定字符给接收端,且发送端回显一个字符或一句话。while(1) *serial_buf = getchar(); if(getchar()=a) printf(“hello world!n”); write(serial_fd, serial_buf, 1); (2)、232串行通讯的数据格式是什么?(3)、串行通讯最少需要几根线,分别如何连接?最少需要3根线,分别是RXD(接收数据)、TXD(发送数据)、GND(信号地)。AB的

16、地线相连,A的RXD接B的TXD,B的RXD接A的TXD。(4)、分析Makefile文件。CROSS=arm-linux- /交叉编译CC=$(CROSS)gcc /GCC交叉编译器CPP=$(CROSS)g+ /G+交叉编译INSTALL=installBIN=/usr/local/binWARNINGS = -Os -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual -Winline -I.CFLAGS= -O2 $(WARNINGS)MATH_LIB=-lmLIBS= $

17、(MATH_LIB) lpthread /引用库文件OBJ= serial.o main.o TARGET=serial /目标文件all: $(TARGET) $(OBJ)/下面一层层开始编译# Applications:serial: $(OBJ) $(CC) $(CFLAGS) -o $(TARGET) $(OBJ) $(LIBS)main.o: main.c $(CC) $(CFLAGS) -c -o $ $serial.o: serial.c serial.h $(CC) $(CFLAGS) -c -o $ $pthread.txt,然后再用cat pthread.txt查看文件内容

18、,结合程序分析结果;(5)加入一个新的线程用于处理键盘输入,并在按特定字符时终止所有线程。6、实验报告要求(1)写清每步实验步骤及具体操作内容; 1.进入exp/basic/02_pthread目录,使用VI命令即可打开源代码进行阅读 2.运行make产生pthread可执行文件 3.挂载:服务器设置nfs服务器(设置需要共享的目录),设置开发板的ip地址:ifconfig eth0 192.168.1.5,在实验箱终端里输入mount -t nfs -o nolock 192.168.1. 234:/up-techpxa270/exp /mnt/nfs ,/mnt/nfs即为共享目录 4.

19、进入/mnt/exp/basic/02_pthread目录,运行./pthread,观察运行结果的正确性,若显示结果太快,可以用以下命令输出显示结果到pthread.txt文件./pthread pthread.txt,然后再用cat pthread.txt查看文件内容,结合程序分析结果;最后的结果:put-998put-999producer stopped!993-get994-get995-get996-get997-get998-get999-getconsumer stopped! 5.加入一个新的线程用于处理键盘输入,并在按特定字符时终止所有线程。void listener(voi

20、d *data) if(getch()=q) pthread_cancel(id1); pthread_cancel(id2); pthread_exit(0);(2)写出程序pthread.c的分析;#include #include #include #include pthread.h#define BUFFER_SIZE 16/* 设置一个整数的圆形缓冲区*/struct prodcons int bufferBUFFER_SIZE; /* 缓冲区数组*/pthread_mutex_t lock; /* 互斥锁*/int readpos, writepos; /* 读写的位置*/pth

21、read_cond_t notempty; /* 缓冲区非空信号pthread_cond_t notfull; /*缓冲区非满信号*/;/*-*/*初始化缓冲区*/void init(struct prodcons * b)pthread_mutex_init(&b-lock, NULL); /*初始化后处于解锁状态*/pthread_cond_init(&b-notempty, NULL); /*指针为空时默认状态*/pthread_cond_init(&b-notfull, NULL);b-readpos = 0;b-writepos = 0;/*-*/* 向缓冲区中写入一个整数*/voi

22、d put(struct prodcons * b, int data)pthread_mutex_lock(&b-lock);/*等待缓冲区非满*/while (b-writepos + 1) % BUFFER_SIZE = b-printf(wait for not fulln);pthread_cond_wait(&b-notfull, &b-lock);/*写数据并且指针前移*/b-bufferb-writepos = data;b-writepos+;if (b-writepos = BUFFER_SIZE) b-writepos = /*设置缓冲区非空信号*/pthread_con

23、d_signal(&b-notempty);pthread_mutex_unlock(&b-lock);/*-*/*从缓冲区中读出一个整数*/int get(struct prodcons * b)int data;pthread_mutex_lock(&b-lock);/* 等待缓冲区非空*/while (b-writepos = b-readpos) printf(wait for not emptyn);pthread_cond_wait(&b-notempty, &b-lock);/* 读数据并且指针前移*/data = b-bufferb-readpos;b-readpos+;if

24、(b-readpos = BUFFER_SIZE) b-readpos = 0;/* 设置缓冲区非满信号*/pthread_cond_signal(&b-notfull);pthread_mutex_unlock(&b-lock);return data;/*-*/#define OVER (-1)struct prodcons buffer;/*-*/void * producer(void * data) /*生产者进程函数*/int n;for (n = 0; n %dn, n);put(&buffer, n);put(&buffer, OVER);printf(producer sto

25、pped!n);return NULL;/*-*/void * consumer(void * data) /*消费者进程函数*/int d;while (1) d = get(&buffer);if (d = OVER ) break;printf( %d-getn, d);printf(consumer stopped!n);return NULL;/*-*/int main(void)pthread_t th_a, th_b;void * retval; /*存储被等待线程的返回值*/init(&buffer);pthread_create(&th_a, NULL, producer,

26、0);pthread_create(&th_b, NULL, consumer, 0);/* 等待生产者和消费者结束*/pthread_join(th_a, &retval);pthread_join(th_b, &retval);return 0;(3) 写出修改后的代码并加以说明;void listener(void *data) if(getch()=q) pthread_cancel(id1); pthread_cancel(id2); pthread_exit(0);在main函数中:int main(void)pthread_t th_a, th_b,th_a;void * retval;init(&buffer);pthread_create(&th_a, NULL, producer, 0);pthread_create(&th_b, NULL, consumer, 0);

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

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