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

嵌入式系统原理及应用课件:设备驱动程序设计.pptx

嵌入式系统原理及应用课件:设备驱动程序设计.pptx

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

设备驱动程序设计嵌入式系统原理与应用

目录CONTENTS01.驱动开发概述02.内核模块03.字符设备驱动

01PARTONELinux驱动概述

设备驱动程序(DeviceDriver),简称驱动程序(Driver)。它是一个允许计算机软件与硬件交互的程序。这种程序建立了一个硬件与硬件,硬件与软件形成连接,这样的连接使得硬件设备之间的数据交换成为可能。设备驱动程序是计算机硬件与应用程序的接口,是软件系统与硬件系统沟通的桥梁。字符设备块设备网络设备设备驱动分类

02PARTTWO内核模块

1、字符设备--c一、Linux设备驱动分类应用程序和驱动程序进行数据读写时,是以“字节”为单位,按照固定的顺序传输;数据是实时传输,没有缓存。字符设备是没有文件系统的。绝大部分设备驱动是字符设备:LED、BEEP、按键、键盘、触摸屏、摄像头、液晶屏、声卡、IIC、SPI、...应用程序:系统IO函数open(/dev/led_drv,O_RDWR)read()write()ioctl()mmap()close()

2、块设备--b一、Linux设备驱动分类应用程序和驱动程序之间进行数据读写时,数据是以“块”为单位,1block=1024KB。块设备是有缓存的,块设备是有文件系统的。大容量的存储设备一般都是块设备:nandflash、eMMC、SD、U盘、硬盘、....#cat/proc/partitionsmajorminor#blocksname17907634944mmcblk0179165536mmcblk0p1应用程序访问块设备[root@GEC6818/]#ls/dev/sda*-lbrw-rw-rw-1rootroot8,0Jan100:11/dev/sda---U盘1)挂载---块设备是有文件系统的。2)像访问普通文件一样访问块设备的内容。

3、网络设备一、Linux设备驱动分类网卡类的设备:有线网卡、无线网卡、...,网络设备是没有设备文件的。应用程序: socket套接字:IP+端口号

二、内核模块的定义1、linuxkernelmodule2、module编译后会生成一个*.ko安装驱动:#insmodled_drv.ko卸载驱动:#rmmodled_drv.ko查看系统中,已安装的module:#lsmod驱动程序在内核中是独立的模块例如:beep驱动和LED驱动,beep和led间没有任何联系,可以通过应用程序将两个驱动联系在一起。beep驱动和led驱动各自是独立的module。说明:每个驱动程序都是一个独立模块,每设计一个驱动程序,首先设计一个module,驱动程序是包含在module中。

三、Sourceinsight创建工程1、SI设置Options---DocumentOptions---DocumentType:CSourceFile:*.c;*.h;*.S;*.sX86AsmSourceFile:*.asm;*.inc;*.S;*.s2、创建一个工程project--newproject--工程文件放在源码包中(I:\GEC6818物联网综合实验箱(多模块版本)-201708\1、嵌入式6818网关平台\源码\kernel6818\kernel6818)addtree(稍微等一下)---close3、文件的同步project---synchronizeFiles(同步文件)4、内核源码在kernel中I:\GEC6818物联网综合实验箱(多模块版本)-201708\1、嵌入式6818网关平台\源码\6818GEC\kernel

四、设计一个module并编译注意:参考内核源码,首先使用sourceinsight创建一个内核源码的工程例子:/drivers/watchdog/mxp_wdt.c1、设计module2、Makefile3、编译1、指定安装驱动的入口函数,用宏module_init(安装驱动的入口函数名)2、指定卸载驱动的入口函数,用宏module_exit(卸载驱动的入口函数名)3、定义对应入口函数4、驱动的描述MODULE_AUTHOR(bobeyfeng@163.com);//作者联系方式MODULE_DESCRIPTION(LEDdriverforGEC6818);//驱动描述MODULE_LICENSE(“GPL”);//GPL协议MODULE_VERSION(

文档评论(0)

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

中医资格证持证人

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

领域认证该用户于2023年05月10日上传了中医资格证

1亿VIP精品文档

相关文档