第5章嵌入式系统驱动程序开发1主要内容模块编程编译模块进内核嵌入式系统驱动程序概述嵌入式系统驱动程序结构LED灯驱动程序实例2模块编程内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(LoadableKernelModule,LKM)。Linux本身是一个单内核,单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。3模块编程模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。模块在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其它内核上层的功能。4将模块从内核中独立出来,不必预先绑在kernelcodes中。这样做有三种优点:1)将来修改内核时,不必全部重新编译,可节省不少时间;2)若需要安装新的模块,不必重新编译内核,只要插入(通过insmode指令)对应的模块即可;3)减少内核对系统资源的占用,内核可以集中精力做最基本的事情,把一些扩展功能都交由模块实现。:自动处理可载入模块。语法:modprobe[-acdlrtvV][--help][模块文件][符号名称=符号值]补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。7modprobe参数: -a或--all 载入全部的模块。 -c或--show-conf 显示所有模块的设置信息。 -d或--debug 使用排错模式。 -k或--autoclean指定模块设置为"自动清除"模式。 -l或--list 显示可用的模块。 -n或--show 仅仅显示要执行的操作,而不实际执行 -q或--quiet不显示错误信息。8modprobe参数: -r或--remove 模块闲置不用时,即自动卸载模块。 -s或--syslog//将结果记录到系统记录中。 -t或--type 指定模块类型。 -v或--verbose 执行时显示详细的信息。 -V或--version 显示版本信息。 -C或--configconfigfile指定配置文件,默认使用/etc/。 -h或-help 显示帮助。9insmod挂载模块insmod这个工具,和modprobe有点类似,但功能上没有modprobe强,modprobe在挂载模块是不用指定模块文件的路径,;而insmod需要的是模块的所在目录的绝对路径,并且一定要带有模块文件名后缀的()10
第5章 嵌入式系统驱动程序开发 来自淘豆网m.daumloan.com转载请标明出处.