嵌入式应用程序设计-设备驱动-1.ppt

嵌入式应用程序设计-设备驱动-1.ppt

ID:57599622

大小:310.00 KB

页数:24页

时间:2020-08-28

嵌入式应用程序设计-设备驱动-1.ppt_第1页
嵌入式应用程序设计-设备驱动-1.ppt_第2页
嵌入式应用程序设计-设备驱动-1.ppt_第3页
嵌入式应用程序设计-设备驱动-1.ppt_第4页
嵌入式应用程序设计-设备驱动-1.ppt_第5页
资源描述:

《嵌入式应用程序设计-设备驱动-1.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、嵌入式应用程序设计第八章嵌入式Linux设备驱动编程知识点回顾TCP/IP模型套接字TCP套接字编程UDP套接字编程设备驱动的基本概念Linux内核与驱动的关系Linux内核模块结构内核模块命令本次课内容31.设备驱动概念是处理和操作硬件控制器的软件。驱动程序是内核的一部分,是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,完成以下功能:对设备初始化和释放;对设备进行管理,包括实时参数设置,以及提供对设备的操作接口;读取应用程序传送给设备文件的数据或者回送应用程序请求的数据;检测和处理设备出现的错误。8.1设备驱动编程基础—设备驱动42.Linux系统的设备

2、分类字符设备通常指以字节为单位顺序读写的设备,如并口设备、虚拟控制台等。块设备通常指以块为单位随机读写的设备,如IDE硬盘、SCSI硬盘、光驱等。网络设备通常是指通过网络能够与其他主机进行数据通信的设备,如网卡等。8.1设备驱动编程基础—设备驱动5举例:linux设备识别在linux中任何设备都是文件。所有设备的设备文件节点都在/dev目录下。#:ls–al/dev3.设备驱动程序的特点内核代码内核接口内核机制和服务可装载可设置动态性8.1设备驱动编程基础—设备驱动74.设备驱动程序与整个软硬件系统的关系8.1设备驱动编程基础—设备驱动81.Linux的内核模块Linux内核采

3、用可加载内核模块化设计(LoadableKernelModule,LKM)内核模块:是一些可以让操作系统内核在需要时载入和执行的代码。是一种目标对象文件,通常由一组函数和数据结构组成。内核的一个模块可以以两种方式被编译和加载。直接编译进Linux内核,随同Linux启动时加载;编译成一个可加载和删除的模块。8.1设备驱动编程基础—内核模块编程98.1设备驱动编程基础—内核模块编程C语言程序Linux内核模块运行用户空间内核空间入口main()module_init()指定;出口main()module_exit()指定;编译gcc–cMakefile连接ldinsmod运行直接

4、运行insmod调试gdbkdbug,kdb,kgdb等2.Linux内核模块与应用程序的区别8.1设备驱动编程基础—内核模块编程3.内核模块相关命令insmodmodule.oLoadthemodule注意,只有超级用户才能使用这个命令rmmodmoduleUnloadthemodulelsmodListallmodulesloadedintothekernel这个命令和cat/proc/modules等价modprobe[-r]–Loadthemodulespecifiedandmodulesitdepends举例:模块相关命令lsmodinsmod

5、hello.ormmodhellomodprobe/lib/modules/linux版本号/modules.dep/etc/modprobe.confmodeproble–rhello最简单的内核模块例子#include#include#includeMODULE_LICENSE("GPL");staticint__inithello_init(void){printk(“Hellokernel….");return0;}staticvoid__exithello_exit(void)

6、{printk(“byebye….");}module_init(hello_init);module_exit(hello_exit);生成makefile文件Makefile文件obj-m:=hello.oall:make-C/usr/src/linux-2.4.20/M=$(shellpwd)modulesclean:make-C/usr/src/linux-2.4.20/M=$(shellpwd)modulesclean编译装载过程$lshello.cMakefile$makemake-C/usr/src/linux-2.4.20/M=/wu/char_8modul

7、es$lshello.chello.mod.chello.mode.ohello.omake.logMakefilemodules.order$sudoinsmodhello.o$dmesg

8、tail-1Hellokernel…$lsmod

9、grephellohello1216 0$sudormmodhello $dmesg

10、tail-1byebye….不需要编写Makefile的方法gcc编译后加上-DMODULE-DLINUX参数例如:gcc-DMODULE-DLINUX-I/usr/s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。