- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验七-设备驱动程序教程
上海应用技术学院 程序设计语言实验报告 实验名称设备驱动程序实验序号实验七实验日期姓 名学 号指导教师专 业计算机科学与技术班 级 成 绩实验目的及要求 调试EOS串口驱动程序向串口发送数据的功能,了解设备驱动程序工作原理。 为EOS串口驱动程序添加从串口接收数据的功能,进一步加深对设备驱动程序工作原理的理解。 实验环境 Windows XP;Tevation OS Lab。三、实验内容 1 准备实验 按照下面的步骤准备实验: 启动OS Lab。 新建一个EOS Kernel项目如图1。 图1 在“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor工具打开此软盘镜像。 将本实验文件夹中的serial.exe文件添加到软盘镜像的根目录中,如图2。 点击FloppyImageEditor工具栏上的保存按钮,关闭该工具。 图2 2 练习使用EOS应用程序向串口发送数据 按F7生成EOS内核项目如图3。 图3 按F5启动调试如图4。 图4 EOS启动成功后,在控制台中输入命令“serial”按回车,启动串口测试程序serial.exe。程序启动后会显示提示信息和准备向COM2发送数据的提示符“”,如图5。 图5 由于虚拟机上的COM2和主机上的COM7已经建立了连接,所以在向虚拟机的COM2发送数据之前,要先启动主机上的“Terminal”工具,准备从COM7接收数据: 在OS Lab的“工具”菜单中选择“Terminal”,启动“Terminal”工具。 在“连接到”对话框中选择COM7,点击“确定”按钮,如图7。 图7 在“属性”对话框中点击“确定”按钮,使用默认设置。接下来就会显示Terminal的输入输出窗口,用于显示从COM7接收到的数据和向COM7发送的数据。 此时激活虚拟机窗口,在EOS控制台中输入任意字符串并按回车后,Terminal会接收到由serial.exe发送到串口COM2的内容。例如在serial中输入“hello”后按回车,Terminal会接收到并显示“hello” 如图8-9。 图8 图9 Serial.exe将输入内容发送到COM2后,会立刻调用API函数ReadFile从COM2读取数据。由于当前EOS的串口驱动程序尚未实现从串口读取数据的功能,所以ReadFile返回了错误,serial.exe就退出了。 6.结束此次调试。关闭Terminal工具。 3调试EOS串口驱动程序向串口发送数据的功能 按照下面的步骤进行调试: 在OS Lab“项目管理器”窗口中打开串口驱动程序源文件io/driver/serial.c。在函数SrlWrite的第一行(310行)和最后一行(341行)分别添加一个断点;在函数SrlIsr的第一行(352行)添加一个断点;在函数SrlRead唯一的一条返回语句所在行(295行)添加一个断点,如图10-11。 图10 图11 按F5启动调试,如图12。 图12 在内核初始化过程中,初始化8250控制器时会触发一个8250中断,并命中SrlIsr中设置的断点,按F5让EOS继续执行忽略此次中断。 激活虚拟机窗口,在EOS控制台中输入命令“serial”按回车如图13。 图13 在OS Lab的“工具”菜单中选择“Terminal”工具,并按3.2节中的方法打开串口COM7并进入工具的输入输出窗口,如图14。 图14 在EOS控制台中输入“12345”共5个字符后按回车,如图15。 图15 在向串口发送数据时,serial应用程序调用了EOS的API函数WriteFile,而WriteFile最终调用了串口驱动程序的SrlWrite函数,所以会命中设置在SrlWrite函数第一行的断点。打开“调用堆栈”窗口验证函数调用的层次。 将鼠标指针移动到SrlWrite函数参数Request上,可以查看其值为6。 说明要发送包括“12345”和字符串结束符“\0”在内的6个字符。如图16。 图16 对照SrlWrite的流程图,按F10单步跟踪该函数的执行过程。当变量Data被赋值后,查看变量的值为0x31(字符“1”的ASCII代码)。当执行语句(第332行):WRITE_PORT_UCHAR(REG_PORT(DeviceObject, THR), Data);后,将会命中设置在SrlIsr中的断点,开始调试中断处理程序。激活Terminal工具窗口,可以看到已经接收到字符“1”。如图17-18。 图17 图18 4为EOS串口驱动程序添加从串口接收数据的功能 EOS内核项目代码修改完毕后,按F7生成项目。 按F5启动调试。 按照之前练习的方法启动ser
您可能关注的文档
最近下载
- 层析包括吸附层析分配层析离子交换层析亲和层析等 (2).pptx VIP
- 2019主持人大赛总决赛第三轮巅峰对决王嘉宁VS邹韵演讲稿.doc VIP
- 《房屋建筑学》第6章 建筑构造概论.ppt VIP
- 2025年河北省涿州三中学初三九月月考物理试题含解析.doc VIP
- 超星尔雅学习通《通识写作怎样进行学术表达(复旦大学)》章节测试答案.docx VIP
- C++龟兔赛跑代码.docx VIP
- 人教新版英语九年级Unit1-4试卷.doc VIP
- C++书写日历代码.docx VIP
- 食品仓储安全保障措施.docx VIP
- 辽宁省抚顺市新抚区2024-2025学年八年级上学期10月月考语文试题.docx VIP
文档评论(0)