Linux I2C framework(1)_概述
作者:wowo 发布于:2016-2-14 22:01 分类:通信类协议
I2C协议是嵌入式系统中广泛使用的一类通信协议,主要用于CPU和各种外设之间的低速数据通信。Linux kernel使用I2C framework抽象、管理相应的资源,并以各种形式,向各类使用者提供API。另外,作为总线(bus)的一种,I2C framework的实现体现了linux设备模型的精髓,值得研究与学习。这就是攥写“Linux I2C framework”系列文章的缘由和目的。
按照分析各类framework的老规矩,蜗蜗会从4个角度分4篇文章介绍I2C framework:
1)Linux I2C framework的整体介绍,包括基础知识、软件框架、API汇整等。就是本文。
2)从Provider的角度,介绍怎么借助I2C framework管理I2C相关的SOC资源。换句话说,就是怎么编写一个I2C driver。具体可参考“Linux I2C framework(2)_I2C provider”。
3)从Consumer的角度,介绍I2C framework为使用者提供了哪些功能、哪些API,以及怎样利用I2C framework编写程序。具体可参考“Linux I2C framework(3)_I2C consumer”。
4)从内部实现的角度,分析I2C framework的实现逻辑。具体可参考“Linux I2C framework(4)_I2C core”。
标签: Linux Architecture framework I2C
Linux2.6.23 :sleepable RCU的实现
作者:linuxer 发布于:2016-2-4 18:38 分类:内核同步机制
由于曾经在Linux2.6.23上工作了多年,我对这个版本还是非常有感情的(抛开感情因素,本来应该选择longterm的2.6.32版本来分析 的,^_^),本文主要就是描述Linux2.6.23内核版本中对RCU有哪些修正。所谓修正主要包括两个部分,一部分是bug fixed,一部分是新增的特性。标签: SRCU
显示技术介绍(3)_CRT技术
作者:wowo 发布于:2016-1-30 22:18 分类:显示
CRT(Cathode Rays Tube,阴极射线管)是最原始的电子显示技术,在上世纪被广泛运用于模拟电视(Analog television)系统中。本文将以模拟电视系统为背景,介绍CRT显示技术的原理、特性以及一些关键术语。
众所周知,CRT显示已经逐步被数字显示取代,已有退出历史舞台之势,本文之所以介绍它,原因有三:
1)模拟电视是我们这一代人童年的记忆,美好又神秘。现在回头去看,发觉其中的技术是那么的简单、有趣,值得一说。
2)帮助理解显示时序(video mode,or display timings)。对写过显示驱动的人来说,显示屏的那长长一串的时序相关的参数(xres, yres, hsync len, vsync len, left margin, etc.),足以让自己崩溃。追根溯源,它们产生于CRT技术,现在之所以还存在,很大程度上是CRT的延续,没有太多实质的意义。
3)现在很多前沿的显示技术,如PDP、FED等,都和CRT的工作机制类似(具体可以参考“显示技术介绍(2)_电子显示的前世今生”中的介绍)。理解CRT是理解这些新技术的基础。
标签: CRT scan blank unblank front porch back
Linux2.6.11版本:classic RCU的实现
作者:linuxer 发布于:2016-1-27 18:31 分类:内核同步机制
无论你愿意或者不愿意,linux kernel的版本总是不断的向前推进,做为一个热衷于专研内核的工程师,最大的痛苦莫过于此:当你熟悉了一个版本的内核之后,内核已经推进到一个新的版 本,你曾经熟悉的内容可能会变得陌生(这里主要说的是该模块的内部实现,实际上,内核中的每一个子系统都是会尽量保持接口API的不变)。怎么应对这种变 化呢?一方面,具体的实现可能千差万别,但是基本的概念是一样的,无论哪一个版本的内核,总是能够理解一个内核子系统的基本概念和运作机理。另外一方面, 不同版本之间的实现不同往往是有原因的,新版本中具体实现的不同往往是针对旧版本的问题而改进的,如果你能够理清不同版本之间的差异以及背后的原因,那么 你其实也在不断的加深对计算机系统的理解(不断的迭代是一个不错的学习linux内核的方法)。
因此,在进入具体的Linux2.6.11版本内核RCU实现之前,我们首先描述why,也就是说为何修改RCU算法实现?旧内核有哪里不足,新的内核优点是什么?随后需要描述的是如何改进,最后,我们描述的是Linux2.6.11版本内核RCU模块的具体实现。
标签: Read-Copy-Update
Linux 2.5.43版本的RCU实现(废弃)
作者:linuxer 发布于:2016-1-19 12:13 分类:内核同步机制
RCU的工作原理虽然简单,但是实现产品级别的RCU同步机制并不是一个简单的事情,看看目前kernel中庞大的RCU数据结构,这让我望而却 步。蜗窝科技在撰写其他文档的时候,往往喜欢使用最新的内核,本文和其他文章不一样,本文选择了第一个引入RCU的内核版本,即2.5.43。
本文主要介绍了linux2.5.43版本上的RCU实现。
标签: RCU
蓝牙协议分析(2)_协议架构
作者:wowo 发布于:2016-1-14 22:20 分类:蓝牙
本文是蓝牙协议分析的第二篇文章,在“蓝牙协议分析(1)_基本概念”的基础上,从整体架构的角度,了解蓝牙协议的组成,以便加深对蓝牙的理解。标签: Bluetooth l2cap profile hci gap
perfbook memory barrier(14.2章节)中文翻译(下)
作者:linuxer 发布于:2016-1-11 19:26 分类:内核同步机制
终于完成了perfbook中所有关于memory barrier的内容了,站在当前的时间点上,回头看看翻译perfbook之前的我,那时候是多么的幼稚, 对memory barrier理解多么肤浅。当然,也许随着时间的流逝,5年之后才回头看看今天的我,也会发现:即便是通读了perfbook的memory barrier的内容,其实仍然肤浅,仍然没有理解其精髓。究其原因,一方面,学习的过程总是螺旋式上升的,在当前的技术背景下,我只能到达目前的状 态,要进一步提高,需要在计算机体系结构、编译原理……方面有所突破。另外一方面,技术在无情的进步,如果停在原地注定是会被淘汰的。
生命不息,奋斗不止,还是要象蜗牛一样慢慢前行……
Why Memory Barriers中文翻译(下)
作者:linuxer 发布于:2016-1-5 18:09 分类:内核同步机制
在上一篇why memory barriers文 档中,由于各种原因,有几个章节没有翻译。其实所谓的各种原因总结出一句话就是还没有明白那些章节所要表达的内容。当然,对于一个真正的热爱钻研的 linuxer,不理解的那些章节始终都是一块心病。终于,在一个月黑风高的夜晚,我发了一封邮件给perfbook的作者Paul,请其指点一二。果然 是水平越高越平易近人,很快,大神回复了,给出了一些他的意见,大意就是不必纠结于具体的细节,始终focus在几个基本的规则上就OK了。受此鼓舞,我 还是坚持把剩余章节翻译出来,于是形成了本文。Linux graphic subsystem(2)_DRI介绍
作者:wowo 发布于:2015-12-27 22:02 分类:图形子系统
上篇文章(Linux graphic subsytem(1)_概述)介绍了linux图形子系统基本的软件框架,以及GUI、Windowing system、3D渲染等基本概念。文中提到了linux DRI(Direct Render Infrastructure)框架,但限于篇幅,没有过多介绍。
蜗蜗觉得,DRI在当前(或者说将来)的linux图形子系统中,有着举足轻重的地位,甚至可以说是新的linux图形框架核心思想的体现。本文将基于linux图形框架的发展历程,从Why、What和How三个角度,介绍DRI框架。
perfbook memory barrier(14.2章节)的中文翻译(上)
作者:linuxer 发布于:2015-12-25 12:18 分类:内核同步机制
perfbook是一本值得反复阅读的好书,这一点是毋庸置疑的,不过你是选择阅读中文版本还是英文版本呢?当然,阅读中文版本相对要简单一些,毕 竟是母语,而且最重要的是阅读速度快(注:perfbook已经有了中文版本的翻译,叫做《深入理解并行编程V2.0》,多谢谢宝友/鲁阳/陈渝的辛苦劳 动),其实,每次遇到“快”的时候,我都本能的都要停下来再思考一下,我担心欲速则不达。知识的获取不可能是快的,就像看电影,当时的愉快的记忆不久就会 被时间抹去。因此,最终我选择了阅读英文版(参考中文版本),并顺便将我阅读的部分翻译出来。与其说是翻译给大家看,不如说是翻译给自己看,让自己对 memory barrier的理解更深入一些。
本文是对perfbook 14.2章节的中文翻译的上半部分,包括14.2.1小节到14.2.6小节。
标签: 内存屏障
功能
最新评论
- wangjing
写得太好了 - wangjing
写得太好了! - DRAM
圖面都沒辦法顯示出來好像掛點了。 - Simbr
bus至少是不是还有个subsystem? - troy
@testtest:只要ldrex-modify-strex... - gh
Linux 内核在 sparse 内存模型基础上实现了vme...
文章分类
随机文章
文章存档
- 2025年4月(5)
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)