linux下Led的设备驱动程序实验总结,第6章Linux驱动程序实验.ppt

本文介绍如何在Linux环境下动态加载和卸载驱动模块。通过实验掌握动态加载模块的方法,包括编写LED驱动程序并将其作为模块加载到内核的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

62e50291a81fc54b507f33cb80033297.gif 第6章Linux驱动程序实验.ppt

(12页)

37ee2277e66ff94ac564878ac2b08a00.gif

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

9.9 积分

第6章Linux 驱动程序实验-2---动态加载模块实验动态加载模块实验 【实验目的】 通过实验掌握在文件系统中增加应用程序【实验设备】 硬件:EDUKIT---III实验平台,S3C2410核心子板,Embest JTAG仿真 器套件,PC机。 软件:Embest IDE集成开发环境,Cygwin Unix模拟平台,arm-linux-gcc编译工具链,Windows XP操作系统,Embest Online Flash Programmer for ARM编程器。【实验内容】学习和掌握 Linux 下的应用程序开发的基本步骤,编写应用程序,实现一个简单的程序,将其添加到文件系统中。动态加载模块实验 【实验原理】1. Linux 操作系统内核操作系统的内核通常有两种形式,即微内核和单一内核。如果操作系统是微内核结构的,则内核中所有功能部件都被拆成独立部分,而这些部分之间需要通过严格的通讯机制来进行联系。通过配置进程将新部件加入内核的方式比较耗时。Linux操作系统的内核则是另一种称为 Monolithic 的内核,即单一大程序内核。这种操作系统内核的所有功能部件,都可以对其全部内部数据结构和实例进行访问。Linux 可以随意动态的加载与卸载操作系统部件,我们可以在系统启动后的任何时候把驱动模块动态加入内核的代码中,而当我们不再需要某个模块时又可以将它从内核中卸载和删除,这就是动态模块加载。在 Linux 操作系统中,这样的模块多指设备驱动、伪设备驱动,如网络设备和文件系统,Linux 模块一旦被加载,则它和普通核心代码一样都是内核的一部分,具有与其他核心代码相同的权限与职责,使用核心内存空间和系统中断。动态可加载代码的好处在于可以让内核保持很小尺寸,且非常灵活。动态加载模块实验1. Linux 操作系统内核模块动态加载可以让我们在加入新模块代码时无需重构新内核,并频繁重新启动来尝试新内核代码的运行。比如我们想为一个 5x4 IIC 接口的矩阵键盘配置 IIC 驱动,而内核中没有包含 IIC 接口驱动程序,我们只需要动态加入 IIC 接口代码模块来重构建新内核。使用动态模块加载很自由,但是也有可能同时带来与核心模块相关的性能与内存损失。可加载模块的代码一般有些很长,并且额外的数据结构可能会占据一些内存,同时对内核资源的间接使用也可能带来一些效率问题;另外动态加入的 Linux 模块也可以象所有核心代码和设备驱动一样使内核崩溃。Linux 系统一般提供 insmod(模块加载)和 rmmod(卸载模块)两个模块显式操作命令;同时Linux 内核自身也可以请求内核后台进程 kerneld 来加载与卸载模块。动态加载模块实验2. 编写 Linux 系统中模块代码与应用程序编译及使用一样,Linux 设备模块除了编写必要的源代码程序外,同时也需要编写工程管理 Makefile 文件,接下来我们将把前面介绍的“字符设备 LED 驱动程序”中使用的 LED 驱动程序,编译为一个模块文件,并插入到内核中运行。作为动态插入的模块程序中,至少包含 init_module()和 cleanup_module()函数,或者使用关键字__init 和__exit 声明模块函数,并使用 module_init(init_mod_func)和 module_exit(cleanup_mod_func)指出模块加载和卸载函数 详细编写 Linux 系统中模块代码,见书P209.动态加载模块实验【实验步骤】1. 准备实验环境使用 EduKit2410 目标板附带的串口线连接目标板上 UART0 和 PC 机串口 COM1. 使用 EduKit2410 目标板附带的交叉网线连接目标板 NET1 和 PC 机网络接口。2. 串口/网络设置在 PC 机上运行 Windows 附件中自带的超级终端串口通信程序(波特率 115200、1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。运行 TFTP 服务器程序 tftpd32.exe,进行各种工作状态、权限以及本地 tftp 工作目录的设置,默认状态下可以直接进行工作,本地 tftp 工作目录即当前目录。可通过点击 Settings 按钮修改主目录 (这里设为/home/app)动态加载模块实验3. 实验操作过程1)在 PC 主机上新建文件夹$WORKDIR/drivers/0703-dynamic-mod/,作为模块程序存放位置,并拷贝前面编写的 led-edukit-s3c2410.c 及其工程管理文件 Makefile 到此文件夹 2)编译设备模块程序,并拷贝到调试目录/home/app:3)在实验板上加载设备模块成功编译字符设备 LED 驱动程序后,通过 tftp 方式下载到开发板 Linux 系统/var 目录,并使用 insmod 命令加载。4. 观察实验结果模块被成功加载后可以看到类似以下信息输出,并可以使用标准文件操作使用设备文件/dev/led/0。在 PC 主机上新建文件夹$WORKDIR/drivers/0703-dynamic-mod/作为模块程序存放位置,并拷贝前面编写的 led-edukit-s3c2410.c 及其工程管理文件 Makefile 到此文件夹编译设备模块程序,并拷贝到调试目录/home/app成功编译字符设备 LED 驱动程序后,通过 tftp 方式下载到开发板 Linux 系统/var 目录,并使用 insmod 命令加载,下载LED测试程序,到目标板 Linux/var 目录下执行设备模块的卸载实训题1.编写LED字符设备驱动程序,添加 LED 相关程序到linux内核,修改有关文件,然后进行配置,编译,生成压缩的内核映像文件zimage,烧写到flash中. 重新启动目标板(注意,vivi一定要先烧好在1—5扇区,linux在6-17扇区, cramfs 文件系统在18---35扇区),运行led设备驱动测试程序.2.按老师所讲实验过程和步骤, 根据PPT,完成动态加载模块实验3.按实验报告格式要求,写出实验报告. 关 键 词: 驱动程序 实验 linux

524d6daf746efaa52c3c71bbfe7ba172.gif  天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值