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 软件框架

评论(49) 浏览(89579)

ACCESS_ONCE宏定义的解释

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

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

阅读全文>>

标签: ACCESS_ONCE

评论(0) 浏览(21624)

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

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

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

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

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

阅读全文>>

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

评论(13) 浏览(9789)

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

在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

评论(7) 浏览(34152)

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

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

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

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

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

阅读全文>>

标签: 电容

评论(5) 浏览(26131)

计算机科学基础知识(一):The Memory Hierarchy

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

一、前言

最近一个问题经常萦绕在我的脑海:一个学习电子工程的机械师如何称为优秀的程序员?(注:本文作者本科学习机械设计,研究生 转到电子工程系学习,毕业后却选择了系统程序员这样的职业)。经过思考,我认为阻挡我称为一个优秀程序员的障碍是计算机科学的理论知识。自然辩证法告诉我 们:理论源于实践,又指导实践,她们是相辅相成的关系。虽然从业十余年,阅code无数,但计算机的理论不成体系,无法指导工程面具体技能的进一步提升。

计算机科学博大精深,CPU体系结构、离散数学、编译器原理、软件工程等等。最终选择从下面这本书作为起点:

s2547828

本文就是在阅读了该书的第六章的一个读数笔记,方便日后查阅。

阅读全文>>

标签: Memory Hierarchy cache 存储体系

评论(27) 浏览(45867)

vim使用技巧摘录

作者:wowo 发布于:2014-6-10 16:16 分类:Linux应用技巧

平时读代码、写程序都是在vim(Vi Improved)下进行,总结了一些自己比较喜欢的技巧,贴出来和大家分享一下。

注:这些技巧只是蜗蜗比较喜欢,写在这里的主要目的是备份(以后换系统了,直接贴进去就可以了)。而每个人的习惯都不一样,因此仅供大家参考。

阅读全文>>

标签: vim vim_rc

评论(3) 浏览(17317)

Linux电源管理(5)_Hibernate和Sleep功能介绍

作者:wowo 发布于:2014-6-10 16:11 分类:电源管理子系统

Hibernate和Sleep两个功能是Linux Generic PM的核心功能,它们的目的是类似的:暂停使用——>保存上下文——>关闭系统以节电········>恢复系统——>恢复上下文——>继续使用。

本文以内核向用户空间提供的接口为突破口,从整体上对这两个功能进行介绍,并会在后续的文章中,分析它们的实现逻辑和执行动作。

顺便感概一下,虽然这些机制在Linux系统中存在很久了(类似的概念也存在于Windows系统中),但以蜗蜗的观察,它们被使用的频率并不是很高,特别是在PC上,大多数人在大多数时候选择直接关闭系统。阴错阳差的是,在很多嵌入式设备中,设计者会利用Sleep机制实现热关机功能,以此减少开机的时间。

阅读全文>>

标签: Linux PM STD STR wakeup_count

评论(43) 浏览(64476)

Device Tree(三):代码分析

作者:linuxer 发布于:2014-6-6 16:03 分类:统一设备模型

Device Tree总共有三篇,分别是:

1、为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因

2、Device Tree的基础概念(请参考DT基础概念

3、ARM linux中和Device Tree相关的代码分析(这是本文的主题)

本文主要内容是:以Device Tree相关的数据流分析为索引,对ARM linux kernel的代码进行解析。主要的数据流包括:

1、初始化流程。也就是扫描dtb并将其转换成Device Tree Structure。

2、传递运行时参数传递以及platform的识别流程分析

3、如何将Device Tree Structure并入linux kernel的设备驱动模型。

注:本文中的linux kernel使用的是3.14版本。

阅读全文>>

标签: 设备树

评论(162) 浏览(163214)

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