版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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-2031年中国粮油行业市场调查研究及发展前景预测报告
- 临床透室自体动静脉内瘘(AVF)常见并发症及处理
- 2025年驻马店技师学院高职部高职单招职业技能考试模拟试卷附答案详解【模拟题】
- 传统竹编制作方法及教学指导方案
- 电源基础知识培训资料课件
- 2025年宪法知识竞赛试题库(含答案)
- 职业规划及心态培训课件
- 机电安装教学课件
- 2025年中考数学总复习《二次函数与反比例函数》专项检测卷(附答案)
- 婚前教育手册
- DL∕T 397-2010 电力地理信息系统图形符号分类与代码
- 全国疾病预防控制机构工作规范
- HGT 6332-2024《液体脲醛缓释肥料》
- 外科学 手术 基础
评论
0/150
提交评论