海王  

随笔分类 -  linux_driver

1
  • Linux下timer延时的使用
    摘要:http://blog.csdn.net/hzpeterchen/article/details/8090385因笔者工作在嵌入式平台上(非x386),下面给出的结论仅在arm平台上测试过。1. 在原子上下文,延迟应该少于100微秒。使用udelay2. 在非原子上下文延迟的使用0-100us: 使用udelay100us以上: 使用usleep_range20ms以上且不要求精确: 使用msleepmsleep不精确,完全可以用usleep_range代替。可以参考的文档:Documentation/timers/timers-howto.txt下面是在Freescale i.mx6Q (a 阅读全文
    posted @ 2013-11-18 13:45 海王 阅读(2777) 评论(0) 推荐(0) 编辑
  • kernel 定时器延时跨平台问题
    摘要:内核中一般使用:声明: struct timer_list trelease_timer=TIMER_INITIALIZER(function,0,0);启动定时器: mod_timer(&trelease_timer,jiffies+(HZ/100)*N); 超时任务: void function(){} 使用HZ能保证跨平台的延时相同 阅读全文
    posted @ 2012-06-08 18:36 海王 阅读(462) 评论(0) 推荐(0) 编辑
  • writel __raw_writel mb()/rmb()/wmb()
    摘要:在邮件列表里讨论了一下writel是如何实现的,这个函数实现在操作系统层,有内存保护的情况下,往一个寄存器或者内存地址写一个数据。 在arch/alpha/kernel/io.c中有 188 void writel(u32 b, volatile void __iomem *addr)189 {190 __raw_writel(b, addr);191 mb();192 } 这样一个writel函数的作用应该是向一个地址上写一个值,我想知道这个函数底下具体实现的细节,于是往下继续跟踪代码:__raw_writel(b, addr); 129 void __raw_writel(u32 b, 阅读全文
    posted @ 2010-12-11 00:46 海王 阅读(3814) 评论(0) 推荐(0) 编辑
  • 给内核模块传递参数
    摘要:http://blog.chinaunix.net/u2/87570/showart_2121965.html对于如何向模块传递参数,Linuxkernel提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。使用下面的宏时需要包含头文件<linux/moduleparam.h>。通过宏module_para... 阅读全文
    posted @ 2010-09-28 16:35 海王 阅读(4739) 评论(0) 推荐(0) 编辑
  • [内核补丁] 解决2.6.29内核上加载模块出现"unknown relocation: 40"
    摘要:我使用s3c2410+linux2.6.25.20+arm-linux-gcc4.3.3(使用过其它较低版本3.4.5则不会出现这个问题)加载fat.ko等fat文件系统模块时候会报错,并不是全部都报错,某些简单的如led.ko不会。 http://www.arm9home.net/read.php?tid-1708.html 从上网站中获取补丁,补丁内容如下,按照修改内核问题解决: # Auth... 阅读全文
    posted @ 2010-09-16 16:54 海王 阅读(1915) 评论(0) 推荐(0) 编辑
  • Request_irq和setup_irq的区别
    摘要:http://blog.chinaunix.net/u2/60011/showart_1086511.html Author: Dongas Data: 08-07-19 Linux 内核提供了两个注册中断处理函数的接口:setup_irq和request_irq。这两个函数都定义在kernel/irq/manage.c里。 /* * Internal function to register a... 阅读全文
    posted @ 2010-09-09 10:22 海王 阅读(3214) 评论(0) 推荐(0) 编辑
  • 块设备驱动编写总结一(ZT)
    摘要:http://www.cublog.cn/u/1595/showart_2209627.html 前一段时间一直在Linux下搞块设备驱动的开发,实现了多个块设备模块,现将块设备驱动开发的一些方法总结一下。 块设备与字符设备的区别 1、 从字面上理解,块设备和字符设备最大的区别在于读写数据的基本单元不同。块设备读写数据的基本单元为块,例如磁盘通常为一个sector,而字符设备的基本单元为字节。所以... 阅读全文
    posted @ 2010-09-02 16:57 海王 阅读(2174) 评论(0) 推荐(0) 编辑
  • Linux内核中的jiffies 以及时间的获取time
    摘要:http://www.cublog.cn/u/18846/showart_267864.html 硬件给内核提供一个系统定时器用以计算和管理时间,内核通过编程预设系统定时器的频率,即节拍率(tick rate),每一个周期称作一个tick(节拍)。Linux内核从2.5版内核开始把频率从100调高到1000(当然带来了很多优点,也有一些缺点). jiffies是内核中的一个全局变量,用来记录自系... 阅读全文
    posted @ 2010-08-30 09:51 海王 阅读(13428) 评论(0) 推荐(0) 编辑
  • 如何通过结构中的某个成员地址获取结构本身的指针???
    摘要:http://blog.csdn.net/yinkaizhong/archive/2009/04/20/4093795.aspx 问题:如何通过结构中的某个变量获取结构本身的指针??? 关于container_of见kernel.h中:/*** container_of - cast a member of a structure out to the containing structure... 阅读全文
    posted @ 2010-08-26 11:25 海王 阅读(2642) 评论(0) 推荐(0) 编辑
  • backlight misc驱动范例 及应用程序范例
    摘要:http://blog.chinaunix.net/u3/101649/showart_2081192.html1.编写背光驱动。文件名为my2440_backlight.c(1)代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--#include&l... 阅读全文
    posted @ 2010-08-23 12:20 海王 阅读(618) 评论(0) 推荐(0) 编辑
  • linux 内核定时器 timer_list详解
    摘要:http://www.linux-cn.com/html/linux/kernel/20070412/1886.shtml http://linux.ccidnet.com/art/741/20061116/952655_1.htmlLinux内核2.4版中去掉了老版本内核中的静态定时器机制,而只留下动态定时器。相应地在timer_bh()函数中也不再通 过run_old_timers()函数来... 阅读全文
    posted @ 2010-08-19 12:23 海王 阅读(34920) 评论(0) 推荐(3) 编辑
  • 查看 各种寄存器值的 内核模块 C语言
    摘要:#include <linux/kernel.h>#include <linux/module.h>#include <linux/types.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/init.h>#include <linux/cde... 阅读全文
    posted @ 2010-08-13 10:39 海王 阅读(1935) 评论(0) 推荐(0) 编辑
  • linux-2.6.26内核中ARM中断实现详解(转)
    摘要:作者:刘洪涛,华清远见嵌入式学院金牌讲师,ARM ATC授权培训讲师。 看了一些网络上关于linux中断实现的文章,感觉有一些写的非常好,在这里首先感谢他们的无私付出,然后也想再补充自己对一些问题的理解。先从函数注册引出问题吧。 一、中断注册方法 在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义: int request_ir... 阅读全文
    posted @ 2010-08-06 17:02 海王 阅读(4914) 评论(1) 推荐(0) 编辑
  • linux 2.4.18 串口prink输出波特率等参数的调整
    摘要:在文件drivers/serial/serial_s3c2410.c中找到static int __init s3c2410_console_setup(struct console *co, char *options)这个函数,修改即可 阅读全文
    posted @ 2010-06-21 18:42 海王 阅读(365) 评论(0) 推荐(0) 编辑
  • 内核中的HZ 及延迟等
    摘要:时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据 HZ 值来设定,HZ 是一个体系依赖的值,在 <linux/param.h>中定义或该文件包含的某个子平台相关文件中。作为通用的规则,即便如果知道 HZ 的值,在编程时应当不依赖这个特定值,而始终使用HZ。对于当前版本,我们应完全信任内核开发者,他们已经选择了最适合的HZ值,最好保持 HZ 的默认值。 对用户空间,内核HZ几... 阅读全文
    posted @ 2010-05-13 14:13 海王 阅读(4308) 评论(0) 推荐(0) 编辑
  • Kobject、Kset 和 Subsystem
    摘要:http://www.itshanghai.net/technology/2008/1128/article_110.html Kobjectskobject是一种数据结构,定义在 。 struct kobject { const char * k_name;/*kobject 的名字数组(sysfs 入口使用的名字)指针;如果名字数组大小小于KOBJ_NAME_LEN,它指向本数组的name,否... 阅读全文
    posted @ 2010-04-24 11:05 海王 阅读(8977) 评论(0) 推荐(0) 编辑
  • USB电视卡驱动
    摘要:http://blog.chinaunix.net/u1/41134/showart_405902.html在进一步完善我的驱动之前,想先总结一下我的开发过程,以使以后少走弯路。这次开发USB电视卡的Linux驱动,我分成了以下几个步骤: 1、 了解卡上IC的寄存器设置;2、 使USB电视卡可以和Linux系统正常通讯;因为刚开始时,我对Video4Linux不是很熟悉,再加上要播放电视首先需要配... 阅读全文
    posted @ 2010-01-11 00:28 海王 阅读(1564) 评论(1) 推荐(0) 编辑
  • 基于MTD的NAND驱动开发
    摘要:○、说明http://blog.chinaunix.net/u1/41134/showart_721586.html大约用了两个礼拜不到的时间为公司的IPcamera系统写了基于MTD的NAND驱动(linux-2.6.22.10内核),目前已可以在该驱动的支持下跑cramfs和jffs2文件系统,另外,该驱动也可以同时支持small page(每页512 Byte)和big page... 阅读全文
    posted @ 2010-01-11 00:26 海王 阅读(3175) 评论(0) 推荐(0) 编辑
  • 摄像头驱动实现源码分析
    摘要:http://blog.chinaunix.net/u1/41134/showart_405524.htmlSpac5xx的实现是按照标准的USB VIDEO设备的驱动框架编写(其具体的驱动框架可参照/usr/src/linux/drivers/usb/usbvideo.c文件),整个源程序由四个主体部分组成:设备模块的初始化模块和卸载模块,上层软件接口模块,数据传输模块。具体的模块分析如下:一.... 阅读全文
    posted @ 2010-01-11 00:23 海王 阅读(1202) 评论(0) 推荐(0) 编辑
  • OMAP35x下OneNand的分析以及x-loader的介绍
    摘要:OMAP35x下OneNand的分析以及x-loader的介绍http://blog.ednchina.com/gurongjiang/280997/message.aspx1. OneNand要分析OneNand,首先我们必须回顾一下NOR与NAND。两者在读写速度、密度、成本、使用寿命等方面各有千秋。与NOR Flash相比,NAND Flash的读数据速度稍慢,但是擦写速度快得多,并且在容量... 阅读全文
    posted @ 2010-01-11 00:22 海王 阅读(2228) 评论(0) 推荐(0) 编辑

1