浅析linux键盘设备工作和注册流程
(1)在\drivers\input\Input.c中。
A,subsys_initcall(input_init);
B,static int __init input_init(void)中完成几个重要的操作:
err = class_register(&input_class);以输入类方式注册类
input_proc_init(); //创建proc下的目录和文件
register_chrdev(INPUT_MAJOR, "input", &input_fops); //注册字符设备驱动程序到内核
(2)在drivers\input\keyboard\S3c-keypad.c中,是自己的按键处理文件。
A,定义给android上层的码值
#define KEYCODE_HOME 58
#define KEYCODE_POWER 50
struct s3c_keypad_gpio_key gpio_key_smdk6410[] = {
{IRQ_EINT(6), S3C64XX_GPN(6), 2, KEYCODE_POWER, 1},
{IRQ_EINT(7), S3C64XX_GPN(7), 2, KEYCODE_HOME, 1},
};
分别是外部中断号,GPIO口号,码值。
B,probe过程:
module_init(s3c_keypad_init); //按键init
platform_driver_register(&s3c_keypad_driver); //注册平台驱动
s3c_keypad_driver的probe函数是主要处理过程:
static int __init s3c_keypad_probe(struct platform_device *pdev)
{
struct input_dev *input_dev; //注册一个输入设备
platform_get_resource(pdev, IORESOURCE_MEM, 0);
request_mem_region(res->start, size, pdev->name);
ioremap(res->start, size); //分配资源
keypad_clock = clk_get(&pdev->dev, "keypad");
clk_enable(keypad_clock); //获得keypad的clock
set_bit(EV_KEY, input_dev->evbit); //标志input_dev是KEY设备
s3c_gpio_cfgpin(gpio_key->gpio, S3C_GPIO_SFN(gpio_key->gpio_af));
相关文档:
无论什么编程语言都离不开条件判断。SHELL也不例外。
if list then
do something here
elif list then
do another thing here
......
查看当前配置字符集 locale
查看全部字符集 locale -a
设置字符集 export LANG=zh_CN.gbk
easy
tcpdump 一个linux监听网络访问的工具
监听服务器及端口
tcpdump -nn -i eth0 src host www.codigg.com and src port 80
正在使用的sql
tcpdump -s 0 -l -w - dst port 3306 | strings ......
http://linux.chinaunix.net/bbs/archiver/tid-985372.html
Linux Kernel: 简介HZ, tick and jiffie
Linux[/b]核心幾個重要跟時間有關的名詞或變數,底下將介紹HZ[/b]、tick與jiffies。
......
tar 文件与目录压缩命令
tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的 ......
ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:
(1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)
(2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定)
(3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。
从事嵌入式软件开发的好处是 ......