《嵌入式设备驱动技术》课程实验报告班级:学号: (需要填写)姓名: (需要填写)指导老师:成绩:实验六Linux 设备驱动中的阻塞与非阻塞I/O 一、目的与任务目的:了解 Linux 设备驱动中的阻塞与非阻塞I/O。任务:支持轮询操作后的globalmem 模块的编程、编译与测试。二、内容、要求与安排方式1、实验内容与要求:1.直接在内核中添加代码。2.了解 Linux 内核模块的加载和卸载;3.用 open、close 等函数编程。4.字符设备驱动程序的注册与注销。5.实现 globalmem(vser)的常用操作方法。6.原子操作、自旋锁、信号量、互斥体机制。7.在原 globalmem 程序的基础上,添加与阻塞与非阻塞I/O 相关的代码。2、实验安排方式:采用1 人 1 组,上机在 Linux 系统下进行编程实验。三、实验设备1、所用设备: PC 机一台四、实验过程1.直接在内核中添加代码。1:文件准备1.1、将编写好的源代码复制到linux 内核源代码相应的目录中。1.2、在该目录中的 Kconfig 文件中增加新源代码对应的编译配置选项1.3、在该目录中的 Makefile 文件中添加信代码的编译语句2、在 linux 内核 drivers/目录中增加目录和子目录2.1 目录结构test driver 放置在 drivers/test/ 目录下:2.2 配置文件1.drivers/test/Config.in 2. arch/arm/config.in 在文件的最后加入: source drivers/test/Config.in,将 TEST Driver 子功能的配置纳入到 Linux 内核的配置中。2.3 创建 Makefile 1. drivers/test/Makefile 2.drivers/test/cpu/Makefile 3.drivers/Makefile 在 drivers/Makefile 中加入 subdir-$(CONFIG_TEST)+= test,使得在用户选择 TEST Driver 功能后,内核编译时能够进入test 目录。4.Makefile 2.了解 Linux 内核模块的加载和卸载;内核模块模块是可以根据实际需要可以动态加载和卸载到内核中的代码。它们扩展了内核的功能,而无需重启系统,就可以进行模块加载,并工作。编写 hello.c makefile 模块编译将 hello.c 和 Makefile 放在同一路径下进行编译,编译成功,会在当前路径下生成 hello.ko 模块加载加载 hello.ko 模块到内核中模块加载成功,查看模块成功加载会显示以下结果并且可以查看内核打印的消息模块卸载成功卸载 hello 模块后,可以查看内核是否正常打印出我们预设在程序的打印信息。可以看到终端上显示module exit success,说明通过rmmod 成功卸载 hello.ko 通过 lsmod 去...