- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设备驱动的初始化函数主要完成功能 (1)对驱动程序管理的硬件进行必要的初始化。 对硬件寄存器进行设置。比如,设置中断掩码,设置串口的工作方式、并口的数据方向等。 (2)初始化设备驱动相关的参数。 一般说来,每个设备都要定义一个设备变量,用以保存设备相关的参数。在这一步骤里对设备变量中的项进行初始化。 (3)在内核注册设备。 调用register_chrdev()函数来注册设备。 (4)注册中断。 如果设备需要IRQ支持,则要使用request_irq()函数注册中断。 * 精品PPT | 借鉴参考 设备驱动的初始化函数主要完成功能 (5)其他初始化工作。 初始化部分一般还负责给设备驱动程序申请包括内存、时钟、I/O端口等在内的系统资源,这些资源也可以在open子程序或者其他地方申请。这些资源不用时,应该释放,以利于资源的共享。 若驱动程序是内核的一部分,初始化函数则要按如下方式声明: int __init chr_driver_init(void); 其中__init是必不可少的,在系统启动时会由内核调用chr_driver_init,完成驱动程序的初始化。 当驱动程序是以模块的形式编写时,则要按照如下方式声明: int init_module(void) 当运行后面介绍的insmod命令插入模块时,会调用init_module函数完成初始化工作。 * 精品PPT | 借鉴参考 中断管理 设备驱动程序通过调用request_irq函数来申请中断,通过free_irq来释放中断。它们在linux/sched.h中的定义如下: int request_irq( unsigned int irq, void (*handler)(int irq,void dev_id,struct pt_regs *regs), unsigned long flags, const char *device, void *dev_id ); void free_irq(unsigned int irq, void *dev_id); 通常从request_irq函数返回的值为0时,表示申请成功;负值表示出现错误。 ? irq表示所要申请的硬件中断号。 ? handler为向系统登记的中断处理子程序,中断产生时由系统来调用,调用时所带参数irq为中断号,dev_id为申请时告诉系统的设备标识,regs为中断发生时寄存器内容。 ? device为设备名,将会出现在/proc/interrupts文件里。 ? flag是申请时的选项,它决定中断处理程序的一些特性,其中最重要的是决定中断处理程序是快速处理程序(flag里设置了SA_INTERRUPT)还是慢速处理程序(不设置SA_INTERRUPT)。 下面的代码将在SBC-2410X的Linux中注册外部中断2。 eint_irq = IRQ_EINT2; set_external_irq (eint_irq, EXT_FALLING_EDGE,GPIO_PULLUP_DIS); ret_val = request_irq(eint_irq,eint2_handler, “S3C2410X eint2”,0); if(ret_val 0){ return ret_val; } 用来打开和关闭中断的函数如下: #define cli() _asm_ _volatile_ (cli::) #define sli() _asm_ _volatile_ (sli::) * 精品PPT | 借鉴参考 中断管理 设备驱动程序通过调用request_irq函数来申请中断,通过free_irq来释放中断。在linux/sched.h中定义: int request_irq( unsigned int irq, /*所要申请的硬件中断号*/ void (*handler)(int irq,void dev_id,struct pt_regs *regs), unsigned long flags, /*申请时的选项 SA_INTERRUPT快速处理程序*/ const char *device, /*设备名,出现在/proc/interrupts文件*/ void *dev_id ); void free_irq(unsigned int irq, void *dev_id); 通常从request_irq函数返回的值为0时,表示申请成功;负值表示出现错误。 ? handler为向系统登记的中断处理子程序,中断产生时由系统来调用,调用时所带参数irq为中断号,dev_id为申请时告诉系统的设备标识,regs为中断发生时寄存器内容。 * 精品PPT | 借鉴参考 设备驱动开发的基本函数 1.I
您可能关注的文档
- 2015抗菌药物指导原则与旧版对比[宣讲].ppt
- 2015冠脉痉挛综合征中国专家共识[宣讲].ppt
- 2015版质量管理体系培训教材[宣讲].ppt
- 2015版抗菌药物临床应用指导原则[宣讲].ppt
- 2015版100元纸币防伪特征及人民币反假知识简介[宣讲].pptx
- 2014 新产程图与促进自然分娩[宣讲].ppt
- 2013信息网络安全状况和发展趋势[宣讲].ppt
- 2012年版《职业病防治法》知识培训[宣讲].ppt
- 2012年3月12日沃乐柳老师如何增加宝宝抵抗力[宣讲].ppt
- 2012CRRT的局部枸橼酸抗凝(杜斌)[宣讲].ppt
- 高考真题分类汇编09 磁场 -(2015-2025)高考物理真题分类汇编(全国通用)(解析版).doc
- 2026届金华十校高三一模化学试题+答案.doc
- 高考物理一轮复习 第15讲 探究加速度与物体受力、物体质量的关系(讲义)(原卷版).doc
- 高考物理一轮复习 第15讲 探究加速度与物体受力、物体质量的关系(练习)(解析版).doc
- 高考物理一轮复习 第10章 专题强化16 电学实验综合 讲义.doc
- 高考物理一轮复习 第12讲 牛顿运动定律(讲义)(解析版).doc
- 高考物理一轮复习 第13讲 牛顿第二定律的基本应用(讲义)(解析版).doc
- 高考物理一轮复习 第13讲 牛顿第二定律的基本应用(讲义)(原卷版).doc
- 湖北省鄂东南教育联盟2025-2026学年高三上学期11月联考历史含答案.doc
- 湖北省鄂东南教育联盟2025-2026学年高三上学期11月联考生物含答案.doc
最近下载
- 生产过程管理介绍.pptx
- 链家大区商圈经理述职.pptx VIP
- 2.1MW分布式光伏发电示范项目主要设备及材料清册.doc VIP
- 济南局铁路局本科招聘笔试真题.pdf VIP
- 遥感地质解译报告.docx VIP
- (高清版)DB36∕T 2015-2024 地理标志产品++赣南脐橙.pdf VIP
- (正式版)H-Y-T 123-2009 海域使用分类(正式版).docx VIP
- 山东省日照市新营中学2024-2025学年七年级上学期期中考试英语试题.docx VIP
- 2023年新版事业单位岗位工资薪级工资标准及套改表.doc VIP
- 《高空作业车》国标GBT 9465-2018.docx VIP
原创力文档


文档评论(0)