摘要:
写在前面的话:对于框架,我觉得就是在一定规范的形式下去实现你要的功能。这里就涉及到一个变与不变的地方。你所要实现的功能会是千差万别的---这就是变的地方,而所谓既定的规范,包括建立目录和属性文件这是Linux系统已经为我们做好了的,我们只需要直接拿来引用就OK了。那么今天,我们就来看看hwmon框架是怎么样的。对hwmon而言,它是sysfs框架下的一个类,但是所有有关该类与sys的接口都已经在drivers/hwmon/hwmon.c实现,因而我们也不必过多的关心。那么我们到底要做些什么呢?对于你要实现的功能部分,你就自己去想象吧,下面我们来说说在我们的程序中对于不变的那部分要如何去实现。我 阅读全文
摘要:
首先,我们来理解一下在platform架构中的知识点。在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,SoC系统中集成的独立的外设控制器、挂接在SoC内存空间的外设等确不依附于此类总线。基于这一背景,Linux发明了一种虚拟的总线,称为platform总线,相应的设备称为p 阅读全文
摘要:
我的博客: http://www.yewusishi.com/ 希望大家指教写在前面的话:linux的学习有很多的切入点,但是从我学习的观点来看,设备驱动是一个不错的切入点。至于理由,个人觉得最重要的一点就是容易去实践。众所周知,读万卷书不如行万里路。研究linux也是如此,只有在实践中摸索,在实践中将自己所学的知识融会贯通。而设备驱动的学习可以做到这一点。在讲述设备驱动程序的书籍中,开篇都会讲到两个词的概念--机制和策略。我们先来看看ldd3中对它们的定义:机制---需要提供什么功能策略---如何使用这些功能这样就很清楚了啊,我们驱动程序提供的是一种机制,而所谓的策略则是我们的上一层去解释, 阅读全文
摘要:
中间隔了老长时间了啊!!呵呵今天继续。上次我们已经将远程仓库建立好了,下面我们主要的工作就是在这个远程仓库里使劲的捣鼓。首先我们会想到的是--建立分支。你能确保自己的改动就是万无一失的吗?不能的话就来建立自己的分支,让自己的修改停留在自己的分支。不要你影响别人哦!!1.新建分支1 software@debian:~/zhoubb/git-test$ 2 software@debian:~/zhoubb/git-test$ git branch3 * master4 software@debian:~/zhoubb/git-test$ git branch yafeng5 software@de 阅读全文
摘要:
将内核代码交叉编译完了之后,下载到目标机子上去实验,可是在启动之后却一直就黑屏了。什么反应都没有了,甚至没有出现小企鹅及任何打印出来的文字。为怀疑是是在还没加载内核之前就出错了,可是我不知道该去看那一部分的代码请大家指教指教啊。谢了…… 阅读全文
摘要:
最近一直在学习使用git来管理自己的程序,总是今天东学一点,明天西凑一点,到用的时候,总是有些茫然不知所措。在博客园里看见一篇老好的文章,教我们做笔记啦,但是做完笔记还是要记得总结哦!来吧,让我们一起来总结吧,今天先来看看git远程的仓库是怎么建立的。当然,使用git嘛,第一步肯定是得新建一个git仓库,总得有个操作的空间吧,巧妇难为无米之炊嘛。1.初始化一个空的git仓库1 software@debian:~$ mkdir yafeng2 software@debian:~$ cd yafeng/3 software@debian:~/yafeng$ ls4 software@debian: 阅读全文
摘要:
在linux-2.6.36内核上加载编译驱动时,出现error:unknown field 'ioctl' specified in initializer原因是:在2.6.36内核上file_operations发生了重大的改变:原先的 int (*ioctl)(struct inode*, struct file*, unsigned int, unsigned long);被改为了 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struc 阅读全文
摘要:
安装好Ubuntu11.10已经好几天了,因为阅读内核源代码的需要为了能更好的阅读内核代码,我为自己打造了vim+Ctags+Taglist+WinManager这一个阅读器。下面介绍一下阅读器的安装。在Ubuntu上安装vim,应该不需要再多说些什么了 sudo apt-get install vim系统就会自动将vim编辑器安装好了!!只有一个vim对于开发人员,特别是需要阅读大量源代码的程序员来说,显然是不够的,或者说是不方便的,当然除了那些大牛之外,我身边就有这么一位,真的很牛的那种,我还不是,就先借助一下工具呗!!1.接下来就是Ctags的安装,当然你也可以是用Ubuntu的自动安. 阅读全文
摘要:
1. idle是什么 简单的说idle是一个进程,其pid号为 0。其前身是系统创建的第一个进程,也是唯一一个没有通过fork()产生的进程。在smp系统中,每个处理器单元有独立的一个运行队列,而每个运行队列上又有一个idle进程,即有多少处理器单元,就有多少idle进程。系统的空闲时间,其实就是指idle进程的"运行时间"。既然是idle是进程,那我们来看看idle是如何被创建,又具体做了哪些事情? 2. idle的创建 我们知道系统是从BIOS加电自检,载入MBR中的引导程序(LILO/GRUB),再加载linux内核开始运行的,一直到指定shell开始运行告一段落,这 阅读全文
摘要:
PMON是一个兼有BIOS和boot loader部分功能的开放源码软件,多用于嵌入式系统。与BIOS相比功能不足,与常见的bootloader 相比,功能要丰富的多。基于龙芯的系统采用 pmon 作为类 BIOS 兼 bootloader,并做了很多完善工作。其有如下主要特点: * 支持ext2 fat32 ram 文件系统 * 支持网络引导(tftp),磁盘引导,flash 引导 * 内建调试功能(强大,调试内核举重若轻) * USB 2.0 Mass Storage 支持 * 支持MIPS、ARM、PowerPC 平台 * BSD Licensed ...以下结合实际,给出开... 阅读全文