linux字符设备驱动程序笔记

linux字符设备驱动程序笔记

ID:22583398

大小:319.57 KB

页数:10页

时间:2018-10-30

linux字符设备驱动程序笔记_第1页
linux字符设备驱动程序笔记_第2页
linux字符设备驱动程序笔记_第3页
linux字符设备驱动程序笔记_第4页
linux字符设备驱动程序笔记_第5页
资源描述:

《linux字符设备驱动程序笔记》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、4.6linux字符设备驱动程序[4-6-l]linux驱动程序介绍(参考课件)驱动程序:使硬件工作的软件。早期驱动-模式一应用程序1应用程序2ReadRegReadMemReadRegReadMemWriteRegWriteMemWriteRegWriteMem硬件模型一的缺点:软件程序的复用性不好O醐wv/w.enjoyHnux.cniw/w.enjoytlnux.cn早期驱动•模式二模型二的缺点:如果驱动程序接口变化,则所有的应用程序就必须都改模型三:即linux驱动程序驱动模型:如图“使用驱动程序所示”。解决了上述两种模型的缺点。linu

2、x驱动程序的分类:◎字符设备驱动(重点)◎网络接口驱动(東点)◎块设备驱动1)字符设备:字符设备是一种按字节来访问的设备,字符驱动则负贵驱动字符设备,这样的驱动通常实现open,close,read和write系统调用。2)块设备:◎在大部分unix系统,块没备不能按字节处理数据,只能一次传送一个或多个长度是512字节(或一个更大的2次幂的数)的整块数裾。◎而Linux则允许块设备传送任意数目的字节。因此块和字符设备的区别:仅仅是驱动的接口函数与内核的接口函数不同。3)网络接口:任何网络事物都通过一个接口來进行,一个接口通常是一个硬件(ethO)

3、,但它也可以是一个纯粹的软件设备,比如回环接口(lo)。一个网络接口负责发送和接收数据报文。字符设备与块设备:随机访问?块设备随机访问,字符设备必须按顺序访问驱动程序安装方式:有两种◎模块方式(己知)(insmod,rmmod)◎直接编译进闪核如何直接把驱动程序(内核模块)编译进内核?需要修改两个文件:Kconfig,Makefile(Kconfig用來产生配置菜舉,到处有Kconfig):第一步:首先把驱动程序或内核模块源文件(hello.c)放到内核源代码相应的H录下(根据功能选择目录)(如drivers/char下)第二步:修改Kconfi

4、g,修改所放源文件目录下的Kconfig,在内核源代码的顶层目录执行:vidrivers/char/Kconfig(打开Kconfig),然后在其中加上如下两行代码(照着写):configHELLO.WORLDBool“helloworld”第三步:通过makemenuconfigARCH=arm进入配置菜单,选屮刚添加(要编译进內核)的项。配賈结果体现在(.config)屮,.config文件位于内核源代码顶层目录下,通过vi.config可以查看。可以看到:CONFIG_HELLO_WORLD=y第四步:修改Makefile,修改所放源文件目

5、4下的Makefile。照着写obj-$(CONFIG_HELLO_WORLD)+=hello.o(加上这一项,hello.c)第五步:编译A核。修改好后,回到A核源代码顶层目录执行如下命令编译A核。:maleulmageARCH=armCROSS_COMPILE=arm-linux-111I-1TZ,/-pri

6、L*1^个个个个个个个个个个个个个个个个个个个个个个个个个个个个个M11c4{/II•个个中个个个个个个个个个中个个个个个中个个个个个个个个个个个个个个个#include#include

7、nit.h>staticint_inithello_init()printkfhelloworld!H);return0;}staticvoid一exithello_exit(){printk(KERN_EMERG"helloexit!"}module_init(hello_init);module_exit(hello_exit);^2z«f>rTwrTwrTwrTwrTwrT*rT*rT*rT*rT*rT*rTwrT*rTwrT*rTwrT*rTwrT*rTwrT*rTwrTwrTwrTwrTwrTwrTwrTwrTwrTwrTwrT

8、wrTwrTwrTwrTwrTwrTwrTwrTwrTwrTwrTwr7wrTwr7wrTwr7wrTwr7wrTwr7wrTwr7wrTwr7wrTwr7wrTwr7wrTwr7wrTwr7wrTw编译完成启动P、j核的过程屮,会打印出:HelloWorld!信息。因为执行了模块初始化函数。__init标志表示此函数将被放置到初始化代码段;内核在启动吋,会依次调用初始化代码段中的函数指针。_exit类似。驱动程序使用:linux用户程序通过设备文件(也称:设备节点)来使用驱动程序操作字符设备和块设备(根据町p找到在内核里面对应的stmxtfil

9、e结构,从而找到相应的read,write函数)网络设备没有设备文件,设备文件在dev0录下囲。[4-6-2]字符设备驱动程序设计(参考

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

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

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