DMB DSB ISB以及SMP CPU 乱序
作者:forion 发布于:2014-8-15 16:57
不知道大家对DMB DSB ISB以及SMP CPU 乱序,有没有认识。我想在这个讨论贴上面来跟大家讨论一下。
Linux kernel的中断子系统之(一):综述
作者:linuxer 发布于:2014-8-14 19:12 分类:中断子系统
一个合格的linux驱动工程师需要对kernel中的中断子系统有深刻的理解,只有这样,在写具体driver的时候才能:
1、正确的使用linux kernel提供的的API,例如最著名的request_threaded_irq(request_irq)接口
2、正确使用同步机制保护驱动代码中的临界区
3、正确的使用kernel提供的softirq、tasklet、workqueue等机制来完成具体的中断处理
基于上面的原因,我希望能够通过一系列的文档来描述清楚linux kernel中的中断子系统方方面面的知识。一方面是整理自己的思绪,另外一方面,希望能够对其他的驱动工程师(或者想从事linux驱动工作的工程师)有所帮助。
开源的RF硬件平台
作者:linuxer 发布于:2014-8-13 9:13
http://greatscottgadgets.com/hackrf/
http://www.hackrf.net/
启动regulator framework分析任务
作者:linuxer 发布于:2014-8-12 19:36
电源管理也是很有意思的内核模块,原来蜗窝同学写了一些文章,我准备狗尾续貂,启动regulator framework分析任务建立讨论区的原因
作者:linuxer 发布于:2014-8-10 23:26
这个网站的名字叫做“蜗窝科技”,所谓蜗窝,就是蜗牛之家的意思,为那些愿意慢下来细细品味linux kernel中各种技术的“蜗牛”提供一个可以交流的平台。不过建站半年来,似乎广大人民群众参与度不够,使得这个网站看起来更像一个个人的博客。一个人的能力是有限的,写文章需要时间,在工作比较忙碌的时候,其实很难保持不断的更新。
基于上面的想法,一个叫做讨论区的板块被创建了。发表在其他的板块的文章都会是一个成体系的文章,描述技术的某个方面。但是,发表在这个板块的文章没有这个限制,一句感悟、一句抱怨、一点建议、技术问题、一些天马行空的想法等等都可以随意在这里交流,没有任何的限制,而且,这里的文章不会出现在主页,大家不必有心理压力,尽情的灌水、吐槽吧~~~~
这是一篇发布在讨论区的测试文章
作者:admin 发布于:2014-8-9 17:52
最终目的不让它出现在首页文章页中。傅立叶级数(Fourier Series)和周期现象
作者:linuxer 发布于:2014-8-7 20:09 分类:基础学科
如果你仔细观察,工作和生活中充满了周期现象:旁边linux driver工程师在调试audio driver的时候播放的1kHz的正弦信号,周末去公园游玩,游船推开水面的波纹,硬件工程师调试硬件电路的时候,示波器显示出来的晶振方波信号……
所谓周期现象具体包括时间上的周期现象和空间上的周期现象。1kHz的audio当然是时间上的周期信号,而水面的波形就是空间上的周期现象。对于空间上的周期现象,实际上就是一个pattern不断的重复。
对 于一个普通的人,我们可以感知时间的流逝,也可以感知空间的变化(我们可以通过眼睛、耳朵、触觉等build in在身体上的sensor来感知时空中的周期现象),因此,周期现象对于我们来讲就像呼吸一样自然。然而,你是否愿意从另外一个侧面来感知世界?那个世 界就是频域(frequency domain)的世界。描述时间上的周期现象我们使用频率(frequecy)这个词,也就是一秒重复的次数。
Can you feel frequency of the world?
Linux kernel的中断子系统之(六):ARM中断处理过程
作者:linuxer 发布于:2014-8-4 18:26 分类:中断子系统
本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述:
1、第二章描述了中断处理的准备过程
2、第三章描述了当发生中的时候,ARM硬件的行为
3、第四章描述了ARM的中断进入过程
4、第五章描述了ARM的中断退出过程
本文涉及的代码来自3.14内核。另外,本文注意描述ARM指令集的内容,有些source code为了简短一些,删除了THUMB相关的代码,除此之外,有些debug相关的内容也会删除。
linux内核中的GPIO系统之(2):pin control subsystem
作者:linuxer 发布于:2014-7-26 18:24 分类:GPIO子系统
在linux2.6内核上工作的嵌入式软件工程师在pin control上都会遇到这样的状况:
(1)启动一个新的项目后,需要根 据硬件平台的设定进行pin control相关的编码。例如:在bootloader中建立一个大的table,描述各个引脚的配置和缺省状态。此外,由于SOC的引脚是可以复用 的,因此在各个具体的driver中,也可能会对引脚进行的配置。这些工作都是比较繁琐的工作,需要极大的耐心和细致度。
(2)发现某个driver不能正常工作,辛辛苦苦debug后发现仅仅是因为其他的driver在初始化的过程中修改了引脚的配置,导致自己的driver无法正常工作
(3)即便是主CPU是一样的项目,但是由于外设的不同,我们也不能使用一个kernel image,而是必须要修改代码(这些代码主要是board-specific startup code)
(4)代码不是非常的整洁,cut-and-pasted代码满天飞,linux中的冗余代码太多
作 为一个嵌入式软件工程师,项目做多了,接触的CPU就多了,摔的跤就多了,之后自然会去思考,我们是否可以解决上面的问题呢?此外,对于基于ARM core那些SOC,虽然表面上看起来各个SOC各不相同,但是在pin control上还有很多相同的内容的,是否可以把它抽取出来,进行进一步的抽象呢?新版本中的内核(本文以3.14版本内核为例)提出了pin control subsystem来解决这些问题。
Linux内核中的GPIO系统之(3):pin controller driver代码分析
作者:linuxer 发布于:2014-7-22 20:37 分类:GPIO子系统
对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,它驱动的硬件叫做pin controller(一般ARM soc的datasheet会把pin controller的内容放入GPIO controller的章节中),主要功能包括:
(1)pin multiplexing。基于ARM core的嵌入式处理器一般会提供丰富的功能,例如camera interface、LCD interface、USB、I2C、SPI等等。虽然处理器有几百个pin,但是这些pin还是不够分配,因此有些pin需要复用。例如:127号 GPIO可以做一个普通的GPIO控制LED,也可以配置成I2C的clock信号,也可以配置成SPI的data out信号。当然,这些功能不可能同时存在,因为硬件信号只有一个。
(2)pin configuration。这些配置参数包括:pull-up/down电阻的设定, tri-state设定,drive-strength的设定。
本 文主要描述pin control subsystem中的low level driver,也就是驱动pin controller的driver。具体的硬件选用的是S3C2416的硬件平台。既然是代码分析,本文不是非常多的描述框架性的内容,关于整个pin control subsystem软件结构的描述请参考TODO。
阅读本文需要device tree的知识,建议首先阅读device tree代码分析。
标签: driver pin controller
功能
最新评论
- 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)