《嵌入式系统应用与开发》实验教学大纲
课程名称:
| 嵌入式系统应用与开发
|
|
|
课程编号:
| 420308
|
|
|
适用专业:
| 网络工程
|
|
|
总 学 分:
| 3
|
|
|
总 学 时:
| 54
|
|
|
其中实验学时
| 12
|
|
|
一、实验性质、目的与任务
《嵌入式系统应用与开发》课程是嵌入式方向和物联网方向的方向课。该课程主要讲述嵌入式系统应用程序开发方法与技巧,主要内容包括嵌入式应用程序开发基础、嵌入式应用程序开发环境的搭建、文件I/O编程、进程控制开发、进程间通信开发、多线程编程及网络编程等方法与技巧。通过本实验课程,应达到以下几个教学目的:
(1)掌握嵌入式系统应用程序开发编程基础,包括能熟练掌握vi、gcc、gdb、makefile等开发工具的使用,能掌握linux操作系统常用的基本命令的使用。
(2)掌握linux操作系统下,文件I/O编程方法和技巧,能熟练使用ANSIC标准和POSIX标准C库I/O函数对文件进行操作。
(3)掌握linux下进程控制编程方法和技巧。能熟练掌握进程的创建、进程的等待、多进程、守护进程的编程方法和技巧。
(4)掌握linux下进程通信编程的方法和技巧。熟练掌握管道通信、消息队列、共享内存,信号及信号量等通信机制的原理和编程方法。
(5)掌握linux下线程编程的方法和技巧。
(6)掌握linux下网络编程的方法和技巧,能够使用socket通信原理编写TCP程序。
二、教学基本要求:
通过本课程的学习,使学生能掌握嵌入式应用程序开发的环境搭建过程;能熟练掌握嵌入式应用程序开发的方法和技巧,为嵌入式产品的应用程序开发打下坚实的基础。
上机实验要求:
(1)上机前,准备好上机所需的程序;
(2)上机时,输入和调试自己所编写的程序;
(3)上机结束后,应整理出实验报告,实验报告应包括以下内容:实验项目名称;程序清单;运行结果;对运行情况所作的分析以及本次调试程序所取得的经验,如果程序未能通过,应分析其原因。
三、实验项目与类型:
序号
| 实验项目
| 学时
| 实验性质
| 备注
|
验证
| 综合
| 设计
| 研究
探索
| 必做
| 选做
|
1
| 文件底层编程综合-文件拷贝
| 2
|
| √
|
|
| √
|
|
2
| fork和vfork创建子进程
| 1
| √
|
|
|
|
| √
|
3
| Exec函数族
| 1
| √
|
|
|
|
| √
|
4
| 进程等待函数wait和waitpid
| 2
| √
|
|
|
|
| √
|
5
| 编写多进程程序
| 2
|
| √
|
|
| √
|
|
6
| 编写守护进程
| 1
|
| √
|
|
|
| √
|
7
| 无名管道通信实验
| 1
|
| √
|
|
|
| √
|
8
| 有名管道通信实验
| 1
|
| √
|
|
|
| √
|
9
| 信号处理
| 2
|
| √
|
|
|
| √
|
10
| 共享内存
| 2
|
| √
|
|
| √
|
|
11
| 消息队列
| 2
|
| √
|
|
|
| √
|
12
| 线程创建
| 2
| √
|
|
|
| √
|
|
13
| TCP程序设计
| 2
|
| √
|
|
| √
|
|
14
| UDP程序设计
|
|
| √
|
|
|
| √
|
15
| 并发服务器设计
|
|
|
| √
|
|
| √
|
四、实验教学内容及学时分配:
实验1文件底层编程综合-文件拷贝
1、实验目的
学会使用C库函数和linux系统调用,并理解它们的区别。
2、方法原理
Linux系统调用,底层I/O函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
使用linux操作系统下的系统调用I/O函数实现文件copy的功能
(如:./copy_file txt.text tt.txt text.txt为源文件,tt.txt为目标文件)。
实验2 fork和vfork创建子进程
1、实验目的
学会linux系统调用fork和vfork函数的使用,并理解与vfork这间的区别。
2、方法原理
linux系统调用fork和vfork函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
分别使用fork和vfork函数编写应用程序,在程序中创建一子进程,分别在父进程和子进程中打印进程ID,观察理解父子进程的运行顺序。
实验3 exec函数族
1、实验目的
学会使用exec函数族,并理解各exec函数的使用区别。
2、方法原理
exec函数族。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
编写一应用程序,在程序中创建一子进程,子进程调用exec函数实现在当前目录创建一新文件。
实验4 进程等待函数wait和waitpid
1、实验目的
学会使用linux系统调用进程等待wait和waitpid函数。
2、方法原理
wait和waitpid函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
编写一应用程序,在程序中创建一子进程,子进程睡眠1秒,父进程等待子进程退出,并提示打印子进程退出信息,父进程退出。
实验5 编写多进程程序
1、实验目的
学会编写多进程程序。
2、方法原理
fork、wait、exit和wait或waitpid函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
编写多进程程序(头文件声明可省略):有3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls -l”指令,另一个子进程在暂停5s之后异常退出,父进程先用阻塞方式等待第一个子进程的结束,然后用非阻塞方式等待另一个子进程的退出。
实验6 编写守护进程
1、实验目的
学会编写守护进程,掌握守护进程编写过程。
2、方法原理
守护进程。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
建立起一个守护进程,然后在该守护进程中新建一个子进程,该子进程暂停10s,然后自动退出,并由守护进程收集子进程退出的消息。在这里,子进程和守护进程的退出消息都在系统日志文件(例如“/var/log/messages”)中输出。子进程退出后,守护进程循环暂停,其间隔时间为10s。
实验7 无名管道通信实验
1、实验目的
学会进程间通信---无名管道的使用,理解无名管道通信原理。
2、方法原理
无名管道通信,pipe函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
建立一管道通信程序,实现父子进程间的通信。要求:父进程从键盘输入内容写入管道,子进程从管道中读出并打印到屏幕。
实验8 有名管道通信
1、实验目的
学会进程间通信---有名管道的使用,理解有名管道通信原理。
2、方法原理
有名管道通信,mkfifo函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
启动A进程,创建一有名管道,并向其写入一些数据,启动B进程,从A创建的有名管道中读出数据。
实验9 信号处理
1、实验目的
学会使用自定义信号处理函数,处理信号,理解信号处理原理。
2、方法原理
信号通信,signal、pause函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
在进程中用SIGBUS注册处理函数,并向该进程发送SIGBUS信号。
实验10 共享内存
1、实验目的
学会使用共享内存进程间通信方式,理解共享内存通信原理。
2、方法原理
共享内存通信,shmget、shmat、shmdt和shmctl函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
使用共享内存进行两个进程(发送端和接收端)之间的通信,包括共享内存的打开或创建、共享内存映射和删除等多种操作(用“WROTE”字符串作为标志以实现同步)。发送端进程循环写直到写入有效数据“quit”和接收端进程循环读直到读到有效数据“quit”。
实验11 消息队列
1、实验目的
学会使用消息队列进程间通信方式,理解共享内存通信原理。
2、方法原理
消息队列通信,msgget、msgrcv、msgsend和msgctl函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
使用消息队列进行两个进程(发送端和接收端)之间的通信,发送端进程循环写直到写入有效数据“quit”和接收端进程循环读直到读到有效数据“quit”。
实验12 线程创建
1、实验目的
学会使用线程并使用。
2、方法原理
线程,pthread_create和pthread_join函数。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
编写一应用程序,在程序中创建一线程,并向该线程处理函数传递以结构体。
实验13 TCP程序设计
1、实验目的
学会使用linux的socket套接字网络编程,熟悉使用TCP传输协议的网络编程流程。
2、方法原理
socket套接字网络编程。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
编写一使用TCP协议的服务器程序和客户端程序,客户端向服务器发送字符串,服务器打印收到的字符串。
实验14 UDP程序设计
1、实验目的
学会使用linux的socket套接字网络编程,熟悉使用UDP传输协议的网络编程流程。
2、方法原理
socket套接字网络编程。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
编写一使用UDP协议的服务器程序和客户端程序,客户端向服务器发送字符串,服务器打印收到的字符串。
实验15 并发服务器设计
1、实验目的
学会多线程或多进程编程结合网络编程的综合运用,实现能同时接受多客户端连接的服务器程序。
2、方法原理
多线程或多进程,socket套接字网络编程。
3、主要实验仪器及材料
pc一台,windows xp操作系统,安装虚拟机linux操作系统;
4、实验内容
编写一使用TCP协议的并发服务器程序和客户端程序,每客户端向服务器发送字符串,服务器打印收到每客户端的字符串。
[2]《嵌入式Linux应用程序开发标准教程(第2版)》.华清远见嵌入式培训中心.人民邮电出版社,2009.