vim使用技巧摘录

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

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

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

阅读全文>>

标签: vim vim_rc

评论(3) 浏览(9609)

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

评论(41) 浏览(36356)

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版本。

阅读全文>>

标签: 设备树

评论(156) 浏览(105911)

Device Tree(二):基本概念

作者:linuxer 发布于:2014-5-30 16:47 分类:统一设备模型

一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。

简 单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Compiler),可以将这些适合人类阅读的Device Tree source file变成适合机器处理的Device Tree binary file(有一个更好听的名字,DTB,device tree blob)。在系统启动的时候,boot program(例如:firmware、bootloader)可以将保存在flash中的DTB copy到内存(当然也可以通过其他方式,例如可以通过bootloader的交互式命令加载DTB,或者firmware可以探测到device的信 息,组织成DTB保存在内存中),并把DTB的起始地址传递给client program(例如OS kernel,bootloader或者其他特殊功能的程序)。对于计算机系统(computer system),一般是firmware->bootloader->OS,对于嵌入式系统,一般是bootloader->OS。

本文主要描述下面两个主题:

1、Device Tree source file语法介绍

2、Device Tree binaryfile格式介绍

阅读全文>>

标签: Device tree

评论(160) 浏览(131173)

Linux电源管理(4)_Power Management Interface

作者:wowo 发布于:2014-5-29 15:55 分类:电源管理子系统

Linux电源管理中,相当多的部分是在处理Hibernate、Suspend、Runtime PM等功能。而这些功能都基于一套相似的逻辑,即“Power management interface”。该Interface的代码实现于“include/linux/pm.h”、“drivers/base/power/main.c”等文件中。主要功能是:对下,定义Device PM相关的回调函数,让各个Driver实现;对上,实现统一的PM操作函数,供PM核心逻辑调用。

因此在对Hibernate、Suspend、Runtime PM等功能解析之前,有必要先熟悉一下PM Interface,这就是本文的主要目的。

阅读全文>>

标签: Linux PM 电源管理 dev_pm_ops dpm

评论(18) 浏览(30042)

蓝牙协议分析(1)_基本概念

作者:wowo 发布于:2014-5-23 18:15 分类:蓝牙

自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到Bluetooth V4.0(最新的为V4.1,2013年底发布),经历了近9个版本的修订后,发展为当前的状况。

说实话,如今的蓝牙4.1,简直是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。而这一切的目的,就是以兼容性和易用性为基础,在功耗和传输速率之间左右为难。蜗蜗以为,这并不是优雅的设计。

不过没关系,存在即合理。因此蜗蜗就开出了这样一个专题,希望能够将蓝牙技术上上下下的知识,整理出来,以便在加深自己对蓝牙技术的理解的同时,能够给从事蓝牙相关工作的读者一点启发。

本文是这个专题的第一篇文章,主要基于蓝牙4.1规范(Core_V4.1.pdf),描述蓝牙技术的基本概念。

阅读全文>>

标签: Bluetooth BR EDR BLE AMP

评论(41) 浏览(55515)

Device Tree(一):背景介绍

作者:linuxer 发布于:2014-5-22 16:46 分类:统一设备模型

作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备 学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种新的机制,各种framework、各种新的概念让我感到阅读内核代码变得举步维艰。 还好,剖析内核的热情还在,剩下的就交给时间的。首先进入视线的是Device Tree机制,这是和porting内核非常相关的机制,如果想让将我们的硬件平台迁移到高版本的内核上,Device Tree是一个必须要扫清的障碍。

我想从下面三个方面来了解Device Tree:

1、为何要引入Device Tree,这个机制是用来解决什么问题的?(这是本文的主题)

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

3、ARM linux中和Device Tree相关的代码分析(请参考DT代码分析

阅 读linux内核代码就像欣赏冰山,有看得到的美景(各种内核机制及其代码),也有埋在水面之下看不到的基础(机制背后的源由和目的)。沉醉于各种内核机 制的代码固然有无限乐趣,但更重要的是注入更多的思考,思考其背后的机理,真正理解软件抽象。这样才能举一反三,并应用在具体的工作和生活中。

本文主要从下面几个方面阐述为何ARM linux会引入Device Tree:

1、没有Device Tree的ARM linux是如何运转的?

2、混乱的ARM architecture代码和存在的问题

3、新内核的解决之道

阅读全文>>

标签: Device tree

评论(60) 浏览(102026)

Linux电源管理(3)_Generic PM之Reboot过程

作者:wowo 发布于:2014-5-19 15:44 分类:电源管理子系统

在使用计算机的过程中,关机和重启是最先学会的两个操作。同样,这两个操作在Linux中也存在,称作shutdown和restart。这就是本文要描述的对象。

在Linux Kernel中,主流的shutdown和restart都是通过“reboot”系统调用(具体可参考kernel/sys.c)来实现的,这也是本文使用“Generic PM之Reboot过程”作为标题的原因。另外,除了我们常用的shutdown和restart两类操作之外,该系统调用也提供了其它的reboot方式,也会在这里一一说明。

阅读全文>>

标签: Linux PM 电源管理 reboot power_off

评论(37) 浏览(39791)

基本电路概念之(一):什么是电压?

作者:linuxer 发布于:2014-5-16 10:40 分类:基础学科

我有一个奇葩儿子(4岁),经常问一些奇葩的问题。比如:为什么电子带负电?什么是电压?电路板是怎么生产的?发动机的内部结构是什么?……总之, 各种问题层出不穷。有一天回家,他正和他妈妈一起看几张医学的CT片子(他妈妈是医生),他妈妈正详细向他解释该病人颅部血管病变问题,各种专业术语丝毫 也没有浇灭儿子的热情,那认真的劲头,我当时就震惊了。

为了应付我这个奇葩儿子,为了始终维持爸爸的高大形象,我不得不对这个世界有更深层次的思考……这次的主题是:什么是电压?电池为什么能提供电压?

阅读全文>>

标签: 电压

评论(11) 浏览(17558)

SDRAM Internals

作者:linuxer 发布于:2014-5-14 16:25 分类:基础技术

SDRAM(synchronous dynamic random-access memory)是嵌入式系统中经常用到的器件。对于一个嵌入式软件工程师而言,了解SDRAM的机理是有益的。我们可以从下面三个方面理解SDRAM:

1、RAM很好理解,就是可以随机存取的memory。

2、 dynamic 是和static对应的,SRAM就是static random-access memory。SRAM和DRAM(dynamic random-access memory)都是由若干能够保存0和1两种状态的cell组成。对于SRAM,只要保持芯片的供电,其cell就可以保存0或者1的信息。但是对于 DRAM而言,其bit信息是用电容来保存的(charged or not charged)。由于有漏电流,因此DRAM中的bit信息只能保持若干个毫秒。这个时间听起来很短,但是对于以ns计时的CPU而言已经是足够的长 了,因此,只要及时刷新(refresh,术语总是显得高大上,通俗讲就是读出来再写进去)DRAM,信息就可以长久的保存了。

3、 synchronous 是和asynchronous 对应的。synchronous是一个有多种含义的词汇,对于硬件芯片这个场景,主要是说芯片的行为动作是在一个固定的clock信号的驱动下工作。对于 电路设计而言,synchronous 简单但是速度慢,功耗大。asynchronous 则相反,在设计过程中需要复杂的race condition的问题,其速度快,理论上只是受限于逻辑门(logic gate)的propagation delay。

1968 年,Dennard获得了DRAM的专利。随后,各大厂商和研究机构对DRAM进行了改进。例如增加了clock信号,让DRAM的电路设计变成 synchronous 类型的。2000之后,由于其卓越的性能,SDRAM完全取代了DRAM的位置。随后的发展(DDR、DDR2和DDR3)并没有改变原理,只是速度上升 了。因此,本文以SDR(Single Data Rate)SDRAM为例,讲述其内部机理。

阅读全文>>

标签: SDRAM

评论(39) 浏览(19651)

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