嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt

嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt

ID:50348792

大小:990.00 KB

页数:17页

时间:2020-03-08

嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt_第1页
嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt_第2页
嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt_第3页
嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt_第4页
嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt_第5页
资源描述:

《嵌入式Linux系统应用及项目实践 教学课件 作者 丰海 第6章_字符型驱动.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章字符型驱动丰海1驱动程序:将底层硬件的操作写成供应用程序可以调用的函数集合。设备文件:为了让应用程序方便地控制硬件设备,驱动程序将硬件映射成一个设备文件,这样应用程序通过读写这个设备文件就可以控制硬件设备了。Linux设备分为二类:字符设备和块设备,本书只讲解字符型设备的驱动编写。应用程序:应用程序通过读写设备文件,并调用驱动程序里的函数来控制硬件设备。硬件接口:所有的开发板都会把GPIO接口引出来。23驱动程序与应用程序之间的区别1.应用程序有一个main主函数,从头到尾执行一个任务;驱动程序却没有main函数。2.应用程序可以和GLIBC库连接,因此可以包含标准

2、的头文件,比如,在驱动程序中是不能使用标准C库的,比如输出打印函数只能使用内核的printk函数,包含的头文件只能是内核的头文件,比如。4一个字符型驱动的标准框架如下:1头文件和宏定义2ioctl函数:定义了供应用程序调用的ioctl函数的实体3结构体:将所有供应用程序调用的函数名注册在这个结构体中4初始化函数模块hello_init:调用register_chrdev()函数为这份驱动注册主设备号,如;ret=register_chrdev(0,DEVICE_NAME,&hello_fops);5退出函数模块hello_

3、exit:调用unregister_chrdev()函数注销刚才申请的主设备号,如:unregister_chrdev(demoMajor,DEVICE_NAME);6模块说明:说明那些函数是初始化函数;那些函数是退出函数51.实例1驱动的功能说明我们先编写一个最简单的HELLO驱动,这个驱动的功能就是用insmod加载时显示:Hello!Welcometostudycharacterdriver!用rmmod卸载模块时显示:Goodbye!Characterdriveriseasy!6/***第1部分开始*声明包含所需要的头文件***/#include

4、rnel.h>#include/***第2部分开始*hello_init()初始化函数的具体定义**/staticint__inithello_init(void){printk(KERN_NOTICE"Hello!Welcometostudycharacterdriver!");return0;}/***第3部分开始*hello_exit()退出函数的具体定义***/void__exithello_exit(void){printk(KERN_NOTICE"Goodbye!Characterdriveriseasy!");

5、}/***第4部分开始*驱动的有关声明***/module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE("DualBSD/GPL");7Makefile文件#指定内核源代码的路径KERNELDIR?=/opt/EmbedSky/linux-2.6.30.4/#指定编译好的驱动放在当前路径PWD:=$(shellpwd)all:modulesmodules:$(MAKE)-C$(KERNELDIR)M=$(PWD)modulesclean:rm-rf*.o*~core.depend.*.cmd*.ko*.o

6、rder*.mod.c*.symvers.tmp_versionsobj-m:=hello_driver.o#生成hello_driver.ko驱动8输入make编译驱动fh@fh:~/my_experiment/hello$makemake-C/opt/EmbedSky/linux-2.6.30.4/M=/home/fh/my_experiment/hellomodulesmake[1]:正在进入目录`/opt/EmbedSky/linux-2.6.30.4'CC[M]/home/fh/my_experiment/hello/hello_driver.oBuilding

7、modules,stage2.MODPOST1modulesCC/home/fh/my_experiment/hello/hello_driver.mod.oLD[M]/home/fh/my_experiment/hello/hello_driver.komake[1]:正在离开目录`/opt/EmbedSky/linux-2.6.30.4'9下载到开发板并运行[root@EmbedSkysky]#insmodhello_driver.koHello!Welcometostudycharacterdriver![root@Em

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

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

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