Linux平台驱动试卷 (答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南科技学院二○ 一四 年 下 学期期末考试

电信、电科 专业 2011 年级 Linux 平台驱动 试题

考试类型:闭卷 试卷类型: A 卷 考试时量: 120 分钟

一、选择题(每题3分,共30分)

1) 嵌入式系统,是以(B )为中心,以计算机为基础,并且软硬件可定制,适用于各种应用场合,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统

A.Linux

B.应用

C.数据处理

D.产品 2) 嵌入式系统的四大组成部分,分别是:嵌入式微处理器、外围硬件设备、( D )、用户应用程序

A.嵌入式底层驱动

B.嵌入式系统调用

C.嵌入式根文件系统

D.嵌入式操作系统

3) 目前人们所指的嵌入式微处理器一般是指( D )位

A.4bit

B.8bit

C.16bit

D.32bit

4) Linux 系统中,内核以(D )区分设备。

A.设备节点名

B :设备设备节点号 C.设备名称 D 。设备号 5) 对交叉编译描述正确的是(B )

A.在同一平台完成编译和运行

B.在一种平台上能编译出不同平台上运行的程序

C.使用同一交叉编译器编译出来的可执行文件是跨平台运行的

D.动态库是跨平台的,不需要交叉编译

6) s5pv210上电首先执行的代码来自于那里 ( A)

A.iROM

B.iRAM

C.NAND flash

D.SD卡

7)将C源程序编译成目标文件(*.o),而不进行链接的编译选项是(D)

A.-o

B.-E -o

C.-S -o

D.-c -o

8)通常情况下,kmalloc函数能分配的最大内存是(C)

A.4K

B.64K

C.128K

D.4M

9)Linux系统启动后,一般将设备文件放在以下那个目录( B)

A . /etc

B . /dev C. /sys D. /var

10)对于嵌入式C程序描述正确的是?(C )

A. 必须以_start作为程序入口

B. 必须以main函数作为程序入口

C. 必须设置堆栈

D. 裸机可执行程序是ELF格式的

二、填空题(本题共5小题,每空1分共10分)

1)Linux系统驱动设备分为字符设备、块设备和网络设备三大类。

2)嵌入式BootLoader的开发建立,依赖CPU体系结构、微处理器芯片、开发

板外设和内核镜像格式

3)u-boot传递给内核的参数“root=/dev/mtdblock4 rootfstype=yaffs2 init=/linuxrc console=ttySAC0”的意义是root指的是文件系统在内核中的位置、rootfstype指的是根文件系统的类型、init指的是内核启动后的第一个用户程序、console指定打印信息采用那一个串口作为控制台

三:问答题(本题共4小题,每题8分共32分)

1、简述把一个驱动模块编译到Linux内核中基本步骤。

1)将该驱动源文件拷贝到driver的某个合适的目录下

2)修改Makefile文件

3)修改当前目录下的Kconfig文件以加入配置菜单

4)最后配置编译内核

2、导致内核并发的原因有哪些?有哪些机制能避免?

1)原因:中断,进程的抢占和多处理器。

2)原子变量:共享资源恰巧是一个简单的整数值时使用

信号量:大部分情况都能使用,通过pv操作控制信号量。

互斥体:是对信号量的简化。

自旋锁:多用在单或多处理器抢占式内核,对于非抢占式内核退化为空操作

3、简述中断处理的两个部分,内核中实现中断底半部的机制有哪些?

1)中断顶半部:处理紧急的硬件操作(大家熟知的中断服务函数)。

中断底半部:处理不紧急的耗时操作,执行过程中中断是使能的,可被打断。

2)软中断、微线程和工作队列

4、简述bootloader的启动过程。

第一阶段完成任务:

1、禁用看门狗、初始化系统时钟

2、设置异常向量表(用到中断的情况下设置)

3、动态内存控制器初始化配置

4、初始化调试指示灯(可选)

5、初始化UART,用于开发调试(可选)

6、从NAND、NOR或SD卡中复制代码到SDRAM

7、跳转到start_armboot,进入Bootloader第二阶段

第二阶段完成任务:

1、初始化GPIO

2、初始化flash等存储设备

3、MMU初始化

4、堆初始化

5、MTD设备初始化

6、各类通信设备相关驱动初始化

7、环境变量和参数的加载及初始化

8、倒计时监听串口(进入命令模式或启动内核)

9、启动内核(拷贝内核镜像并跳转到内核入口)

四:编程题(共二小题,第一题12分,二题16分共28分)

1、Linux系统中以模块方式组织设备驱动程序,请列举在一个模块程序中必不可少的组成部部分。

#include

#include

#include

MODULE_LICENSE(“GPL”);

static int __init demo_init(void)

{

printk(“module init!\n”);

return 0;

}

static void __init demo_exit(void)

{

printk(“module exit\n”);

}

module_inti(demo_init);

module_exit(demo_exit);

相关文档
最新文档