- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设备驱动程序的开发内容 定义主,次设备号 规划需要实现的文件操作,定义File_Operations数据结构 实现驱动程序的初始化函数,以及清除函数 实现有关的I/O操作函数 实现中断服务函数并向内核注册 将驱动编译到内核,或编译成模块,生成设备文件 设计要点 建立文件结构的全局变量,并设置其内部的函数指针,实现处理程序的对接。 编写I/O接口函数. 编写注册,注销程序,并使用module_init(yourInit); module_exit(yourExit);实现与内核对接。 设备注册函数:register_chrdev, misc_register 设备注销函数:unregister_chrdev 见例程序 Linux设备的操作 1、驱动程序模块的加载注册和注销; 2、设备的打开和释放; 3、使用文件操作API函数,实现设备的读写操作。 Linux设备的操作 设备驱动模块的加载 方式1:单独编译驱动程序形成目标文件,作为可加载的模块动态加载到内核。模块是内核的一部 分,但是本身是作为一个独立的个体存在,没有被编译到内核里面去。它们仅仅是被编译成目标文件,而不进行链接。 用户可以在使用到它们的时候,通过命令装入模块。 相关命令: insmod ,modprob:加载模块 depmod:分析可加载模块的依赖性,生成 modules.dep文件和映射文件 lsmod:显示已载入系统的模块 它比较智能,可以根据module的依赖性来自动为你加载; 方式2:是将设备驱动程序作为内核代码的一部分编译到内核中去,以内核模式运行。当内核被编译时,被编译到内核的设备驱动程序是可配置的。 设备驱动模块的注销 在不用时,通过 rmmod 命令卸载该模块,从而释放所占用的宝贵的内存资源,以达到有效利用系统资源。 设备驱动的使用 设备模块已经注册前提下 打开设备:open(..); 使用设备:read(..),write(..), ioctl(..).. 释放设备:release(..) 不是注销设备 驱动程序的中断处理 中断处理程序是管理硬件的驱动程序的组成部分。每一设备都有相关的驱动程序。如果设备使用中断,那么相应的驱动程序就注册一个中断处理程序。 ?????? 驱动程序可以通过下面的函数注册并激活一个中断处理程序,以便处理中断 注册中断 int request_irq (unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char *devname, void *dev_id) 请求的中断号,与实际的中断源对应,通常用定义的符号常量表示,例如:IRQ_EINT4 在irqs.h 定义 向系统登记的中断处理函数 中断处理属性,一个与中断管理相关的选项 中断的拥有者 用作共享中断线的指针. 它是一个独特的标识 ,如果中断没有被共享, dev_id 可以设置为 NULL 注销中断 卸载驱动程序时,需要注销响应的中断处理程序,并释放中断线。 Void free_irq(unsigned int irq, void *dev_id) 嵌入式LINUX驱动开发流程 熟悉设备的特性; 确定设备驱动程序是哪一类 编写测试用例 搜集可重用的代码 编写自己的驱动程序代码 调试、编码、测试 驱动程序加载方式 驱动程序直接编译入内核 * * * * * * * * * BootLoader的加载嵌入式Linux启动过程 第一阶段: 硬件设备初始化 加载第二阶段的程序在RAM中 设置堆栈 跳转到第二阶段的C程序入口点 第二阶段: 初始化本阶段要使用的硬件设备 检测系统内存映射 等待命令决定进入何种模式 更新Linux:进入操作菜单,执行用户命令 启动Linux:将Kernel映像和根文件系统映像从Flash拷贝到RAM中 为内核设置启动参数 调用内核 BootLoader的加载嵌入式Linux启动过程 BootLoader的移植 自行开发一个全新的BootLoader是困难的。 U-Boot是德国DENX小组开发的用于多种嵌入式CPU的BootLoader程序 U-Boot的修改和移植 修改硬件配置信息文件*.h(CPU,系统时钟,存储器,外部设备等设置) 更改MakeFile文件 编译U-Boot生成代码文件(u-boot.bin, b-boot.elf,u-boot.srec) 将代码文件烧录到系统的Flash中 嵌入式Linux系
您可能关注的文档
最近下载
- 《小学综合性学习与跨学科教学》第9章小学综合实践活动课程的实施PPT课件.pptx VIP
- 第一讲中华民族共同体基础理论-中华民族共同体概论.pptx VIP
- Blue Jasmine-蓝色茉莉-英文剧本.pdf VIP
- 共拾朝花,岁有余香——初中语文七年级上册《朝花夕拾》导读课(公开课一等奖创新教学设计).docx VIP
- Unit3-九年级英语全一册单元重难点易错题精练(人教版)解析版.doc VIP
- 第一讲-中华民族共同体基础理论-中华民族共同体概论教案.docx VIP
- 不同种类植物油及黄豆饼粉对那西肽发酵的影响-中国兽药杂志.doc VIP
- 《小学综合性学习与跨学科教学》第8章小学综合实践活动课程方案的优化.docx VIP
- 人教版PEP英语六年级上册Unit1-Unit2单元测试卷(含答案) .pdf VIP
- 第一讲-中华民族共同体基础理论-中华民族共同体概论教案.pdf VIP
文档评论(0)