上一页 1 2 3 4 5 6 7 ··· 11 下一页
摘要: Linux驱动框架分析(一) 事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。由于Linux的内核用c来编写,所以我们也按照这种结构 阅读全文
posted @ 2018-03-17 15:10 流浪的Coder 阅读(499) 评论(0) 推荐(0)
摘要: <设备驱动模型> 注:几乎所有的设备结构体都包含"strcut kobject kobj"和"srtuct list_head list"该结构体。 struct kobject kobj: 该结构体用于构建Linux设备驱动模型的模型建立 struct list_head { struct lis 阅读全文
posted @ 2018-03-17 15:09 流浪的Coder 阅读(280) 评论(0) 推荐(0)
摘要: <背景> a:Linux中,时钟又分为实时时钟和系统时钟。 实时时钟(硬件时钟): 实时时钟的主要作用是提供计时和产生精确的时钟中断。实时时钟是用来持久存放系统时间的设备,即便系统关闭后,它也可以靠主板上的微型电池提供的电力保持系统的计时。 系统时钟(软时钟): (1)保证系统时间的准确性。 (2) 阅读全文
posted @ 2018-03-17 15:08 流浪的Coder 阅读(961) 评论(0) 推荐(0)
摘要: <背景> 内存会以分页方式组织内存,而且每页大小和计算机体系结构有关系,Linux中每个页都有对应的struct page{} 与之对应。 <分配连续的内存> a:void *kmalloc(int count,int flags)函数用于从zone_normal区域返回连续内存的分配的地址。 参数 阅读全文
posted @ 2018-03-17 15:08 流浪的Coder 阅读(336) 评论(0) 推荐(0)
摘要: <临界区> a:对共享资源进行访问的代码称为临界区。 <原子操作> a:原子操作用于执行轻量级,仅仅执行一次的的操作比如修改计数器,有条件的增加值,设置某一位。所谓原子操作是指该操作在执行玩之前绝对不会被打断,原子操作的代码都是用汇编实现的,因为C语言无法实现这样的操作。 任何拥有锁的代码都必须是原 阅读全文
posted @ 2018-03-17 15:07 流浪的Coder 阅读(783) 评论(0) 推荐(0)
摘要: <什么是中断> 计算停下当前处理任务,并保存现场,转而去处理其他是任务,当完成任务后再回到原来的任务中去。 <中断的分类> a:软中断 软中断时执行中断指令产生的,软中断不用施加中断请求信号,因此中断的产生的不是随机的而是由程序安排的。内核线程是实现软中断的助手。 b:硬中断 硬中断时由外部硬件产生 阅读全文
posted @ 2018-03-17 15:07 流浪的Coder 阅读(371) 评论(0) 推荐(0)
摘要: <背景> 在linux系统驱动程序中,因为要面临各种各样的硬件,字符设备,快设备,网络接口设备,USB设备,PCI设备,平台设备,混在设备 ,设备不同则所对应的驱动模型不同,这就导致我们要掌握众多的驱动模型,能从这些众多的驱动模型中找到共性,则是学号linux驱动的关键 <linux 驱动程序的编写 阅读全文
posted @ 2018-03-17 15:05 流浪的Coder 阅读(344) 评论(0) 推荐(0)
摘要: 《linux内核简介》 <linux系统架构> 系统架构 用户部分: 应用程序:GNU C 库内核部分:系统调用接口、内核、体系结构相关代码(与硬件相关的代码) 划分原因:不同的运行空间所能访问的寄存器,访问的设备是不一样,其目的就是为了保护操作系统 两种状态的转换:系统调用和硬件中断可以完成两种模 阅读全文
posted @ 2018-03-17 15:04 流浪的Coder 阅读(651) 评论(0) 推荐(0)
摘要: <访问流程> 驱动程序控制设备,其主要是通过访问设备中的寄存器来到达控制设备的目的,因此讨论如何访问硬件,其实质是研究如何访问寄存器。 <地址映射> 在linux系统中,无论是内核所使用地址还是应用程序所使用地址,都虚拟地址,然而芯片手册上锁给出的地址都是物理地址,因此驱动程序开发是第一步就是将物理 阅读全文
posted @ 2018-03-17 15:04 流浪的Coder 阅读(355) 评论(0) 推荐(0)
摘要: <文件系统定义> 怎么将文件和文件目录加载到linux内核中,这一种加载的方式就叫做文件系统 《建立根文件系统目录和文件》 <创建目录> 1)在linux系统中使用命令mkdir rootfs 创建一个文件夹 2)进入该文件夹依次批量的创建文件夹 bin dev etc lib proc sbin 阅读全文
posted @ 2018-03-17 15:03 流浪的Coder 阅读(1125) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 11 下一页