网站大量收购闲置独家精品文档,联系QQ:2885784924

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

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章Linux驱动程序实验

第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/

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档