傅立叶级数(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) 浏览(8782)

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 中断处理

评论(94) 浏览(60625)

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) 浏览(84179)

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

评论(42) 浏览(75629)

linux内核中的GPIO系统之(1):软件框架

作者:linuxer 发布于:2014-7-21 14:40 分类:GPIO子系统

作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务。对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非 常简单的任务,例如GPIO driver、LED driver。往往CPU datasheet的关于GPIO或者IO ports的章节都是比较简单的,非常适合刚入行的工程师。虽然GPIO子系统相关的硬件比较简单,没有复杂的协议,不过,对于软件抽象而言,其分层次的 软件思想是每个嵌入式软件工程师需要掌握的内容。

我更倾向使用GPIO系统这个名字来代替GPIO driver这个名字,GPIO driver仅仅包含了pin signal状态控制和读取的内容,而GPIO系统包括了pin multiplexing、pin configuration、GPIO control、GPIO interrupt control等内容。本文主要是以3.14内核作为例子,讲述linux kernel中GPIO系统的软件框架。

阅读全文>>

标签: GPIO 软件框架

评论(48) 浏览(56275)

ACCESS_ONCE宏定义的解释

作者:linuxer 发布于:2014-7-17 12:34 分类:进程管理

在阅读RCU代码的时候遇到了ACCESS_ONCE这个宏定义,感觉比较有意思,因此独立出来一篇文档来描述它。

阅读全文>>

标签: ACCESS_ONCE

评论(0) 浏览(14239)

智慧家庭之我见_多媒体篇

作者:wowo 发布于:2014-7-9 9:01 分类:技术漫谈

引子:这是一个移动互联的时代,最后的胜者,一定具备超强的整合能力。 

蜗蜗关注智慧家庭由来已久,只是这些年从事着完全不同的行业,道不同,不相谋。可能是传说中的七年之痒吧,终于决定对自己的工作以及职业规划做出一个变动。以此为契机,将自己对智慧家庭的一些思考,记录于此。可能会很幼稚,希望各位看官不要见笑,并不吝赐教。

本文主要是对智慧家庭中的多媒体设备的思考。何为多媒体设备呢?看看下面的事物:智能路由器,智能手机,PC,笔记本电脑,平板电脑,智能电视盒,智能电视,智能手表,云存储。相信大家都已经很熟悉了,它们就是本文谈论的对象。它们的本质,就是以满足人们对沟通、影音、游戏、休闲、娱乐为目的,在性能和便携性(重量和大小)之间摇摆与妥协。

阅读全文>>

标签: 智慧家庭 整合 多媒体 plan9

评论(13) 浏览(6426)

GIC驱动代码分析(废弃)

作者:linuxer 发布于:2014-7-4 14:34 分类:中断子系统

GIC(Generic Interrupt Controller)是ARM公司提供的一个通用的中断控制器。GIC通过AMBA(Advanced Microcontroller Bus Architecture)这样的片上总线连接到一个或者多个ARM processor上。本文主要分析了linux kernel中GIC中断控制器的驱动代码。

具体的分析方法是按照source code为索引,逐段分析。对于每一段分析的代码,力求做到每个细节都清清楚楚。这不可避免要引入很多对GIC的硬件描述,此外,具体GIC中断控制器的 驱动代码和linux kernel中断子系统的交互也会描述,但本文不会描述linux kernel的generic interrupt subsystem。

本文以OMAP4460这款SOC为例,OMAP4460内部集成了GIC的功能。具体的linux kernel的版本是linux3.14.。

阅读全文>>

标签: GIC 代码分析

评论(19) 浏览(31464)

在PowerShell中使用Vim

作者:wowo 发布于:2014-6-18 11:41 分类:软件开发

闲来无事,买了一个Win8系统的小平板,带键盘,准备打造成专门用来写博客的工具(本文就是用它写的第一篇)。捣鼓一圈之后,首先要解决的是用什么看代码。在PC时代,习惯了Linux命令行的方式,一般都是Windows系统+VMWare虚拟机+Linux系统+Vim+SecureCRT,但是这个庞大配置,显然不适合小平板。于是蜗蜗就打起PowerShell的主意了。

蜗蜗想要的无非就是一个命令行的环境,加上Vim工具。而微软在WIN7、WIN8时,就在系统中集成了一个Shell工具----PowerShell,这个工具虽然没有Linux系统的Shell强大,但相比Windows的Command Line,还是强大不少。那是否可以利用它呢?答案是肯定的。

阅读全文>>

标签: vim win8 powershell

评论(6) 浏览(26197)

基本电路概念之(二):什么是电容?

作者:linuxer 发布于:2014-6-17 19:48 分类:基础学科

我儿子对电路板有一种近乎疯狂的痴迷,每次周末加班的时候,他总是恳求我带他一起到公司,就是为了能够看一看电路板、看一看电路焊接过程。为了不影 响工作,我只能是找一些废旧的电路板,加上从蜗窝同学那里搜刮来的电烙铁给小朋友进行电路焊接演示。废旧电路板上有不少的器件,于是问题少年的问题就来 了,芯片里面有什么?电路板是几层的?电容的内部结构是什么?……于是乎钳子、起子、剪刀等工具不断的登场,我们家里就是一片狼籍,各种电子元件支离破 碎……

其实打开一个普通的电解电容,里面的结构很简单,两个铝箔,一个绝缘纸卷在一起放到一个圆柱形的容器中,两个铝箔引出电容器的两个引 脚。那么它的具体功能是什么呢?当然,给小朋友解释很简单:就是用来存储小电子的,不过作为工程师,我们当然不能那么肤浅,本文的主题就一个:详细描述电 容的概念。

作为一个“数学控”,不拽上点数学总是觉得少了点什么。section 2描述了理解后续内容需要的数学基础,理解这个章节的内容需要单变量微积分和基本向量的知识。如果阅读者觉得痛苦,那么不要犹豫,直接跳过这个章节。 section 3描述了一些物理学的基础,如果这也不是你的菜,那么我建议你记住计算平板电容之间电场的公式即可,其他的可以无视。section 4主要描述电容的概念,这是本文的核心内容。

阅读全文>>

标签: 电容

评论(4) 浏览(14591)

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