初探linux子系统集之i2c子系统(一)】的更多相关文章

I2c子系统在进公司来的时候就学习过了,可是那是还不是很熟悉linux中的i2c子系统,就没有细看.记得当初很想熟悉linux中的各种总线驱动,想专门写一个关于总线驱动的专集,后来发现好像就没有几个,粗粗的写完了,也就是和菜鸟一起学linux总线驱动的专集.现在子系统又要开始讲到i2c了,那么就偷个小懒,参考一下下. 讲到了i2c子系统,一开始便是要讲解下i2c的协议了,从最下面的协议开始熟悉,因为一般调试的时候就是看波形,有没有clock,有没有data. I2C总线由两根线组成,即串行数据(…
大概也是前年了,一直没有把那个i2c的子系统讲解完,这里偷个懒,把以前整理的i2c相关的知识再梳理一下,做个了结,然后再去学习timer子系统. 先看下i2c在内核中的代码分布: obj-$(CONFIG_I2C_BOARDINFO) += i2c-boardinfo.o obj-$(CONFIG_I2C) += i2c-core.o obj-$(CONFIG_I2C_SMBUS) += i2c-smbus.o obj-$(CONFIG_I2C_CHARDEV) += i2c-dev.o obj…
巴西世界杯,德国7比1东道主,那个惨不忍睹啊,早上起来看新闻,第一眼看到7:1还以为点球也能踢成这样,后来想想,点球对多嘛6比1啊,接着就是各种新闻铺天盖地的来了.其实失败并没有什么,人生若是能够成功一次,那么再多的失败也是值得的,脚踏实地,失败了再次爬起来.很多时候,在一切都那么顺利的情况下,反而觉得没有啥意思,有一些挑战,一些失败,一些打击,接着,就会很努力很努力地去做,慢慢地就会被自己征服,很喜欢这种感受,废话说多了,还是接着研究led子系统吧. 对于led子系统中,有那么多得trigge…
本文转载自:http://blog.csdn.net/eastmoon502136/article/details/37606487 巴西世界杯,德国7比1东道主,那个惨不忍睹啊,早上起来看新闻,第一眼看到7:1还以为点球也能踢成这样,后来想想,点球对多嘛6比1啊,接着就是各种新闻铺天盖地的来了.其实失败并没有什么,人生若是能够成功一次,那么再多的失败也是值得的,脚踏实地,失败了再次爬起来.很多时候,在一切都那么顺利的情况下,反而觉得没有啥意思,有一些挑战,一些失败,一些打击,接着,就会很努力很…
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正 #include <linux/kernel.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/cdev.h> #include <linux/i2c.h> #include <linux/fs.h> #include <asm/uaccess.h> #define…
Linux内核中,SPI和I2C两个子系统的软件架构是一致的,且Linux内核的驱动模型都以bus,driver,device三种抽象对象为基本元素构建起来.下文的分析将主要用这三种抽象对象的创建过程及其相互调用关系和作用来进行说明. 1.      SPI各对象的初始流程 1.1 创建spi_bus_type总线 postcore_initcall(抽象层spi.c中) bus_register(&spi_bus_type); class_register(&spi_master_cla…
因为现在的linux虽然还是可以使用低精度的timer,但是趋势是高精度hrtimer,所以上一篇试着翻译一下hrtimer的一些介绍,翻译的不是很好,看来英语还得好好学习啊,下面还是好好学习下linux的timer子系统吧,首先对于网上的一些介绍,看下整个框架图: 从上图可以得知,首先最底层是cpu的本地timer模块了,什么都得依赖于这个最底层硬件.然后是时钟源clock source模块,时钟事件clock event模块了,这两个是一个抽象,能提供时钟的都是时钟源,能触发one-shot…
一般来说要让整个linux系统跑起来,那么一个必须的就是linux的时钟,也就是时间子系统了,这里正好工作需要,那么就研究下linux下的时间子系统了. linux内核必须完成两种主要的定时测量.一个是计时,保存当前的时间和日期,以便能通过time(),gettimeofday()等系统调用,返回给用户程序,另一个是定时,这种机制主要是告诉内核或者应用程序,某一时间间隔已经过去了,触发回调函数,然后做一些事情. 对于硬件主要有实时时钟RTC和CPU本地Timer,其中RTC是cpu外部的其他芯片…
想着博客中还没有翻译过一篇文章,虽然英文水平有限,但是借助google翻译慢慢地翻译出一篇文章也是不错的选择.那就来学习下hrtimer的文档吧,翻译的略搓,可以直接跳过这篇,这里仅作为学习的过程!^_^ hrtimers - 高精度内核timers子系统 ----------------------------------------------------     这个补丁是介绍一个新的高精度内核timers子系统.     可能有人会问:我们已经有了一个timer子系统(kernel/ti…
就像学编程第一个范例helloworld一样,学嵌入式,单片机.fpga之类的第一个范例就是点亮一盏灯.对于庞大的linux系统,当然可以编写一个字符设备驱动来实现我们需要的led灯,也可以直接利用gpio口,应用程序来拉高拉低管脚控制.不过,既然linux系统自己本来就带有led子系统,那么就可以好好利用之.好处不用多说了,主要对于应用层来说,不同平台都用linux的led子系统,那么应用程序不用做任何的改变,就可以在新的平台上运行,可移植性好. linux的led子系统的源码路径: Incl…