linux 驱动
文章平均质量分 67
zlcchina
这个作者很懒,什么都没留下…
展开
-
make -C M=
Makefile为, PWD = $(shell pwd) KERNEL_SRC = /usr/src/linux-source-2.6.15/ obj-m := test.o module-objs := test.o all: $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules clean:转载 2013-10-16 13:39:34 · 900 阅读 · 0 评论 -
wait_event_interruptible()和wait_up_interruptible()
wait_event_interruptible(wq, condition) 用wake_up_interruptible()唤醒后,wait_event_interruptible(wq, condition)宏,自身再检查“condition”这个条件以决定是返回还是继 续休眠,真则返回,假则继续睡眠,不过这个程序中若有中断程序的话 ,中断来了,还是会继续执行中断函数的。只有当执行原创 2014-04-17 12:01:51 · 2076 阅读 · 0 评论 -
有关中断
申请中断函数request_irq() enable_irq(MT6589_KP_IRQ_ID);原创 2014-04-18 10:52:46 · 726 阅读 · 0 评论 -
Linux内核线程编程方法
内核经常需要在后台执行一些操作,这种任务就可以通过内核线程(kernle thread)完成--独立运行在内核空间的标准进程。内核线程和普通的进程间的区别在于内核线程没有独立的地址空间,mm指针被设置为NULL;它只在 内核空间运行,从来不切换到用户空间去;并且和普通进程一样,可以被调度,也可以被抢占。实际上,内核线程只能由其他内核线程创建,在现有的内核线程中创建一个新的内核线程的方法:转载 2014-04-17 11:55:20 · 634 阅读 · 0 评论 -
内核调试 /proc/kmsg 和 dmesg
dmesg 打印内核的整个过程中的原创 2014-04-20 20:52:31 · 25540 阅读 · 1 评论 -
第一个内核驱动
测试驱动开发平台 为了后续学习的顺利进行,我们利用最简单的hello,world程序,在内核上挂载和卸载我们自己编写的hello模块。说明:本文调试环境VMware Workstation 5.0+TurboLinux 10,教材是《Linux Device Drivers》第3版英文电子图书。 一、编写hello.c文件 利用vi编辑器,我们键入下面的代码,并保存为hello.c文件。转载 2014-04-20 21:03:19 · 527 阅读 · 0 评论 -
tasklet 和workqueue 总结
tasklet :提交一次,调度运行一次,运行完之后从 cpu的 taskle原创 2014-04-22 10:32:52 · 907 阅读 · 0 评论 -
linux内核的配置机制及其编译过程
一、配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则; 2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能; 3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界转载 2014-04-24 10:25:34 · 748 阅读 · 0 评论 -
MTK spi
spi-dev.c 其中主要难理解的地方是 spi_create_attribute(),此函数原创 2014-04-24 16:36:41 · 2877 阅读 · 1 评论 -
spi总线的特点总结
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线原创 2014-04-25 09:00:41 · 1939 阅读 · 0 评论 -
copy_to_user()和copy_from_user()的使用
#include #include #include #include #include MODULE_LICENSE("Dual BSD/GPL"); static int count = 10; static char *init_mesg = "hello,world\n"; static char *exit_mesg = "goodbye\n"; static int m转载 2014-04-29 16:02:39 · 1272 阅读 · 0 评论 -
android 关机
定义关机按键: tiny6410 开发板,上面有八个按键 第一按键2 为关机按钮, 在初始化文件mach-mini6410.c 中初始化按键定义: static struct gpio_keys_button gpio_buttons[] = { { .gpio = S3C64XX_GPN(1), .code = 116, .desc = "KEY_POWER", .active_l原创 2013-11-29 13:51:44 · 643 阅读 · 0 评论 -
工作队列
1 "工作队列"用途 工作队列用途跟tasklet相似,在中断处理时将一些非紧急的任务留到工作队列中完成,而紧急的任务则在硬中断服务程序中完成。 但工作队列与tasklet还是有很大的区别: 1)工作队列函数在一个特殊内核进程的上下文中运行; 2)tasklet会在很短的时间段内很快执行,且以原子模式执行; 而工作队列函数具有更长的延迟并且不需要原子模式; 3)工作队转载 2013-11-21 16:01:50 · 963 阅读 · 0 评论 -
gpio-keys.c分析
Driver for keys on GPIO lines capable of generating interrupts. * * Copyright 2005 Phil Blundell * * This program is free software; you can redistribute it and/or modify * it und转载 2013-10-30 15:39:55 · 3196 阅读 · 0 评论 -
platform_driver_register()与platform_device_register()
设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册时进行绑定。 以一个USB设备为例,有两种情形: (1)先插上USB设备并挂到总线中,然后在安装USB驱动程序过程中从总线上遍历各个设备,看驱动程序是否与其相匹配,如果匹配就将两者邦定。这就是platform_driver_register() (2)先安装USB驱动程序,然后当有USB设备插入时,那么就遍历总线上的各个驱动,看两者是否转载 2013-10-30 16:57:34 · 712 阅读 · 0 评论 -
tiny6410 按键K0 中断
驱动源码: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-10-29 17:26:21 · 951 阅读 · 0 评论 -
s3c6410 中断
Chinaunix首页 | 论坛 | 问答 | 博客 登录 | 注册 博文 博主 wangcong02345wangcong02345.blog.chinaunix.net 暂无签名 2013 Hadoop中国技术峰会(11.22-11.23,北京) 第三届Oracle技术嘉年华(1转载 2013-10-31 16:04:58 · 1394 阅读 · 0 评论 -
lm8333
板级文件: arch/arm/mach-s3c64xx/mach-mini6410.c 中修改的内容 /*add by zl*/ #include #include static const unsigned int matrix_keypad_cols[] = {128,129,130,/*131,132*/}; static const unsigned int matrix原创 2013-11-06 17:12:14 · 980 阅读 · 0 评论 -
平台设备,平台驱动间及资源间的关系
平台设备,平台驱动间及资源间的关系: 个人理解: 1.platform_device{}, platform_driver{}与resource{}的关系: SOC芯片上有多个device,每个设备都有自己的资源配置 将SOC上的各个device的资源划分好配置好,编写成platform_device{}(以resource{}形式写好) 集中放在一个platform_devic转载 2013-11-01 17:07:18 · 679 阅读 · 0 评论 -
输入子系统设备名称匹配过程以及probe的调用
一: static int __init gpio_keys_init(void) { /* 总线-设备-驱动 模型 :向上注册一个设备模型【纯软件方面】 */ return platform_driver_register(&gpio_keys_device_driver); } //入口函数里面对平台设备进行注册,平台设备内容为下面这个结构体 struct p转载 2013-11-04 11:03:46 · 636 阅读 · 0 评论 -
I2C设备驱动编写
在Linux内核源代码中的drivers/i2c/busses目录下包含着一些适配器的驱动。如S3C2410的驱动i2c-s3c2410.c。当适配器加载到内核后,接下来的工作就要针对具体的设备编写设备驱动了。 编写I2C设备驱动也有两种方法。一种是利用系统给我们提供的i2c-dev.c来实现一个i2c适配器的设备文件。然后通过在应用层操作i2c适配器来控制i2c设备。另一种是为i2c设备,转载 2013-11-04 11:27:08 · 816 阅读 · 0 评论 -
tiny6410 添加LM8333驱动
Lm8333 为IIC键盘设备 1 在板级文件中添加lm8333注册信息 /linux/arch/arm/mach-mini64xx/mach-6410.c中添加 static struct i2c_board_info i2c_devs0[] __initdata = { { I2C_BOARD_INFO("lm8333", 0x50), //lm8333为设备名,0x50为设原创 2013-11-05 17:49:03 · 789 阅读 · 0 评论 -
SPI驱动
1、驱动中有总线和设备的概念。 spi控制器就是总线(spi总线),对应atmel_spi.c spi控制器上外接的芯片,比如串行flash、can收发器、时钟芯片等,就是设备。这就涉及到设备驱动的问题. 2、这些spi设备可以对应spidev.c,或者具体的文件. 比如说,我接的是flash芯片,那么可以定义spi_board_info 数组的时候指定转载 2014-04-28 17:45:21 · 650 阅读 · 0 评论