嵌入式系统的基本概念。P94-P95 Linux文件类型和文件属性。P7-P9 Linux的常用命令。P13-P42
Gcc的编译流程;静态库与动态库的差异;arm-linux-gcc;P60-P65 Make简单用法;P76-P77
文件描述符的概念;P153-P154。文件操作程序。P157 I/O复用模型;P163
Linux进程的概念和状态;P204-P205
Linux进程的创建与退出,fork exit。P206 Linux进程间通信的方式:管道(P234)、FIFO(P239)、信号(P243)、信号量(P254)、共享内存(P260)、消息队列(266) Socket(P307);tcp和udp程序流程及程序P313 NFS环境搭建步骤。 交叉编译。P110-P111
选择题30分 填空题 15分 简答题35分 程序题20分
一、选择题
1.删除文件命令为( D )
A. mkdir B. rmdir C. mv D. rm
2.某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为( D )
A.467 B.674 C.476 D.764
3.一般可以用( A )实现自动编译。 A. gcc B. gdb C. make D. vi
4.如果要列出一个目录下的所有文件需要使用命令行( C )。 A. ls –l B. ls C. ls –a D. ls –d
5.修改IP地址的命令为( B )。
A.ping B.ifconfig C.arp D.traceroute
6. 对文件进行归档的命令为()
A.gzip B.tar C.dump D.dd
7.NFS是( C )系统
A.文件 B 磁盘 C.网络文件 D.操作
8.LINUX支持网络文件系统NFS,下列哪个命令实现了将位于 192.168.1.4机器上的 /opt/sirnfs 目录挂载到本机/mnt/sirnfs下:( A ) A.mount -t nfs 192.168.1.4:/opt/sirnfs /mnt/sirnfs B.mount -t nfs /mnt/sirnfs 192.168.1.4:/opt/sirnfs C.mount nfs –t 192.168.1.4:/opt/sirnfs /mnt/sirnfs D.mount nfs –t /mnt/sirnfs 192.168.1.4:/opt/sirnfs
9. 在某嵌入式操作系统中,若P、V操作的信号量S的初值为2,当前值为-1,则表示等待信号量S的任务个数为()。
A. 0 B. 1 C. 2 D. 3
10.在Linux系统中运行下面程序,最多可产生多少个进程( C ). main()
{
fork(); fork(); fork(); }
A. 3 B. 5 C.7 D. 9
二、填空题
1交叉编译环境是指交叉编译器 。
2. 嵌入式系统的定义是用来控制或者监视机器、装置、工厂等各种规模系统的设备(指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用机系统。) 3. gcc的编译流程分为预处理、编译、汇编和链接。
4.某文件的权限位:d-rw-r--r--,用数值形式表示该权限,则该八进制数为 744 ,该文件属性是读写只读只读。
5. linux进程定义是进程是一个程序的一次执行的过程,是资源分配的最小单元。
三、简答题
1. NFS环境搭建过程。
2. 编写和编译在PC linux和ARM linux运行的Hello程序。功能在linux终端输出字符串“Hello,embeded world!”,编写main函数即可,并写出相应的编译命令。
3. 简述嵌入式Linux中I/O处理的五种模型。
4. 简述静态库与动态库的概念及差异。
5. 阅读下面Makefile文件,回答下面三个问题。
(1) 终端输入make all ,执行后会产生哪些可执行文件?
(2) ①和③语句作用?所生成二进制文件分别在哪些平台运行? (3) 终端输入make clean,会删除哪些文件?
EXEC1 = server EXEC2 = client OBJS1 = server.o OBJS2 = client.o HEADERS =
HOST_CC = gcc
TARGET_CC = arm-linux-gcc INC =
CFLAGS = ${INC} -g
all:${EXEC1} ${EXEC2} ${EXEC1} : ${OBJS1}
${EXEC2} : ${OBJS2}
${OBJS2}: client.c ${HEADERS}
${TARGET_CC} ${CFLAGS} ${LDFLAGS} -o ${EXEC2} ${OBJS2} -----------------③ ${HOST_CC} ${CFLAGS} ${LDFLAGS} -o ${EXEC1} ${OBJS1} -----------------① ${HOST_CC} ${CFLAGS} ${LDFLAGS} -c server.c -o ${OBJS1}-----------------② ${OBJS1}: server.c ${HEADERS}
${TARGET_CC} ${CFLAGS} ${LDFLAGS} -c client.c -o ${OBJS2} -----------------④
.PHONY : clean clean :
-rm -f ${OBJS1} ${EXEC1} -rm -f ${OBJS2} ${EXEC2}
四、程序题(20分,每题10分)
1. 阅读下面基于ARM Linux平台一个串口接收数据保存程序,填写程序所缺语句。
① ② ③ {
intfd; intdatafile_fd;
char buff[BUFFER_SIZE];
if((fd = open_port(TARGET_COM_PORT)) < 0)//打开串口 { }
if(set_com_config(fd, 115200, 8, 'N', 1) < 0) { }
①//打开创建comdata.dat文件 { } intlen; while(1) {
memset(buff, 0, BUFFER_SIZE); ② //读取串口数据 if (len> 0) {
printf(\perror(\return 1;
perror(\return 1;
perror(\return 1;
int main(void)
}
}
}
③ //将数据写入到comdata.dat文件
close(fd); close(datafile_fd); return 0;
2. 阅读下面基于ARM Linux平台的网络数据发送的程序。该程序的功能是通过10位ADC(模数转换)采集电压数据,当采集了50次数据(一次数据为2个字节存储)再通过TCP发送数据到远程PC。画出程序流程图,填写程序所缺语句。ADC设备文件为\。远程PC的IP地址为192.168.1.105。 (1)画出程序流程图 (2)填写程序所缺语句
① ②
#define PORT 4321 //端口程序 #define BUFFER_SIZE 1024
intadc_fd;
intGetADC(intadcfd);
char *ipAddrStr=\
int main(intargc, char *argv[]) {
if (adc_fd< 0) { }
/*地址解析函数*/
perror(\return 1; ①//打开ADC设备文件 intsockfd, sendbytes; charbuf[BUFFER_SIZE]; structhostent *host; structsockaddr_inserv_addr; intwrBuf[50];//数据缓冲区 intsendPacketNum=0;