摘要:
《内核链表》 内核链表即,我么在一个链表中插入或删除一个数据,都需要自己编写代码,相当的麻烦,怎么解决这个问题呢,为了更加方便的解决这个问题,linux中就产生了内核链表,以后想要在链表中插入数据或删除数据时,只需要调用函数就可以了。 <链表对比> 链表是一种数据结构,他通过指针将一系列的数据节点连 阅读全文
摘要:
<linux 内存管理模型> 下面这个图将Linux内存管理基本上描述完了,但是显得有点复杂,接下来一部分一部分的解析。 内存管理系统可以分为两部分,分别是内核空间内存管理和用户空间内存管理: ————内存管理子系统的职责是:进程请求内存时分配可用内存,进程释放内存后回收内存,以及跟踪系统内存使用情 阅读全文
摘要:
<网络知识> a:网络模型 OSI模型 TCP模型 虽然OSI模型看着挺完美的,但是过于复杂,这样就会导致不实用,在Linux系统中用的是TCP模型。每一层都是一种协议,系统对要发送的数据进行层层数据封装,就像洋葱层层刨去还原数据。 <Linux网络驱动特点> a:对于网络接口的常用文件操作(读,写 阅读全文
摘要:
<作用> 电子设备中有很多IIC设备之间需要进行相互通信,这样就产生了IIC总线,常用来实现设备之间的数据通信。 <IIC总线结构> IIC总线只有两条线,一条是串行数据线(SDA),另外一条是串行时钟线(SCL). 注:每一个连接到总线上的设备都有一个唯一的地址可以访问(这一点有点像USB设备) 阅读全文
摘要:
字符设备之混杂设备: 定义混杂设备: struct misdevice{ int minor; //为什么这里只有次设备号,因为混杂设备是一种在 /////////////////////////Linux系统默认主设备号为10 的特殊字符设备。 const char *name; const st 阅读全文
摘要:
<什么是中断> 计算停下当前处理任务,并保存现场,转而去处理其他是任务,当完成任务后再回到原来的任务中去。 <中断的分类> a:软中断 软中断时执行中断指令产生的,软中断不用施加中断请求信号,因此中断的产生的不是随机的而是由程序安排的。内核线程是实现软中断的助手。 b:硬中断 硬中断时由外部硬件产生 阅读全文
摘要:
<背景> 在linux系统驱动程序中,因为要面临各种各样的硬件,字符设备,快设备,网络接口设备,USB设备,PCI设备,平台设备,混在设备 ,设备不同则所对应的驱动模型不同,这就导致我们要掌握众多的驱动模型,能从这些众多的驱动模型中找到共性,则是学号linux驱动的关键 <linux 驱动程序的编写 阅读全文
摘要:
<背景> PCI设备有许多地址配置的寄存器,初始化时这寄存器来配置设备的总线地址,配置好后CPU就可以访问该设备的各项资源了。(提炼:配置总线地址) <配置寄存器> (1)256字节的PCI配置空间分为64字节的头标区和192字节的设备相关区两部分。头标区的各个寄存器用来唯一地识别设备;设备相关区则 阅读全文
摘要:
<字符设备> 字符设备的上层没有磁盘文件系统,所以字符设备的file_operations成员函数就直接由字符设备驱动提供(一般字符设备都会实现相应的fops集),因此file_operations 也就成为了字符设备驱动的核心。 <块设备> 对于块设备而言,ext2,jiffs2,fat等文件系统 阅读全文
摘要:
<linux系统7大子系统> a:SCI(system call interface) ————用户程序通过软件中断后,调用系统内核提供的功能,这个在用户空间和内核提供的服务之间的接口称为系统调用。系统调用是Linux内核提供的,用户空间无法直接使用系统调用。在用户进程使用系统调用必须跨越应用程序和 阅读全文