实验七设备驱动程序.docx

上传人:牧羊曲112 文档编号:3436103 上传时间:2023-03-13 格式:DOCX 页数:5 大小:38.43KB
返回 下载 相关 举报
实验七设备驱动程序.docx_第1页
第1页 / 共5页
实验七设备驱动程序.docx_第2页
第2页 / 共5页
实验七设备驱动程序.docx_第3页
第3页 / 共5页
实验七设备驱动程序.docx_第4页
第4页 / 共5页
实验七设备驱动程序.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验七设备驱动程序.docx》由会员分享,可在线阅读,更多相关《实验七设备驱动程序.docx(5页珍藏版)》请在三一办公上搜索。

1、实验七设备驱动程序上海应用技术学院 程序设计语言实验报告 实验名称 设备驱动程序 实验序号 实验七 实验日期 姓 名 学 号 指导教师 专 业 计算机科学与技术 一、实验目的及要求 班 级 成 绩 调试EOS串口驱动程序向串口发送数据的功能,了解设备驱动程序工作原理。 为EOS串口驱动程序添加从串口接收数据的功能,进一步加深对设备驱动程序工作原理的理解。 二、实验环境 Windows XP;Tevation OS Lab。 三、实验内容 1 准备实验 按照下面的步骤准备实验: 1. 启动OS Lab。 2. 新建一个EOS Kernel项目如图1。 图1 3. 在“项目管理器”窗口中双击Flo

2、ppy.img文件,使用FloppyImageEditor工具打开此软盘镜像。 4. 将本实验文件夹中的serial.exe文件添加到软盘镜像的根目录中,如图2。 5. 点击FloppyImageEditor工具栏上的保存按钮,关闭该工具。 图2 2 练习使用EOS应用程序向串口发送数据 1. 按F7生成EOS内核项目如图3。 图3 2. 按F5启动调试如图4。 图4 3. EOS启动成功后,在控制台中输入命令“serial”按回车,启动串口测试程序serial.exe。程序启动后会显示提示信息和准备向COM2发送数据的提示符“”,如图5。 图5 由于虚拟机上的COM2和主机上的COM7已经建

3、立了连接,所以在向虚拟机的COM2发送数据之前,要先启动主机上的“Terminal”工具,准备从COM7接收数据: 1. 在OS Lab的“工具”菜单中选择“Terminal”,启动“Terminal”工具。 2. 在“连接到”对话框中选择COM7,点击“确定”按钮,如图7。 图7 3. 在“属性”对话框中点击“确定”按钮,使用默认设置。接下来就会显示Terminal的输入输出窗口,用于显示从COM7接收到的数据和向COM7发送的数据。 4. 此时激活虚拟机窗口,在EOS控制台中输入任意字符串并按回车后,Terminal会接收到由serial.exe发送到串口COM2的内容。例如在serial

4、中输入“hello”后按回车,Terminal会接收到并显示“hello” 如图8-9。 图8 图9 5.Serial.exe将输入内容发送到COM2后,会立刻调用API函数ReadFile从COM2读取数据。由于当前EOS的串口驱动程序尚未实现从串口读取数据的功能,所以ReadFile返回了错误,serial.exe就退出了。 6.结束此次调试。关闭Terminal工具。 3调试EOS串口驱动程序向串口发送数据的功能 按照下面的步骤进行调试: 1. 在OS Lab“项目管理器”窗口中打开串口驱动程序源文件io/driver/serial.c。在函数SrlWrite的第一行和最后一行分别添加一

5、个断点;在函数SrlIsr的第一行添加一个断点;在函数SrlRead唯一的一条返回语句所在行添加一个断点,如图10-11。 图10 图11 2. 按F5启动调试,如图12。 图12 3. 在内核初始化过程中,初始化8250控制器时会触发一个8250中断,并命中SrlIsr中设置的断点,按F5让EOS继续执行忽略此次中断。 4. 激活虚拟机窗口,在EOS控制台中输入命令“serial”按回车如图13。 图13 5. 在OS Lab的“工具”菜单中选择“Terminal”工具,并按3.2节中的方法打开串口COM7并进入工具的输入输出窗口,如图14。 图14 6. 在EOS控制台中输入“12345”

6、共5个字符后按回车,如图15。 图15 7. 在向串口发送数据时,serial应用程序调用了EOS的API函数WriteFile,而WriteFile最终调用了串口驱动程序的SrlWrite函数,所以会命中设置在SrlWrite函数第一行的断点。打开“调用堆栈”窗口验证函数调用的层次。 8. 将鼠标指针移动到SrlWrite函数参数Request上,可以查看其值为6。 9. 说明要发送包括“12345”和字符串结束符“0”在内的6个字符。如图16。 图16 10.对照SrlWrite的流程图,按F10单步跟踪该函数的执行过程。当变量Data被赋值后,查看变量的值为0x31。当执行语句: WRI

7、TE_PORT_UCHAR(REG_PORT(DeviceObject, THR), Data); 后,将会命中设置在SrlIsr中的断点,开始调试中断处理程序。激活Terminal工具窗口,可以看到已经接收到字符“1”。如图17-18。 图17 图18 4为EOS串口驱动程序添加从串口接收数据的功能 1. EOS内核项目代码修改完毕后,按F7生成项目。 2. 按F5启动调试。 3. 按照之前练习的方法启动serial.exe和Terminal工具。 4. 在EOS控制台输入字符串并发送到Terminal工具后,从Terminal工具输入字符串应该可以再发送到EOS控制台,并可以交替的进行输入输出。如图19-20: 图19 图20 四、实验结果与分析 1实验中遇到的问题: 在练习使用EOS应用程序向串口发送数据时错误的以为是在Terminal窗口中键入“hello”,导致与实验内容不否的结果 2解决方案: 重启Terminal工具,再次实验。最终在serial中输入“hello”后按回车,Terminal会接收到并显示“hello” 如图21-22。 图21 图22

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号