
【linux基础】
文章平均质量分 83
ForDream321
这个作者很懒,什么都没留下…
展开
-
等待队列
等待队列如何使用?分两步: 1. 为了使得等待进程在一个等待队列中睡眠,需要调用函数wait_event()函数。进程进入睡眠,将控制权释放给调度器。 2. 在内核中另一处,调用wake_up()函数唤醒等待队列中的睡眠进程。注:使用wait_event()函数使得进程睡眠;而在内核另一处有一个对应的wake_up()函数被调用。(一)初原创 2016-03-23 20:38:49 · 590 阅读 · 0 评论 -
【Linux基础系列之】platform虚拟总线
linux当中大多数的设备都是以paltform虚拟总线挂载上去的,这里以kernel/drivers/net/dm9000.c为例子分析一下,platform设备挂在过程;(1)device通常在kernel/arch/arm/mach-xx/mach-xx.c 里面存放着device设备的一些信息;static struct resource smdkv210_dm9000原创 2015-03-04 22:38:25 · 721 阅读 · 1 评论 -
【Linux基础系列之】i2c架构简析
先看下源码目录:drivers/i2c/• i2c-core.c这个文件实现了I2C核心的功能以及/proc/bus/i2c*接口。• i2c-dev.c实 现了I2C适配器设备文件的功能,每一个I2C适配器都被分配一个设备。通过适配器访问设备时的主设备号都为89,次设备号为0~255。应用程序通过 “i2c-%d” (i2c-0, i2c-1, ..., i2c-10, ..原创 2015-03-09 21:42:26 · 777 阅读 · 0 评论 -
【Linux基础系列之】中断系统(2)-下半部
前面一篇文章分析了中断系统的框架,这篇文章主要讲中断的下半部份的机制;(一)概述 linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable task(bottom half),属于不那么紧急需要处理的事情。在执行bottom half的时候,是开中断的。系统可以把实时性的操作或者硬件的一些ACK放在上半部分来做,其他数据处理,原创 2017-06-05 18:34:00 · 975 阅读 · 0 评论 -
【Linux基础系列之】内存管理(1)-buddy和slub算法
Linux内存管理是一个很负责的系统,也是linux的精髓之一,网络上讲解这方面的文档也很多,我把这段时间学习内存管理方面的知识记录在这里,涉及的代码太多,也没有太多仔细的去看代码,深入解算法,这篇文章就当做内存方面学习的一个入门文档,方便以后在深入学习内存管理源码的一个指导作用;原创 2017-06-30 17:01:04 · 5926 阅读 · 0 评论 -
【Linux基础系列之】内存管理(2)-高端内存
常用内存分配和高端内存分配使用原创 2017-07-04 17:14:42 · 776 阅读 · 0 评论 -
【Linux基础系列之】设备模型
linux设备模型是linux比较基础的知识,虽然有很多资料很多书籍都会去讲设备模型,这里以我自己的方式清晰的描述下linux设备模型;原创 2017-07-27 17:53:50 · 577 阅读 · 0 评论 -
【Linux基础系列之】同步机制介绍
当多核CPU同时执行一段代码的时候,就容易发生抢占,这段代码可以叫做临界区,其他内核控制路径能够进入临界区前,进入临界区前的内核控制路径必须全部执行完这段代码,为了避免这种共享数据发生竞争,就需要采用同步技术,本文就简单介绍linux内核当中的一些同步原语;(一) per-cpu变量 最简单的同步技术就是把内核变量申明为per-cpu变量,这个变量只会在本地CPU操作时调用,就不用考虑其他CPU原创 2017-07-22 16:43:19 · 749 阅读 · 0 评论 -
【Linux基础系列之】gpio系统
上一章介绍了pinctrl系统管理所有的物理pin脚,gpio也是pin脚的一种,所以需要某个gpio的时候就需要通过pinctrl把某个pin脚设置为gpio功能就即可;在pinctrl系统提供了操作pin脚的统一API接口,同时也可以用gpio的API来操作,在request gpio表明该pin没有被挪为他用之后,就可以设置该GPIO的输入输出,驱动能力,或者debounce功能等;原创 2017-08-18 15:55:35 · 2143 阅读 · 0 评论 -
【Linux基础系列之】中断系统(1)-框架
本文分为两篇,第一篇主要描述中断控制器和中断处理流程;第二篇主要讲述中断的下半部分处理机制包括softirq,tasklet,workqueue;Linux中断系统(1)-中断框架 Linux中断系统(2)-中断下半部(一)中断综述 中断硬件系统主要有各个外设、中断控制器(Interrupt Controller)和CPU组成。各个外设提供irq request line连接到中断控制器,在发原创 2017-05-26 19:51:49 · 2231 阅读 · 0 评论 -
【Linux基础系列之】pinctrl系统
pinctrl子系统用于控制管脚管理soc的管脚,它通常可以以一组寄存器的形式存在,用于使能独立或成组管脚的复用、设置负载电流、设置驱动能力等;原创 2017-08-17 17:25:47 · 4043 阅读 · 2 评论 -
Flash基础知识
http://www.cnblogs.com/sankye/articles/1638852.html向作者Sankye致敬【编写驱动之前要了解的知识】1. 硬件特性:【Flash的硬件实现机制】Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device)转载 2015-04-01 21:44:36 · 23440 阅读 · 2 评论 -
linux usb枚举过程
http://blog.youkuaiyun.com/myarrow/article/details/82700291. 枚举是什么? 枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了。 USB架构中转载 2015-03-09 21:05:59 · 1160 阅读 · 0 评论 -
【Linux基础系列之】input系统简析
输入子系统由驱动层(Drivers),输入子系统核心层(Input Core)和事件处理层(EventHandler)三部份组成;从设备驱动开始分析,以tp驱动为例,在tp驱动probe的过程当中,创建input_dev;struct input_dev { const char *name; const char *phys; const char *uniq; stru原创 2015-03-03 21:41:11 · 841 阅读 · 0 评论