版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、庄?= i宰$ s 帕 IIW帕 6 來 JapEOJOOHM 帕QAZO-OGCOel PCM-ddv 40 - oo 上 OS BPB3H10. 1. 1嵌入式Linux设备驱动程序分类静态加载的驱动程序动态加载的驱动程序Linux将设备按照功能特性划分为三种类型:字符 设备,块设备和网络设备。10.1.2最简单的内核模块1 helloworld模块源代码2.模块的编译3.模块的加载和卸载ioHuade School of AppIi od Toohnology10. 2嵌入式Linux设备驱动重要技术10. 2. 1内存与I/O端口(1) 内核空间和用户空间(2) 内核中内存分配内核中获
2、取内存的几种方式如下。 通过伙伴算法分配大片物理内存 通过s 1 ab缓冲区分配小片物理内存 非连续内存区分配 高端内存映射固定线性地址映射(3) I/O端口根据CPU体系结构的不同,CPU对10端口的编址方式 有两种:I/O映射方式(I/0-mapped)和内存映射方 式(Memory-mapped)。下面主要讨论一下内存映射方式访问I/O端口的方 法,我们称之为I/O内存操作。I/O内存区必须在使用前分配 I/O内存映射访问I/O内存映射到用户空间10.1嵌入式Linux驱动程序开发基础Huade School of AppIi od Toohnology10. 2. 2 同步机制Linu
3、x内核中包含的同步机制包括:原子操作、信 号量 (semaphore)、读写信号量 (rw_semaphore)、 自旋锁(spinlock)、大内核锁(Big Kernel Lock, BKL) 读写锁(rwlock) 读拷贝更新(Read-Copy Update, RCU)和seqlock (顺序锁)等。10.1嵌入式Linux驱动程序开发基础Huade School of AppIi od Toohnology10.1嵌入式Linux驱动程序开发基础Huade School of AppIi od Toohnology1. 原子操作原子操作主要用于实现资源计数,很多引用计数(refcnt
4、)就是通过原子操作实现的。原子类型定义如下:typedef struct volatile int counter; atomic_t;原子操作通常用于实现资源的引用计数2. 信号量信号量在创建时需要设置一个初始值.3. 读写信号量读写信号量有两种实现: 一种是通用的,不依赖于硬件架构 一种是架构相关的IttiT 读写信号量的相关API有:DECLARE_RWSEM(name)该宏声明一个读写信号量name并对其进行初始化。 void init_rwsem(struct rw_semaphore *sem); 该函数对读写信号量sem进行初始化。void down_read(stmct rw_
5、semaphore *sem);在Linux中,每一个进程都用一个类型为task_t或 struct task_struct的结构来描述Illi4. 自旋锁一个执行单元要想访问被自旋锁保护的共享资源,必须先得到锁,在访问完共享资源后,必须释放锁。自旋锁的API有: spin_lock_init(x);10. 2. 3阻塞与非阻塞1. 阻塞操作2. 非阻塞操作10. 2. 4时间问题1延时操作:2.内核定时器(1)长延时。(2)短延时10.1嵌入式Linux驱动程序开发基础Huade School of AppIi od Toohnology10.1嵌入式Linux驱动程序开发基础Huade S
6、chool of AppIi od Toohnology釆用缺省工作者线程来实现工作队列的API:内核提供给驱动许多函数来声明、注册、以及去除内核定时器。3. 工作队列 NIT_W0RK(_work, _func, _data) int schedule_work(struet work_struet *work) int schedule_delayed_work(stmet work_struct *work, unsignedlong delay)void flush_scheduled_work(void) int cancel_delayed_work(struct work_struet *work)创建自己的工作者线程和工作队列,API:char *name) struet workqueue_struct *create_workqueue(const int queue_work(struet workqueue_struet *wq, struetwork_struet *work)U int queue_delayed_work(struet workqueue_struct *wq, work_struet *work, unsigned long d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年北京市平谷区初三下学期一模英语试卷和答案
- 广东省惠州市2026年下学期七年级数学阶段性试题附答案
- 2026年初中社会实践活动知识题
- 2026年国际贸易实务与规则培训测试题目
- 2026年工程力学与结构分析土木工程进阶考试题库
- 2026年违规取得外国国籍国境永久居留资格应知应会测试题
- 2026年个体工商户发展条例知识试题
- 2026年河道管理范围划定知识测试
- 2026年个人信息保护法社区宣讲题库
- 2026年青年干部三会两制一课制度题库
- 2026年山东春考《运输类专业知识》模拟试题及答案解析
- 道路施工安全培训教育课件
- 娃娃机店员工工作制度
- 2024年石嘴山市卫生系统考试真题
- 2026宁夏宁国运新能源盐池区域管理中心招聘14人备考题库参考答案详解
- 2026年钻探工程的法律法规指导
- 2026年城区中小学春秋假托管服务实施方案
- 企业内部审计与纪检监察融合的实践案例
- 第十九章 二次根式 数学活动 纸张规格的奥秘 教学设计 -2025-2026学年人教版数学八年级下册
- 储能合作框架协议范本
- 2026安徽交控集团所属安徽交控资源有限公司校园招聘3人备考题库及1套参考答案详解
评论
0/150
提交评论