嵌入式编程第6讲:驱动程序开发详解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Makefile文件执行解析 在当前目录下输入make 后,会执行当前目录下的Makefile 第一次执行Makefile, KERNELRELEASE=空 KERNELDIR ?= /lib/modules/$(shell uname -r)/build (本地开发) 等同于 /lib/modules/2.6.32-53-generic/build 这个目录存放的是编译内核必须的一些头文件和库 在输入make后默认会执行第一个目标,第一目标:modules: 进而执行: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules $(MAKE) = make make -c : 进入子目录(/lib/modules/3.2.0-29-generic-pae/build) 下,去执行子目录下的Makefile M =$(PWD) :/home/linux/linux-driver/01-day/02-char-module_init modules : 告诉内核我要编译模块 Makefile文件执行解析 第二次: 执行子目录下的Makefile后,会再次调用当前目录下的Makefile 在执行子目录(/lib/modules/3.2.0-29-generic-pae/build)下的Makefile后会对KERNELRELEASE 进行赋值KERNELRELEASE=3.2.0-29-generic-pae ifeq ($(KERNELRELEASE),)条件为假 执行else分支 obj-m := demo.o (obj-m 表示的要编译成模块所依赖的*.o文件)(动态编译) obj-y :静态编译 执行后会把demo.c编译程demo.o文件 Makefile文件执行解析 第3次 : 会把demo.o 生成demo.ko文件 * 5.1 Linux驱动程序概述 5.2 虚拟字符设备Demo驱动程序设计 5.3 A/D驱动程序设计 第5章:Linux驱动程序设计 * 5.3.1 A/D转换的基础理论 5.3.2 A/D转换的驱动程序分析 5.3.3 A/D转换应用程序分析 5.3 A/D驱动和测试程序设计 * 1、A/D是什么? A是analog的缩写,D是digital的缩写。 A/D是将模拟信号转换成数字信号的意思。 5.3.1 A/D转换的基础理论 * 2、A/D的具体应用? (1)测试温度。 (2)测试冒雾浓度(煤气浓度\CO2)。 (3)压力 5.3.1 A/D转换的基础理论 * 3、A/D转换器是什么? 是模拟信号源与CPU之间的接口,它的任务是将连续变化的模拟信号转换成数字信号。 * 5.1.6 驱动程序常用函数 * 1.字符设备注册及注销函数 字符设备驱动程序可通过register_chrdev函数向内核注册设备,又可通过unregister_chrdev函数向内核注销设备。 int register_chrdev(unsigned int major, const char *name, struct file_operations *fops); void unregister_chrdev(unsigned int major, const char *name); * 2.中断申请和释放函数 设备驱动程序可通过request_irq函数向内核申请中断,又可通过free_irq函数释放中断。它们的定义如下: int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *), unsigned long flags,        const char * dev_name, void *dev_id); void free_irq(unsigned int irq, void *dev_id); 3.阻塞型I/O操作函数 当对设备进行read和write操作时,如果驱动程序无法立刻满足请求时,应当如何响应?驱动程序应当(缺省地)阻塞进程,使它进入睡眠直到请求可继续,即阻塞型I/O操作。 可以通过调用以下函数让进程进入睡眠状态。 void sleep_on(struct wait_queue **q); void interrutible_sleep_on(struct wait_queue **q); 又可以通过调用以下函数唤醒进程。 void wake_up

文档评论(0)

风凰传奇 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档