- 博客(34)
- 资源 (7)
- 收藏
- 关注
转载 linux设备驱动之工作队列学习(workqueue)
首先要注意本文的两个概念:(1)使用内核提供的工作队列, (2)自己创建工作队列http://blog.csdn.net/fontlose/article/details/8286445 工作队列是一种将工作推后执行的形式,交由一个内核线程去执行在进程上下文执行,其不能访问用户空间。最重要特点的就是工作队列允许重新调度甚至是睡眠。工作队列子系统提供了一个默认的工作者线程来处理这些工作。默
2016-05-26 14:33:30 1975 1
转载 C语言实现修改文本文件中特定行的实现代码(百度一天没找到,bing搜索十分钟就找到了)
好的,首先我先叙述下功能要求:其实很简单,就是Shell中sed命令的C语言实现,实现定位到所需要的字段的那一行,之后修改成需要的内容。但是由于C语言是面向过程的语言,需要顺序执行的特点,所以,实现中遇到了很多麻烦,在这里博主将实现的过程描述如下,以便大家参考。问题描述:文本内容:复制代码 代码如下:wireless.1.authmode=1wireless.1.c
2016-05-03 20:07:10 914 2
转载 《深入理解Linux内核》软中断/tasklet/工作队列
《深入理解Linux内核》软中断/tasklet/工作队列软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。本文重点在于介绍这三者之间的关系。(函数细节将不会在本文中出现,可以参考文献,点这里
2016-05-30 13:35:17 665
转载 platform驱动模型编程总结(基于mini2440平台的LED驱动)
sysfs与platform的相关基础介绍可以参考博文【 sysfs platform总线 】。platform模型驱动编程,需要实现platform_device(设备)与platform_driver(驱动)在platform(虚拟总线)上的注册、匹配,相互绑定,然后再做为一个普通的字符设备进行相应的应用,总之如果编写的是基于字符设备的platform驱动,在遵循并实现pl
2016-05-30 09:34:50 302
转载 关于platform中的id_table
转载 http://blog.csdn.net/mcgrady_tracy/article/details/38980991内核版本:Linux-3.4.67platform的match函数如下:[cpp] view plain copyprint?/** * platform_match - bind platform device to p
2016-05-28 13:49:07 1443
转载 linux下jiffies定时器和hrtimer高精度定时器
一、jiffies定时器,HZ=100,精度只能达到10ms。注:采用jiffies+msecs_to_jiffies(xx ms);可做到ms级,不过精度不够 #include //DO-->jiffies调用头文件#include //DO-->timer_list结构体static struct timer_list ms_timer;//DO-->定义timer_l
2016-05-28 13:47:19 1080
原创 irda-objs和irda-obj的差别,烧写一个字母的悲剧
irda-objs:=ircon.o xxx.o XXX1.oobj-m += irda.o上面irda-objs写成irda-obj 少了一个字母s ,就造成了半天悲剧,一直以为是什么问题,各种EXPORT_SYMBL 和extern ,还是提示函数没定义,后来发现是前面的根本没编译,因为提示irda.c 找不到,这里irda 是依赖ircon.o xxx.o XXX1.o,
2016-05-27 17:52:02 845
转载 Linux内核驱动将多个C文件编译成一个ko文件的方法——每个C文件里都有module_init与module_exit,moduleinit
Linux内核驱动将多个C文件编译成一个ko文件的方法——每个C文件里都有module_init与module_exit,moduleinit以两个C文件为例:将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c、adc_driver.c编译成一个ko文件!采用方法: 第一步、修改C文件1、去掉adc_device.c文件里
2016-05-27 16:32:29 3116
转载 linux 内核定时器 timer_list / mod_timer/init_timer
linux内核使用timer_list 结构体当作定时器。点击(此处)折叠或打开#include linux/timer.h>#include linux/module.h>MODULE_LICENSE("GPL"); //不加这句话,虽然不影响功能,但“有时候”程序执行时会打印错误,类似 Di
2016-05-26 16:16:04 6661
原创 arm 红外驱动
参考案例1、单片机NEC协议的红外遥控器驱动程序http://wenku.baidu.com/link?url=csCdS9J-J5XadP1DHXzPE7kR_7hqo8zoF3X8TXpf5_N4oqRk0tUwrewBh7Nq-FoR6Pg4kXlXxCxMZexq-6KMowAndefRmJr6-l1c-rhmaFm2、NEC 红外编码规则http://wenku.
2016-05-26 16:01:10 1025
转载 浅谈时间函数gettimeofday的成本 ——gettimeofday是由底层do_gettimeofday返回的?!
转自 我们在程序中会频繁地取当前时间,例如处理一个http请求时,两次调用gettimeofday取差值计算出处理该请求消耗了多少秒。这样的调用无处不在,所以我们有必要详细了解下,gettimeofday这个函数做了些什么?内核1ms一次的时钟中断处理真的可以支持tv_usec字段达到微秒精度吗?它的调用成本在i386/x86_64体系架构上代价一样吗?如果在系统繁忙时,频繁的调用
2016-05-24 09:28:46 4344 1
转载 Linux输入子系统(Input Subsystem)
Linux输入子系统(Input Subsystem)linux设备驱动那点事儿之输入子系统理论篇 (2011-08-01 23:41)分类: linux设备驱动程序分析 Linux输入子系统(Input Subsystem)1.1.input子系统概述输入设备(如按键,键盘,触摸屏,鼠标等)是典型的字符设备,其一般的工作机制
2016-05-23 14:39:36 328
转载 以微秒为单位的精确计时gettimeofday函数
以微秒为单位的精确计时long long L1,L2,L3;timeval tv1;//取一个时间gettimeofday(&tv,NULL);L1 = tv.tv_sec*1000*1000 + tv.tv_usec; //执行一些代码,如算法1... //第二次取时间gettimeofday(&tv,NULL);L2 = tv.tv_sec*1000
2016-05-23 10:48:05 3187
转载 C语言中常用计时方法总结
转自 http://blog.csdn.net/junnes/article/details/7612674 不过,我想问这些函数都能在驱动下调用吗? C语言中常用计时方法总结1. time()头文件:time.h 函数原型:time_t time(time_t * timer) 功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的此时
2016-05-23 10:44:07 666
转载 hrtimer的简单使用 + 原理和实现
1.hrtimers - 为高分辨率kernel定时器,可作为超时或周期性定时器使用1). hrtimer_init初始化定时器工作模式。hrtimer_init(&vibe_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);vibe_timer.function = timer_func;/* 设置定时器的回调函数,定时器到时该函数将被调用 */
2016-05-21 17:01:38 3034
转载 linux下的irda (remote control)驱动分析
http://lxr.free-electrons.com/source/drivers/media/rc/gpio-ir-recv.c简单分析了一下1. 通过设备树来选择接上rc的gpio2. 设置上升与下降沿中断,前提是这个接上RC的GPIO必须支持中断功能3. 中断来了以后判断高低电平,标识是IR_SPACE还是IR_PULSE通过以下函数传递rc = ir_raw_ev
2016-05-21 16:57:18 2909
转载 工作队列-schedule_delayed_work()用法
原文地址:schedule_delayed_work()用法作者:Valley 第一篇 工作队列 在Linux内核中,对下半部(或者说推后执行的工作)的处理方式有好几种,包括BH(bottom half),软中断,Tasklets和工作队列等等。在2.6内核中,大名鼎鼎的BH处理被废除,新增了更方便的工作队列。工作队列的方便之处在于它把 工作推后,交由一个内核线程
2016-05-20 22:14:34 11471
转载 Linux gpio 按键中断学习
转自 http://blog.chinaunix.net/uid-14753126-id-2983036.html先说明一下按键与S3C2440芯片的连接方式:KEY1 EINT8 GPG0KEY2 EINT11 GPG3KEY3 EINT13 GPG5KEY4 EINT14 GPG6KEY5 EINT15 GPG7KEY6 EINT19
2016-05-20 17:11:01 6094
转载 内核驱动中常见的miscdevice、platform_device、platform_driver
最近在看驱动模型,是越看越糊涂,以前接触比较多的都是一些字符驱动,对字符驱动的框架有一定的了解。后来因为想在驱动中实现设备文件的创建,又了解了一下,sysfs文件系统和udev设备文件系统,必然就涉及到了驱动模型。可是发现驱动模型和以前接触的字符驱动没什么联系。比如,以前写字符驱动,主要的内容就是实现file_operations结构体里的函数,然后就是申请设备号,注册字符设备,根本就没有涉及
2016-05-20 11:15:32 542
转载 ds18b20 Linux驱动
DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。工作电压 3.0~5.5V/DC 超低功耗静态功耗测量结果以9~12位数字量方式串行传送。 面对着扁平的那一面,左负右正,一旦接反就会立刻发热,有可能烧毁!同时,接反也是导致该传感器总是显示85℃的原因。DS18B20实物图 DS18B20电路如图如下 驱动代码如下DS18B2
2016-05-20 09:55:41 3139
原创 ko驱动模块rmmod 后insmod 异常问题解决
insmod xxx.koldo6: Failed to create debugfs directory-->set voltage ret 0 min_uV=3300000, max_uV=3300000-->***set xxx cvbs voltage to 3.0vxxx_init()nr 2i2c i2c-2: Failed to register i2c cl
2016-05-13 15:27:02 3307
原创 insmod: can't insert 'xxx.ko': File exists 问题解决
已经rmmod xxx ,没提示什么,重新insmod xxx.ko提示insmod: can't insert 'xxx.ko': File exists怎么解决?
2016-05-13 15:20:58 13471 3
原创 IIC 读写时候提示 timeout waiting for bus ready
昨晚还是可以读写的,早上再测试发现就会打印timeout waiting for bus ready,测试SDA和SCL引脚发现引脚电平被拉低了,后来换了一个板子,又可以了,不懂为啥就会坏了,坑爹货!
2016-05-13 11:09:33 3823 2
原创 ko驱动加载时候提示init suspiciously returned 20, it should follow 0/-E convention
ko驱动加载时候提示init suspiciously returned 20, it should follow 0/-E conventiondo_init_module: loading module anyway... rm ko驱动时候没 提示啥,但是在此insmod ko 驱动提示文件已经存在,看来还是有一些东西没卸载完毕。
2016-05-13 11:07:49 1811
原创 编译Linux/Android 输出很多信息很难找到错误/警告信息怎么办?
记住,Linux无所不能,有办法的!1.只保留错误信息: make 2>log.txt #(注意2和>之间不要空格)2.保留错误信息和警告信息: make > log.txt 2>&1 试了一下,一下子就找到错误的地方了!good !
2016-05-12 20:43:12 1635
转载 Android/linux 平台下使用 i2c-tools调试IIC方法
在busybox包含i2c-tools工具,使用时只需busybox+指令只可。i2cdetecti2cdumpi2cgeti2cseti2cdetect列举 I2C bus[cpp] view plain copyprint?# i2cdetect -l i2c-0 i2c imx-i2c
2016-05-10 22:30:43 5545
原创 ./i2cdetect -y 2 Error: Can't use SMBus Quick Write command on this bus
./i2cdetect -y 2 运行后,提示无效怎么回事?Error: Can't use SMBus Quick Write command on this bus 别的总线到时没有这个问题。难道?是我已经insmod i2c-2 的缘故?
2016-05-10 20:12:55 6241 7
原创 ./i2cdetect: line 1: syntax error: unexpected word (expecting ")")
运行 ./i2cdetect: line 1: syntax error: unexpected word (expecting ")") 怎么回事?奇葩啊,再看看
2016-05-10 19:56:00 1998
转载 i2c tool 的使用
i2c tool 的使用 1,下载源码: http://packages.debian.org/search?keywords=i2c-tools2,解压源码包: tar -xvf i2c-tools-3.1.0.tar.bz22、解压后,可手工编译: arm-none-linux-gnueabi-gcc -O2
2016-05-10 18:19:18 3042 1
原创 make: 没有什么可以做的为 `all'。
改了一下makefile,编译了一下,通过了,但是,当我再次修改一些东西再编译的时候,日日日!提示 make: 没有什么可以做的为 `all'。 吓我一跳,以为有问题了,O(∩_∩)O~,原来是没更新程序和makefile 就是什么都不干,make clean 一次,编译过程又有了,汗!菜鸟在匍匐前进ing
2016-05-10 18:18:00 12790 1
原创 下面是什么错误?咋回事呢,系统都没更新就不启动了。
===================================================================[MIR3DA] at mir3da_core_init[MIR3DA] read ok[MIR3DA] Probe gsensor module: NSA_NTOat mir3da_chip_resumeat mir3da_pa
2016-05-09 22:48:01 2398
原创 再次体验 sscanf函数的强大
本来好复杂的一个文件读写程序,只要经过sscanf 函数出马,立即减少了几百行处理文件字符#photo 21 photo.capturemode=Single #Single (2S Timer) (5S Timer) (10S Timer) 22 photo.resolution=2MHD #2MHD VGA 1.3M //12M 10M 8M 5M 3M 23 photo
2016-05-04 11:24:48 1042
原创 Linux c语言实现修改文本字符串
要在Linux c 程序里面实现文本的字符串读写,百度一下,都是比较简单的字符串处理,并没有类似的说明,后来换成bing 找到一些蛛丝马迹http://bbs.csdn.net/topics/390016741这个CSDN的 topic 不错虽然没有直接达到我的要求,至少我能找到重要的线索了用seek 去定位FILE *fp;char line[256],*pStr;c
2016-05-03 15:18:25 2266
S5PV210 最新排版最合理的三星英文datasheet
2013-11-08
win7 64 bit 系统ActiveSync 连接软件
2013-07-31
《GPS应用程序设计》书籍源代码
2013-02-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人