实验报告
题目: 键盘驱动程序的分析与修改
班 级:
学 号:
姓 名:
学 院:
年 月 日
一、实验目的
1.理解 I/O 系统调用函数和 C 标准 I/O 函数的概念和区别;
2.建立内核空间 I/O 软件层次结构概念,即与设备无关的操作系统软件、设备驱动程序和中断服务程序;
3.了解 Linux-0.11 字符设备驱动程序及功能,初步理解控制台终端程序的工作原理;
4.通过阅读源代码,进一步提高 C 语言和汇编程序的编程技巧以及源代码分析能力;
5.锻炼和提高对复杂工程问题进行分析的能力,并根据需求进行设计和实现的能力。
二、 实验环境
1. 硬件:学生个人电脑(x86-64)
2. 软件:Windows 10,VMware Workstation 15 Player,32 位 Linux-Ubuntu 16.04.1
3. gcc-3.4 编译环境
4. GDB 调试工具
三、实验内容
从网盘下载 lab4.tar.gz 文件,解压后进入 lba4 目录得到如下文件和目录:
实验常用执行命令如下:
执行./run ,可启动 bochs 模拟器,进而加载执行 Linux-0.11 目录下的 Image 文件启动 linux-
0.11 操作系统
进入 lab4/linux-0.11 目录,执行 make 编译生成 Image 文件,每次重新编译(make)前需先执行
make clean
如果对 linux-0.11 目录下的某些源文件进行了修改,执行./run init 可把修改文件回复初始状
态
本实验包含 2 关,要求如下:
Phase 1
键入 F12,激活*功能,键入学生本人的姓名拼音,首尾字母等显示*
比如:zhangsan,显示为:*ha*gsa*
Phase 2
键入“学生本人的学号” :激活*功能,键入学生本人的姓名拼音,首尾字母等显示*
比如:zhangsan,显示为:*ha*gsa*,
键入“学生本人的学号-” :取消显示*功能
提示:完成本实验需要对 lab4/linux-0.11/kernel/chr_drv/目录下的 keyboard.s、console.c 和
tty_io.c 源文件进行分析,理解按下按键到回显到显示频上程序的执行过程,然后对涉及到的数据结构进
行分析,完成对前两个源程序的修改。修改方案有两种:
在 C 语言源程序层面进行修改
在汇编语言源程序层面进行修改
实验 4 的其他说明见 lab4.pdf 和 lab4 虚拟机环境安装说明.docx。linux 内核完全注释(高清版).pdf
一书中对源代码有详细的说明和注释。
三、 源代码的分析及修改
0、 准备工作:
按照 ppt 中的要求,安装 vm 虚拟机,安装 Ubuntu32 位 16.04,进 入 Ubuntu 安装
gcc-3.4。
解压 linux 内核,make clean 后,make 进入虚拟机试一下,完全正常。