![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux 设备开发详解笔记
文章平均质量分 67
weixin_44141427
这个作者很懒,什么都没留下…
展开
-
2021-04-11
8.Linux设备驱动中的阻塞和非阻塞I/O8.1.堵塞与非堵塞IO8.1.1.阻塞阻塞操作是指再执行设备操作时,若不能获得资源,则挂起进程直到满足操作所需的条件后再进行操作,被挂起的进程进入休眠状态(不占用CPU资源),从调度器的运行队列转移到等待队列,直到条件满足。8.1.2. 非堵塞非阻塞操作是指在进行设备操作时,若操作条件不满足并不会挂起,而是直接返回或重新查询(一直占用CPU资源)直到操作条件满足为止。当用户空间的应用程序调用read(), write()等方法时,若设备的资源不能被获原创 2021-04-11 11:12:13 · 89 阅读 · 0 评论 -
2021-04-11
7.Linux设备驱动的并发控制并发(concurrency)------指的是多个执行单元同时、并行被执行竞态(race conditions)-------并发的多个执行单元对共享资源的不合顺序地访问,两个以上线程在同一个临界区内同时执行共享资源-----硬件资源和软件上的全局变量、静态变量等解决竞态问题-------保证共享资源互斥访问互斥访问------指一个执行单元在访问共享资源的时候,其他的执行单元被禁止访问实现互斥访问------用中断屏蔽、原子操作、自旋锁和信号量等机制对临界区进原创 2021-04-11 11:11:21 · 100 阅读 · 0 评论 -
2021-04-11
6.字符设备驱动6.1. Linux 字符设备驱动结构6.1.1.cdev结构体cdev结构体描述一个字符设备struct cdev {struct kobject kobj; //内嵌的kobject对象struct module *owner; //所属模块const struct file_operations *ops;//文件操作结构struct list_head list;dev_t dev; //设备号,int 类型unsigned int coun原创 2021-04-11 11:10:02 · 101 阅读 · 0 评论 -
2021-04-11
5.Linux文件系统与设备文件5.1. Linux文件操作5.1.1.文件操作系统的调用Linux的文件操作系统调用涉及创建、打开、读写和关闭文件。1.创建int create(const char *filename, mode_t mode)参数mode指定新文件的存取权限,它同umask一起决定文件的最终权限(mode&umask),其中,umask代表了文件在创建时需要去掉的一些存取权限。umask代表了文件在创建时需要去掉的一些存取权限。umask可以通过系统调用umask(原创 2021-04-11 11:08:21 · 79 阅读 · 0 评论 -
2021-04-11
4.Linux内核模块4.1.Linux内核模块Linux提供了一种被叫为模块(Module)的机制。模块具有以下特点:模块本身不被编译如内核镜像,从而控制内核大小。模块一旦被加载,它就和内核中的其他部分一样。例子:这个简单的内核模块只包含内核模块加载函数、卸载函数和对GPL v2许可权限的声明以及一些可描述信息,在编写一个Makefile函数。运行make命令就可以得到模块直接在PC上运行。(CURDIR是make的内嵌变量,自动设置为当前目录)如果模块包括多个.c文件(如file1.c、f原创 2021-04-11 10:53:40 · 58 阅读 · 0 评论 -
2021-04-11
3.Linux内核及内核驱动编程3.1.Linux 内核的发展与演变Linux 操作系统诞生于 1991 年 10 月 5 日(第一次正式向外公布的时间)。 Linux 操作系统的诞生、发展和成长过程依赖于 UNIX 操作系统、 MINIX 操作系统、 GNU 计划、 POSIX 标准和 Internet。3.1.1.UNIX 操作系统UNIX 操作系统是美国贝尔实验室的 Ken. Thompson和 Dennis Ritchie于 1969 年在 DEC PDP-7 小型计算机上开发的一个分时操作原创 2021-04-11 10:52:26 · 246 阅读 · 0 评论 -
2021-04-11
2.驱动设计的硬件基础2.1.处理器2.1.1.处理器–通用处理器目前主流的通用处理器(GPP)多采用 SoC(片上系统)的芯片设计方法,集成了各种功能模块,每一种功能都是由硬件描述语言设计程序,ARM 主控芯片的集成度非常高,除了集成多核 ARM 以外,还可能集成图形处理器、视频编解码器、浮点协处理器、GPS、WiFi、蓝牙、基带、Camera 等一系列功能。中央处理器的体系结构可以分为两类:1.冯·诺依曼结构:ARM的ARM7、MIPS公司的M原创 2021-04-11 10:31:55 · 373 阅读 · 0 评论 -
2021-04-11
1.Linux 设备驱动概述及开发环境构建1.1.设备驱动的作用设备驱动是与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射,最终使通信设备能够收发数据,使显示设备能够显示文字和画面,使存储设备能够记录文件和数据1.2.无操作系统的驱动在单任务的系统中,虽然不存在操作系统,但是设备驱动是必须存在的。一般情况下,对每一种设备驱动都会定义为一个软件模块,包含.h文件和.c文件,前者定义该设备驱动的数据结构并声明外部函数,后者原创 2021-04-11 10:27:25 · 66 阅读 · 0 评论