Linux与嵌入式系统实验指导书春 0424 1.docx

上传人:b****6 文档编号:7837369 上传时间:2023-01-26 格式:DOCX 页数:42 大小:1,022.95KB
下载 相关 举报
Linux与嵌入式系统实验指导书春 0424 1.docx_第1页
第1页 / 共42页
Linux与嵌入式系统实验指导书春 0424 1.docx_第2页
第2页 / 共42页
Linux与嵌入式系统实验指导书春 0424 1.docx_第3页
第3页 / 共42页
Linux与嵌入式系统实验指导书春 0424 1.docx_第4页
第4页 / 共42页
Linux与嵌入式系统实验指导书春 0424 1.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

Linux与嵌入式系统实验指导书春 0424 1.docx

《Linux与嵌入式系统实验指导书春 0424 1.docx》由会员分享,可在线阅读,更多相关《Linux与嵌入式系统实验指导书春 0424 1.docx(42页珍藏版)》请在冰豆网上搜索。

Linux与嵌入式系统实验指导书春 0424 1.docx

Linux与嵌入式系统实验指导书春04241

Linu与嵌入式系统实验指导书

 

计算机与通信学院

兰州理工大学

2016年

目录

实验一虚拟机及linux系统的安装1

实验二LINUX相关命令及makefile文件的编写4

实验三多线程应用程序设计8

实验四嵌入式WEB服务器设计15

实验五点阵式LED实验21

实验一虚拟机及linux系统的安装

一、实验目的

熟悉Linux开发环境,掌握虚拟机软件VMware的安装方法,掌握FedoraCore4Linux发行版的安装。

了解VMwaretools的用途;掌握VMwaretools的安装方法;初步了解部分Linux命令的使用。

二、实验原理

虚拟机的配置,Linux的安装与基本命令的操作。

三、实验仪器及器件

硬件:

UP-NETARM2410-S嵌入式实验平台、PC机。

软件:

PC机操作系统FedoraCore4Linux(或者Redflag)+MINICOM+ARM-LINUX开发环境或超级终端。

四、实验内容和步骤

本次实验使用FedoraCore4Linux(或者Redflag)操作系统环境。

1、准备如下安装文件:

VMware.Workstation.5.5中文版(虚拟机)带注册机

FC4-i386-disc1.iso

FC4-i386-disc2.iso

FC4-i386-disc3.iso

FC4-i386-disc4.iso

FC4-i386-rescuecd.iso

2、VMware软件的安装

双击安装文件,按照提示进行下一步

需要输入注册码时,运行注册机目录下的keygen..exe,点击generate,serial框中的即为注册码。

安装完成后,运行汉化补丁目录下的HF_Vmware5.5进行汉化

VMvaretools的用途:

在Linux中方便地访问Windows系统下的文件(通过目录/mnt/hgfs)

增强桌面图形性能,屏幕分辨率

鼠标可以在Windows系统和虚拟机之间方便切换

3、VMwaretools的安装

打开VMware软件,启动已安装的Linux系统,通过菜单虚拟机->安装vmware工具,点击install,在Linux桌面上,点鼠标右键,打开终端,输入以下命令:

mount–tiso9660/dev/cdrom/mnt

cd/mnt

cpVMwareTools-5.5.0-18463.tar.gz/tmp

cd/tmp

umount/dev/cdrom

tarzxvfVmwareTools-5.5.0-18463.tar.gz

cdvmware-tools-distrib

./vmware-install.pl

一路回车

虚拟机->虚拟机设置->选项->共享文件夹->添加(名称d,主机文件夹D:

\,名称e,主机文件夹E:

\),确定

reboot

4、验证是否安装成功

1)鼠标是否能方便地在Windows和虚拟机之间切换

2)在Linux中能否通过目录/mnt/hgfs访问Windows下的文件

5、FedoraCore4Linux发行版的安装(或者安装redflag版本,过程一样,自己选择)

在VMware软件中,新建虚拟机->下一步,选择典型->下一步,选择linux->下一步,选择linux安装的位置->下一步,使用桥接网络->下一步,完成。

编辑虚拟机->设置,选择cdrom1,使用iso映像,选中FC4-i386-disc1.iso,确定

启动此虚拟机,进入linux安装界面,选择skip,跳过光盘检测,按next,选择简体中文,按next,下一步,安装类型选择定制,下一步;选择手工分区,下一步,弹出警告框,选择是;新建,选择文件类型为swap,大小为1000MB,确定。

新建,选择文件类型为ext3,挂载点为/,大小为“使用全部可用空间”,确定,分区结果如下图所示:

下一步,下一步,选择无防火墙,弹出警告框,点击继续

下一步,设置用户口令,输入两次,必须相同,至少为6个字符

下一步,选择软件包组界面,选择全部(7G左右,保证硬盘空间充足,避免今后使用时出现一些问题)

按照提示,点击下一步,开始安装

第一张盘FC4-i386-disc1.iso安装完后,有提示音

编辑虚拟机->设置,选择cdrom1,使用iso映像,选中FC4-i386-disc2.iso,确定,继续第二张盘的安装

完成四张盘的安装后,自动重启,进入系统

按提示点击下一步,设置自己的用户名,系统默认有个超级用户root

在提示输入用户名时,可以输入自己设置的用户名和密码(进入系统后,使用用户权限,安全),也可以输入root用户,密码为在第11步里设置的(进入系统后,使用超级用户权限)

五、思考题

虚拟机的工作原理?

怎样完成和windows文件的共享?

六、预习要求

虚拟机的配置,Linux的基本操作。

 

实验二LINUX相关命令及makefile文件的编写

一、实验目的

了解Linux系统中的用户管理;掌握Linux系统中用户管理相关的常用命令;了解Linux系统中的文件和目录管理;掌握Linux系统中文件和目录管理相关的常用命令;掌握Linux系统中其它的一些常用命令;掌握文本编辑器vi的使用方法;了解makefile的编写规则;通过make命令和makefile文件实现自动化编译。

二、实验原理

Linux的基本操作;C语言的基础知识、程序调试的基础知识和方法。

三、实验仪器及器件

硬件:

UP-NETARM2410-S嵌入式实验平台、PC机。

软件:

PC机操作系统FedoraCore4Linux(或者REDflag)+MINICOM(或超级终端)+ARM-LINUX开发环境

四、实验内容和步骤

1、Linux是一个支持多用户的操作系统,其中root用户必不可少,root用户具有超级管理权限。

其他用户具有一般权限,Linux还支持用户组管理。

2、最常使用的一些命令:

who命令:

显示系统中当前有哪些用户在线,显示的了用户ID,终端,登录IP,上线时间,停留时间,CPU使用量,动作等等。

passwd命令:

用来更改用户的密码

su命令:

从一般用户切换到root用户,需要输入密码

useradd命令:

添加新用户

userdel命令:

删除用户

usermod命令:

修改用户账号

groupadd命令:

增加新的用户组

groupdel命令:

删除用户组

groupmod命令:

修改用户组

gpasswd命令:

管理组成员

last命令:

显示系统开机以来或是从每月初登录用户的信息

3、练习

1)、在Linux下将root用户的密码修改为Linux#1

2)、创建用户user01,user02,user03,创建用户组group1,group2

3)、将用户user01、user02划归group1组,将用户user03划归group2组

4、Linux系统中的目录及各个目录的大致作用:

/:

根目录

/bin:

存放必要的命令

/boot:

存放内核以及启动所需的文件等

/dev:

存放设备文件

/etc:

存放系统的配置文件

/home:

用户文件的主目录,用户数据存放在其主目录中

/lib:

存放必要的运行库

/mnt:

存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下。

/proc:

存放存储进程和系统信息

/root:

超级用户的主目录

/sbin:

存放系统管理程序

/tmp:

存放临时文件的目录

/usr:

包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。

/var:

包含系统产生的经常变化的文件,例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等等。

5、Linux系统中的文件类型:

文本文件、C语言源文件、二进制的可执行文件、shell文件。

目录文件设备文件,如软驱A为/dev/fd0

6、常用命令

1、cat命令:

将文件输出或重定向到其它文件

2、cd命令:

切换工作目录

3、cp命令:

复制文件或目录

4、mv命令:

将一个文件移至另一文件,或将数个文件移至另一目录

5、rm命令:

删除文件或目录

6、ls命令:

显示指定目录下的内容

7、mkdir命令:

建立目录

8、rmdir命令:

删除空的目录

9、touch命令:

创建空文件

10、wc命令:

该命令统计给定文件中的字节数、字数、行数

11、pwd命令:

显示当前所在目录的绝对路径名称

12、more命令:

类似cat,不过会一页一页地显示

13、find命令:

在指定的目录及子目录中查找匹配条件的文件

14、grep命令:

文本搜索命令,支持正则表达式

15、ln命令:

创建软链接或硬链接

16、chgrp命令:

更改文件或目录的所属群组

17、chmod命令:

更改文件或目录的权限

18、chown命令:

改变文件或目录的所有者

7、网络管理:

1、ifconfig命令:

配置或查看网络接口参数

2、ping命令:

测试本地到目的主机是否连通

3、netstat命令:

显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况

4、traceroute命令:

显示数据包到主机间的路径

5、route命令:

查看并编辑IP路由表

6、mesg命令:

打开或关闭其他用户对自己登录终端的广播功能

7、write命令:

向指定的用户发送信息

8、进程管理

1、ps命令:

显示当前运行进程的状态

2、kill命令:

发送特定信号给id为pid的进程

3、top命令:

实时显示进程的动态

9、文件系统

1、fdisk命令:

查看或创建磁盘分区

2、df命令:

显示文件系统的状况

3、dd命令:

把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。

4、fsck命令:

检查与修复文件系统

5、mkfs命令:

在特定的分区上建立文件系统

6、mount命令:

将文件系统挂在目录的某个位置之上。

这个命令可以被用来挂上任何的文件系统,甚至可以用-oloop选项将某个一般的文件当成硬盘分区挂载。

这对于ramdisk或是ISO9660的镜像文件之解读非常实用。

10、系统管理

1、clear命令:

清除屏幕

2、export命令:

用于设置或显示环境变量

3、halt命令:

关闭系统

4、init命令:

所有进程的父进程,改变运行层级

5、shutdown命令:

关机程序

6、reboot命令:

重新启动

11、备份压缩

1、tar命令:

对文件或目录进行打包或解包

2、gzip/gunzip命令:

压缩和解压缩

3、bzip2/bunzip2命令:

比gzip压缩效率更高的压缩和解压缩

12、其它

1、cal命令:

显示日历

2、at命令:

可以让用户指定在特定时刻执行某个程序或命令

13、vi的三种工作模式:

1)、命令模式:

执行相关文本编辑命令

2)、输入模式:

输入文本

3)、末行模式:

实现查找、替换、保存、多文件操作等等功能

4)、进入vi,直接在Shell提示符下键入vi[文件名称],如果该文件在当前目录不存在,则vi创建之。

5)、退出vi

14、假设一个程序由test1.c,test2.c两个源文件组成,test1.c文件需要包含头文件test1.h,test2.c需要包含test2.h

15、编写一个简单的makefile文件如下:

Test:

test1.otest2.o

Gcc–otesttest1.otest2.o

Test1.o:

test1.ctest1.h

Gcc–c–otest1.otest1.c

Test2.o:

test2.ctest2.h

Gcc–c–otest2.otest2.c

Clean:

Rm–f*.o

16、在shell环境下,运行make,则自动编译程序,生成可执行程序test

17、根据以上实例和makefile的编写规则,编写多个c语言程序,并使用make来实现自动编译。

五、思考题

Makefile是如何工作的?

其中的宏定义分别是什么意思?

六、预习要求

C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。

 

实验三多线程应用程序设计

一、实验目的

了解Linux下多线程程序设计的基本原理;

学习pthread库函数的使用。

二、实验原理

Linux的基本操作;C语言的基础知识、程序调试的基础知识和方法。

三、实验仪器及器件

硬件:

UP-NETARM2410-S嵌入式实验平台、PC机。

软件:

PC机操作系统FedoraCore4Linux(或者REDflag)+MINICOM(或超级终端)+ARM-LINUX开发环境

四、实验内容和步骤

读懂pthread.c的源代码,熟悉几个重要的PTHREAD库函数的使用。

掌握共享锁和信号量的使用方法。

进入/arm2410cl/exp/basic/02_pthread目录,运行make产生pthread程序,使用NFS方式连接开发主机进行运行实验。

1.多线程程序的优缺点

多线程程序作为一种多任务、并发的工作方式,有以下的优点:

1)提高应用程序响应。

这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(timeconsuming)置于一个新的线程,可以避免这种尴尬的情况。

2)使多CPU系统更加有效。

操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。

3)改善程序结构。

一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。

LIBC中的pthread库提供了大量的API函数,为用户编写应用程序提供支持。

2.实验源代码与结构流程图

本实验为著名的生产者-消费者问题模型的实现,主程序中分别启动生产者线程和消费者线程。

生产者线程不断顺序地将0到1000的数字写入共享的循环缓冲区,同时消费者线程不断地从共享的循环缓冲区读取数据。

流程图如图2.2.1所示:

 

本实验具体代码如下:

/************************************************

*Theclassicproducer-consumerexample.

*Illustratesmutexesandconditions.

*byZoujianguo

*2003-12-22

*************************************************/

#include

#include

#include

#include"pthread.h"

#defineBUFFER_SIZE16

/*设置一个整数的圆形缓冲区*/

structprodcons{

intbuffer[BUFFER_SIZE];/*缓冲区数组*/

pthread_mutex_tlock;/*互斥锁*/

intreadpos,writepos;/*读写的位置*/

pthread_cond_tnotempty;/*缓冲区非空信号*/

pthread_cond_tnotfull;/*缓冲区非满信号*/

};

/*--------------------------------------------------------*/

/*初始化缓冲区*/

voidinit(structprodcons*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;

}

/*--------------------------------------------------------*/

/*向缓冲区中写入一个整数*/

voidput(structprodcons*b,intdata)

{

pthread_mutex_lock(&b->lock);

/*等待缓冲区非满*/

while((b->writepos+1)%BUFFER_SIZE==b->readpos){

printf("waitfornotfull\n");

pthread_cond_wait(&b->notfull,&b->lock);

}

/*写数据并且指针前移*/

b->buffer[b->writepos]=data;

b->writepos++;

if(b->writepos>=BUFFER_SIZE)b->writepos=0;

/*设置缓冲区非空信号*/

pthread_cond_signal(&b->notempty);

pthread_mutex_unlock(&b->lock);

}

/*--------------------------------------------------------*/

/*从缓冲区中读出一个整数*/

intget(structprodcons*b)

{

intdata;

pthread_mutex_lock(&b->lock);

/*等待缓冲区非空*/

while(b->writepos==b->readpos){

printf("waitfornotempty\n");

pthread_cond_wait(&b->notempty,&b->lock);

}

/*读数据并且指针前移*/

data=b->buffer[b->readpos];

b->readpos++;

if(b->readpos>=BUFFER_SIZE)b->readpos=0;

/*设置缓冲区非满信号*/

pthread_cond_signal(&b->notfull);

pthread_mutex_unlock(&b->lock);

returndata;

}

/*--------------------------------------------------------*/

#defineOVER(-1)

structprodconsbuffer;

/*--------------------------------------------------------*/

void*producer(void*data)

{

intn;

for(n=0;n<1000;n++){

printf("put-->%d\n",n);

put(&buffer,n);

}

put(&buffer,OVER);

printf("producerstopped!

\n");

returnNULL;

}

/*--------------------------------------------------------*/

void*consumer(void*data)

{

intd;

while

(1){

d=get(&buffer);

if(d==OVER)break;

printf("%d-->get\n",d);

}

printf("consumerstopped!

\n");

returnNULL;

}

/*--------------------------------------------------------*/

intmain(void)

{

pthread_tth_a,th_b;

void*retval;

init(&buffer);

pthread_create(&th_a,NULL,producer,0);

pthread_create(&th_b,NULL,consumer,0);

/*等待生产者和消费者结束*/

pthread_join(th_a,&retval);

pthread_join(th_b,&retval);

return0;

}

3.主要函数分析:

下面我们来看一下,生产者写入缓冲区和消费者从缓冲区读数的具体流程,生产者首先要获得互斥锁,并且判断写指针+1后是否等于读指针,如果相等则进入等待状态,等候条件变量notfull;如果不等则向缓冲区中写一个整数,并且设置条件变量为notempty,最后释放互斥锁。

消费者线程与生产者线程类似,这里就不再过多介绍了。

流程图如下:

4.实验步骤

1、阅读源代及编译应用程序

进入exp/basic/02_pthread目录,使用vi编辑器或其他编辑器阅读理解源代码。

运行make

产生pthread可执行文件。

2、下载和调试

切换到minicom终端窗口,使用NFSmount开发主机的/arm2410cl到/host目录。

注:

/host在ARM端如果不存在,请选择/mnt/nfs目录挂载

进入/host/exp/basic/pthread目录,运行pthread,观察运行结果的正确性。

运行程序最后一部分结果如下:

waitfornotempty

put-->994

put-->995

put-->996

put-->997

put-->998

put-->999

producerstopped!

993-->get

994-->get

995-->get

996-->get

997-->get

998-->get

999-->get

consumerstopped!

[/host/exp/basic/02_pthread]

五、思考题

1.加入一个新的线程用于处理键盘的输入,并在按键为ESC时终止所有线程。

2.线程的优先级的控制。

六、预习要求

C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。

 

实验四嵌入式WEB服务器设计

一、实验目的

掌握在ARM开发板实现一个简单WEB服务器的过程。

学习在ARM开发板上的SOCKET网络编程。

学习Linux下的signal()函数的使用。

二、实验原理

C语言的基础知识、程序调试的基础知识和方法,Linux环境下常用命令和Vi编辑

器的操作。

HTTP1.0协议的基本知识。

SOCKET编程的几个基本函数的使用方法。

三、实验仪器及器件

硬件:

UP-NETARM2410-S嵌入式实验平台、PC机。

软件:

PC机操作系统Fedor

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

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

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