易截截图软件、单文件、免安装、纯绿色、仅160KB

嵌入式Linux的键盘驱动 1(通过I2C实现)

CPU:s3c2410
OS:Linux Kernel 2.6.30.4
最近刚做完的嵌入式键盘的驱动,由于初次接触,总结一下。
首先简单说说这个键盘的实现原理,IIC总线工作原理没必要废话,s3c2410的手册中讲的很明白。硬件方面这个键盘通过一个AVR单片机(ATMEGA48)接在IIC总线上,也就是说,直接与IIC总线链接的设备并不是我们用的键盘,而是这个单片机,键盘产生的一切数据由这个单片机经过加工包装成一定的数据结构再发给s3c2410。当s3c2410芯片收到数据后会由IIC控制器触发一个中断,在中断处理程序中我们只要解析这个结构体就可以了。
软件方面,设备驱动实际上分为两层,其中之一就是AVR单片机的驱动,另一个就是键盘驱动,基本流程如下。内核启动时会自动调用设备初始化函数,这时候我们需要做的是通过IIC总线给这个单片机传送初始化信息。发送的数据一共包括两部分,前者用于设置目的设备(s3c2410芯片)的地址,也就是告诉AVR单片机收到键盘发来的数据后应该发给谁;后者是使能键盘,如果不发这个指令,AVR收到键盘传来的按键硬件编码后直接丢弃。(这里注意:AVR上可以同时管理多个设备,事实上我搞到的前人的资料也是支持多个设备,而这里我们只用到了一个键盘)完成初始化后,硬件方面就没有什么障碍了,如果我们按下一个按键,键盘会把一个8位的硬件键码发给AVR单片机。在AVR单片机中这个字节前会被再加上一个8位的设备编号,然后一起发给s3c2410。cpu收到数据后,会把自己的工作模式设置成SR,然后调用AVR单片机驱动中的i2c_mega8_slvRcv函数,并把接收到的后两个字节(键盘的设备码+按键硬件码)作为参数传给该函数。在该函数中,检测设备码,如果是键盘,那么调用键盘驱动程序中的mega8_kbd_raw函数,并最终添加入按键等待队列。当有程序打开键盘设备文件的时候,这个队列中的键码会被传递给相应的用户程序。
下面代码部分借鉴了前人的劳动成果,具体作者是谁搞不太清楚 ... ...
首先添加一部分结构体和常量定义:
#ifndef __I2C_TOMEGA8_H_
#define __I2C_TOMEGA8_H_
#include <linux/poll.h>
#if 0 //modified by B.Zhou
#define I2COWNER_ADDRESS        (0x10>>1)
#else
#define I2COWNER_ADDRESS        (0x10)
#endif
#define MEGA8_I2CADDRESS        (0x60)
typedef struct __attribute__ ((packed)){
   


相关文档:

一篇简化的Linux启动过程说明


启动第一步--加载BIOS
当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。
启动第二步-- ......

Windows server 2008 R2 的Hyper V 对LINUX的支持太烂

太烂的原因有以下4条:
1、在WINDOWS SERVER 2008 SP2上就安装过ubuntu 9.04,安装时显示速度奇慢,简单无法忍受,文本模式,一行一行刷,让我想起当年在286上使用EGA显卡的遥远过去;
2、在WINDOWS SERVER 2008 R2上安装ubutun 10.04,情况一个样,再也没有勇气安装进行下去;
3、在WINDOWS SERVER 2008 SP2上就� ......

[转]linux信号量的实现

原文地址:http://blog.sina.com.cn/s/blog_460b9cbf0100gxtv.html
要使用信号量,内核代码必须包括<asm/semaphore.h>。相关的类型是struct semaphore;实际的信号量可通过几种途径来声明和初始化。其中之一是直接创建信号量,这通过sema_init完成:
viod sema_init(struct semaphore *sem,int val);
其中val是赋� ......

linux下面使用du

du -sh xmldb/
    du -sm * | sort -n //统计当前目录大小 并安大小 排序
    du -sk * | sort -n
    du -sk * | grep guojf //看一个人的大小
    du -m | cut -d "/" -f 2 //看第二个/ 字符前的文字
    查看此文件夹 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号