DMB DSB ISB以及SMP CPU 乱序

作者:forion 发布于:2014-8-15 16:57

不知道大家对DMB DSB ISB以及SMP CPU 乱序,有没有认识。我想在这个讨论贴上面来跟大家讨论一下。

标签: SMP 内存屏障 DSB DMB ISB

评论(11) 浏览(31396)

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驱动工作的工程师)有所帮助。


阅读全文>>

标签: 软件框架 中断子系统

评论(84) 浏览(108570)

开源的RF硬件平台

作者:linuxer 发布于:2014-8-13 9:13

http://greatscottgadgets.com/hackrf/

http://www.hackrf.net/


评论(13) 浏览(18946)

启动regulator framework分析任务

作者:linuxer 发布于:2014-8-12 19:36

电源管理也是很有意思的内核模块,原来蜗窝同学写了一些文章,我准备狗尾续貂,启动regulator framework分析任务

评论(4) 浏览(11064)

建立讨论区的原因

作者:linuxer 发布于:2014-8-10 23:26

这个网站的名字叫做“蜗窝科技”,所谓蜗窝,就是蜗牛之家的意思,为那些愿意慢下来细细品味linux kernel中各种技术的“蜗牛”提供一个可以交流的平台。不过建站半年来,似乎广大人民群众参与度不够,使得这个网站看起来更像一个个人的博客。一个人的能力是有限的,写文章需要时间,在工作比较忙碌的时候,其实很难保持不断的更新。

基于上面的想法,一个叫做讨论区的板块被创建了。发表在其他的板块的文章都会是一个成体系的文章,描述技术的某个方面。但是,发表在这个板块的文章没有这个限制,一句感悟、一句抱怨、一点建议、技术问题、一些天马行空的想法等等都可以随意在这里交流,没有任何的限制,而且,这里的文章不会出现在主页,大家不必有心理压力,尽情的灌水、吐槽吧~~~~

评论(1) 浏览(8673)

这是一篇发布在讨论区的测试文章

作者:admin 发布于:2014-8-9 17:52

最终目的不让它出现在首页文章页中。

评论(0) 浏览(8412)

傅立叶级数(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?

阅读全文>>

标签: 傅立叶级数 Fourier Series

评论(14) 浏览(15574)

Linux kernel的中断子系统之(六):ARM中断处理过程

作者:linuxer 发布于:2014-8-4 18:26 分类:中断子系统

本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述:

1、第二章描述了中断处理的准备过程

2、第三章描述了当发生中的时候,ARM硬件的行为

3、第四章描述了ARM的中断进入过程

4、第五章描述了ARM的中断退出过程

本文涉及的代码来自3.14内核。另外,本文注意描述ARM指令集的内容,有些source code为了简短一些,删除了THUMB相关的代码,除此之外,有些debug相关的内容也会删除。

阅读全文>>

标签: irq handler 中断处理

评论(100) 浏览(100567)

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来解决这些问题。

阅读全文>>

标签: pin control

评论(43) 浏览(119106)

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

评论(51) 浏览(110320)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog