![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux4.0驱动开发
文章平均质量分 68
zcj仲从建
这个作者很懒,什么都没留下…
展开
-
《Linux4.0设备驱动开发详解》笔记--第十二章:Linux设备驱动的软件架构思想
待补充原创 2016-05-20 13:46:41 · 662 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第十四章:Linux网络设备驱动
待补充原创 2016-05-20 13:48:06 · 430 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第十五章:Linux I2C核心、总线与设备驱动
Linux I2C体系结构15.1 I2C核心 I2C核心提供了I2C总线驱动和设备驱动的注册、注销的方法,I2C通信(Algorithm)方法上层的与具体适配器无关代码以及探测设备、检测设备地址的上层代码等I2C总线驱动 是对I2C体系结构中适配器端的实现,适配器可由CPU控制,甚至可以直接集成在CPU内部总线驱动包含I2C适配器数据结构i2c_adapter、I2C适配器的Algori原创 2016-05-20 13:49:38 · 5203 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第十八章:ARM Linux设备树
18.1 ARM设备树简介设备舒适一种描述印鉴的数据结构,它起源于OpenFirmware(OF) 采用设备树前后对比: 采用设备树之前:ARM架构的板极硬件细节过多的被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx中采用设备树之后:许多硬件细节可以直接通过它传递给Linux,而不再需要在讷河中进行大量的冗余编码设备树的组成:由一系列被命名的节点(Node)原创 2016-05-21 12:52:36 · 3696 阅读 · 1 评论 -
《Linux4.0设备驱动开发详解》笔记--第十一章:内存与I/O访问
由于Linux系统提供了复杂的内存管理功能,所以内存的概念在Linux系统中的相对复杂,有常规的内存、高端的内存、虚拟地址、逻辑地址、总线地址、物理地址、I/O内存、设备内存、预留内存等概念11.1 CPU与内存、I/O11.1.1 内存空间与I/O空间I/O空间:在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的它通过特定的指令in、out来访问指令格式:IN 累加器原创 2016-05-20 13:45:10 · 2308 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第十三章:Linux块设备驱动
待补充原创 2016-05-20 13:47:31 · 493 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第十六章:USB主机、设备与Gadget驱动
待补充原创 2016-05-21 12:50:08 · 528 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第十七章:I2C、SPI、USB驱动架构类比
待补充原创 2016-05-21 12:51:46 · 1237 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第十九章:Linux电源管理的系统架构和驱动
待补充原创 2016-05-21 12:53:48 · 483 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第二十章:Linux芯片级移植及底层驱动
待补充原创 2016-05-21 12:54:59 · 721 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第八章:linux设备驱动的阻塞与非阻塞
8.1 阻塞与非阻塞I/O阻塞操作 : 是指在执行设备操作时,若不能获得资源,则挂起进程直到满足操作条件后再进行操作。被挂起的进程进入休眠, 被从调度器移走,直到条件满足。非阻塞操作:在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可以进行操作。非阻塞应用程序通常使用select系统调用查询是否可以对设备进行无阻塞的访问最终会引发设备驱动中poll函数执行。阻塞与非阻塞例程:原创 2016-05-19 16:53:47 · 641 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第二十一章:Linux设备驱动的调试
21.1 GDB调式的方法GDB的四个功能:启动程序,可以按照工程师自定义的要求运行程序让被调使得程序可以在指定的地方停住,断点可以是条件表达式当程序停住时,可以检查此程序发生的事,并追踪上文动态的改变程序的执行环境调式内核和应用程序时调试的命令是相同的基本命令list命令(缩写l):列出代码 list ,显示程序第linenum行周围的源代码list ,显示函数名为function原创 2016-05-21 12:58:48 · 924 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第五章:Linux文件系统与设备文件
5.1 Linux文件操作5.1.1 文件操作系统调用创建int create(const char *filename, mode_t mode); mode是存取权限,它同umask(在文件创建时需要去掉的一些权限)一起共同决定文件的最终权限 mode:O_…组合 - 打开int open(const char *pathname, int flags);int open(cons原创 2016-05-18 18:18:29 · 1036 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第四章:Linux内核模块
4.1 内核模块程序结构加载:insmod,modprobe(同时加载模块的依赖模块)卸载:rmmod查看已加载的模块及模块间的依赖关系:lsmod,实际上是分析/proc/modules文件已加载的模块信息放在/sys/module目录下,没加载一个模块就会在该目录下生成一个以模块名命名的目录,“tree -a”可获取目录树模块许可声明:申明许可权限,否则将收到内核被污染警告,一般申明为原创 2016-05-18 11:03:37 · 1433 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第三章:Linux下的C编程特点
3.1 Linux编码风格参考文章:Documentation/CodingStyle缩进用TAB{}使用: 对于结构体、if、for、while以及switch语句,“{”不另起一行如果if、for循环后只有1行,不要加“{”和“}”if和else混合用的时候,else语句不另起一行对于函数,“{”另起一行switch和case对齐3.2 GNU C与ANSI C零长度和变量长原创 2016-05-17 20:03:50 · 790 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第二章:Linux内核及内核编程
2.1 Linux内核发展及演变1991年10月5日 Linus Torvalds创建五个支柱:Unix系统、Minix系统、GNU计划、POSIX标准和Internet每2-3个月更新一次大的版本号2.2 Linux2.6后的内核特点新的调度器:高负荷下的出色性能,更好的处理器扩展,采用CFS算法,新增调度类:SCHED_DEADLINE,它实现了EDF(最早截止期限优先)算法内核抢占原创 2016-05-17 15:08:19 · 2526 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第一章:Linux设备驱动概念及基础
1.1. 设备驱动的分类字符驱动块驱动网络驱动1.2 硬件基础中央处理器结构的分类:冯诺依曼:指令和数据合并在一起,数据宽度相同(Intel和arm7)哈弗:指令和数据分开,可以有不同的数据宽度(arm9-cortex系列)通用处理器分类:为控制器(MCU),又称单片机微控制器(MPU)DSP分类:定点DSP和浮点DSP浮点用硬件来实现,处理速度高于定点定点DSP只能用定点运原创 2016-05-17 14:53:01 · 2037 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第七章:Linux设备中的并发控制
7.1 并发与竞态并发是指多个执行单元同时、并发的被执行,而并发的执行单元对共享资源(硬件资源、软件上的的全局变量、静态变量等)的访问则很容易导致竟态竟态发生在以下几种情况 对称多处理器(SMP)的多个CPU单CPU内进程与抢占它的进程中断与进程解决方法是保证对共享资源的互斥访问 访问共享资源的代码区域称为临界区,临界区需要以某种互斥机制保护 互斥途径:中断屏蔽、原子操作、信号量、自原创 2016-05-19 14:37:21 · 4228 阅读 · 0 评论 -
Linux设备驱动中的异步通知与同步I/O
在设备驱动中使用异步通知可以使得对设备的访问可进行时,由驱动主动通知应用程序进行访问。因此,使用无阻塞I/O的应用程序无需轮询设备是否可访问,而阻塞访问也可以被类似“中断”的异步通知所取代。异步通知类似于硬件上的“中断”概念,比较准确的称谓是“信号驱动的异步I/O”。9.1 异步通知的概念和作用异步通知:一旦设备就绪,则主动通知应用程序,该应用程序无需查询设备状态几种通知方式比较: 阻塞I/原创 2016-05-20 13:42:34 · 5240 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第六章:Linux字符设备驱动
6.1 linux字符设备驱动结构6.1.1 cdev结构体cdev结构体描述一个字符设备struct cdev { struct kobject kobj; //内嵌的kobject对象 struct module *owner; //所属模块 const struct file_operations *ops;//文件操作原创 2016-05-19 10:23:06 · 1166 阅读 · 0 评论 -
《Linux4.0设备驱动开发详解》笔记--第十章:Linux设备驱动中的中断与时钟
10.1 中断与定时器分类 中断来源 内部中断 来源于CPU的内部(软件中断的指令、溢出、除法错误等)外部中断来源于外设请求是否可屏蔽 可屏蔽中断不可屏蔽中断中断的入口方式 向量中断 CPU给每个不同的中断分配不同的中断号,中断发生时会自动跳到该中断号对应的地址执行非向量中断 多个中断共享一个入口地址,进入该入口后通过软件判断中具体哪个中断ARM渡河处理器里最常用的中断原创 2016-05-20 13:44:09 · 5230 阅读 · 0 评论