Linux设备模型(1)_基本概念

作者:wowo 发布于:2014-2-27 17:01 分类:统一设备模型

在“Linux内核的整体架构”中,蜗蜗有提到,由于Linux支持世界上几乎所有的、不同功能的硬件设备(这是Linux的优点),导致Linux内核中有一半的代码是设备驱动,而且随着硬件的快速升级换代,设备驱动的代码量也在快速增长。个人意见,这种现象打破了“简洁就是美”的理念,是丑陋的。它导致Linux内核看上去非常臃肿、杂乱、不易维护。但蜗蜗也知道,这不是Linux的错,Linux是一个宏内核,它必须面对设备的多样性,并实现对应的驱动。

为了降低设备多样性带来的Linux驱动开发的复杂度,以及设备热拔插处理、电源管理等,Linux内核提出了设备模型(也称作Driver Model)的概念。设备模型将硬件设备归纳、分类,然后抽象出一套标准的数据结构和接口。驱动的开发,就简化为对内核所规定的数据结构的填充和实现。

本文将会从设备模型的基本概念开始,通过分析内核相应的代码,一步一步解析Linux设备模型的实现及使用方法。

阅读全文>>

标签: Kernel 内核 设备模型 Device Model 驱动开发

评论(63) 浏览(88630)

Linux内核的整体架构

作者:wowo 发布于:2014-2-21 13:23 分类:Linux内核分析

本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。

注:本文和其它的“Linux内核分析”文章都基于如下约定:  
a) 内核版本为Linux 3.10.29(该版本是一个long term的版本,会被Linux社区持续维护至少2年),可以从下面的链接获取:https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.29.tar.xz 
b) 鉴于嵌入式系统大多使用ARM处理器,因此涉及到体系结构部分的内容,都以ARM为分析对象

阅读全文>>

标签: Linux Kernel 内核 架构

评论(18) 浏览(81946)

由Flappy Bird想到的技术观、哲学观和人生观

作者:wowo 发布于:2014-2-13 13:04 分类:技术漫谈

最近这只鸟(Flappy Bird)很火!蜗蜗本来不擅于玩各种游戏,这次只所有会关注到这只鸟,完全是因为看到鸟作者的新闻后,作为同路的技术人,钦佩、共鸣等感觉油然而生所致。几天内,断断续续的玩了几十次之后,很有感触,就在此分享一下。

阅读全文>>

标签: Flappy Bird 简约 激励

评论(9) 浏览(12975)

MinGW下安装man工具包

作者:wowo 发布于:2014-1-24 18:50 分类:Linux应用技巧

      在软件开发方面,蜗蜗是一个坚定的Linux追随者,vimmakegccmanshell等等,每一个工具都充满了艺术的气息。因而工作时,电脑都会运行两个操作系统:Windows是主系统,主要用于日常的邮件收发、文档编写等工作;Linux运行在虚拟机上,主要负责软件开发。

      后来发现MinGW这个工具后,可以在Windows系统下完成大部分的Linux操作,并可以编译生成在Windows下执行的二进制文件。因而就渐渐的把开发工作转移至MinGW,这样就不用再开一个虚拟机了。

      可是刚使用MinGW时,有一个很不舒服的地方:无法使用man命令。要知道,该命令在Linux下可是神通广大,上知各种shell命令的使用方法,下知各种库函数的参数定义和调用示例(个人感觉,比Windows下的MSDN好用多了)。所以,我用了一个笨到极致的方法:开着虚拟机,就是为了使用Linux系统里面的man命令!

      突然有一天,我想,难道在MinGW下真的不能使用man吗?毫无疑问,是可以的。下面我就简单说明一下怎么在MinGW下使用man命令。

阅读全文>>

标签: MinGW Linux man

评论(9) 浏览(15978)

小printf大作用(用日志打印的方式调试程序)

作者:wowo 发布于:2014-1-23 20:52 分类:软件开发

      一般来说,初学编程者所写的第一个程序,就是使用printf打印“Hello world”。其实printf的功效远不只这些,在程序调试方面,printf也有非常大的用处。 

      “蜗蜗”在接触Linux driver开发之前,学习过桌面程序开发(如Turbo C、Visual C等),也从事了一段时间的嵌入式软件开发。这些开发有一个共同点,对调试工具非常依赖,如桌面程序的Debugger(调试器)、嵌入式开发的仿真器(JTAG等)。还依稀记得,刚工作时,为了插空使用仿真器,不得不趁周末别人不工作时加班使用。直到后来从事Linux driver开发、见识到了printk的魅力之后,多年来,就再也没有使用过仿真器或者调试器了。 

      下面我就总结一下使用日志打印辅助debug的心得。

阅读全文>>

标签: 日志 打印 printf debug 调试

评论(6) 浏览(23688)

Windows系统结合MinGW搭建软件开发环境

作者:wowo 发布于:2014-1-22 12:16 分类:软件开发

      MinGW,即Minimalist GNU For Windows,它包含了GNU工具集的运行环境、GCC编译器工具集以及其它的GNU程序开发工具(如makegawkgrep等等)。借用MinGW,可以在Windows操作系统上,使用强大的、丰富多彩的开源工具进行软件开发,例如vim、gcc、python等等。

阅读全文>>

标签: MinGW GNU Linux 开发环境

评论(0) 浏览(26863)

“蜗窝”使用的软件开发环境介绍

作者:wowo 发布于:2014-1-21 14:34 分类:软件开发

      “蜗窝”中的很多文章,会涉及软件开发的内容,包括嵌入式、ARMC语言、LinuxDSP等议题。为了方便大家的测试、学习、使用,我们会尽可能的提供所有软件的source code。而软件开发是非常依赖开发环境的,因而有必要事先交代“蜗窝”所使用的开发环境,以此达到2个目的:

      1. 让“蜗窝”中所有的蜗牛们,使用相同的开发环境,以便互相交流、互相帮助。

      2. “蜗窝”的创立者,有着多年的Linux开发经验,非常熟悉开源软件及相关的开发环境,也非常推崇它们的思想和理念。因而可以借助开发环境的准备,和蜗牛们分享这些经验。

阅读全文>>

标签: 蜗窝 软件开发

评论(3) 浏览(15330)

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