linux驱动
tianxiawuzhei
热爱技术,喜欢探究,喜欢记录和分享。
展开
-
linux中触摸屏驱动的实现(2)——基于s3c6410处理器
linux中触摸屏驱动的实现(1)——基于s3c6410处理器的链接地址上一篇主要讲述了linux中触摸屏设备作为平台设备存在的模块加载和卸载函数,还有就是对应的probe函数和remove函数,这一篇说下在probe函数中注册的两个中断处理函数。1、先来说第一个中断处理函数——触摸屏中断,对应的中断处理函数是stylus_updown,当触摸屏被按下时,会产生中断信号IR原创 2012-05-26 20:12:08 · 4064 阅读 · 0 评论 -
linux下测试RTC驱动相关的命令date和hwclock常见用法简介
原文地址之前对Linux下面时间相关的内容,一无所知,第一次见到hwclock,不知为何物,也没找到解释清楚的帖子。故此整理一下,简单介绍Linux下验证rtc驱动是否工作正常,相关的的命令:date和hwclock。先说明:1.本贴主要内容来整理自后注所引用的帖子。2.如下介绍,不涉及如何编写rtc驱动,只简单介绍,驱动实现后,如果通过date和hwclock转载 2012-05-18 22:09:39 · 2054 阅读 · 0 评论 -
Linux RTC 驱动模型分析
原文链接 RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间。RTC因为是电池供电的,所以掉电后时间不丢失。Linux内核把RTC用作“离线”的时间与日期维护器。当Linux内核启动时,它从RTC中读取时间与日期,作为基准值。在运行期间内核完全抛开RTC,以软件的形式维护系统的当前时间与日期,并在需要时将时间回写RTC芯片。另外如果RTC提供了IRQ转载 2012-05-18 23:11:32 · 1102 阅读 · 0 评论 -
S3C2440上RTC时钟驱动
这是一篇来自网络的文章,不知道出处,对作者表示感谢。S3C2440上RTC时钟驱动一、相关概念1.平台设备:通常在Linux中,把SOC系统中集成的独立外设单元(如:I2C、IIS、RTC、看门狗等)都被当作平台设备来处理。在Linux中用platform_device结构体来描述一个平台设备,在2.6.32内核中定义在:include/linux/platform_device.转载 2012-05-18 23:00:26 · 930 阅读 · 0 评论 -
s3c6410的UART设备驱动(5)
s3c6410的UART设备驱动(1)的链接s3c6410的UART设备驱动(2)的链接s3c6410的UART设备驱动(3)的链接地址s3c6410的UART设备驱动(4)的链接地址上一篇中说到了这个函数,源码如下:static int s3c6400_serial_probe(struct platform_device *dev){ dbg("s3原创 2012-05-17 22:52:11 · 3466 阅读 · 3 评论 -
s3c6410的UART设备驱动(2)
s3c6410的UART设备驱动(1)的链接地址上一篇说到了第一部分,这一篇说第二部分,如下这部分:在模块初始化是调用uart_register_driver和uart_add_port注册UART驱动并添加端口,在模块卸载时调用uart_unregister_driver和uart_remove_one_port以注销UART驱动并移除端口。1、先说uart_register_d原创 2012-05-17 15:50:18 · 3408 阅读 · 0 评论 -
Linux下s3c6410的GPIO操作(4)
1、前面几篇中,有一篇层调用过一个这样的函数,如下:static __init void s3c64xx_gpiolib_add_4bit(struct s3c_gpio_chip *chip){chip->chip.direction_input = s3c64xx_gpiolib_4bit_input;chip->chip.direction_output = s3c64xx_原创 2012-05-13 16:14:43 · 2280 阅读 · 0 评论 -
Linux下s3c6410的GPIO操作(2)
1、还接着看上一篇的这个函数arch_initcall(s3c64xx_gpiolib_init);static __init int s3c64xx_gpiolib_init(void){s3c64xx_gpiolib_add(gpio_4bit, ARRAY_SIZE(gpio_4bit), s3c64xx_gpiolib_add_4bit);s3c64xx原创 2012-05-13 10:57:57 · 3350 阅读 · 0 评论 -
s3c6410的UART设备驱动(3)
s3c6410的UART设备驱动(1)的链接地址s3c6410的UART设备驱动(2)的链接地址上一篇说到了第二部分,但没说完,这一篇接着说第二部分,如下这部分:在模块初始化是调用uart_register_driver和uart_add_port注册UART驱动并添加端口,在模块卸载时调用uart_unregiste原创 2012-05-17 16:43:25 · 3298 阅读 · 0 评论 -
Linux下s3c6410的GPIO操作(3)
1、接着上一篇上一篇说到s3c64xx_gpiolib_add函数中的s3c_gpiolib_add(chips)这个函数了,并对这个函数进行了分析,但还没分析完,这篇接着分析,/* gpiochip_add() prints own failure message on error. */ret = gpiochip_add(gc);这个函数是上一篇中分析的重点if (ret原创 2012-05-13 15:40:31 · 2822 阅读 · 0 评论 -
Linux下s3c6410的GPIO操作(1)
1、arch/arm/plat-s3c64xx/gpiolib.c文件中有如下:arch_initcall(s3c64xx_gpiolib_init);这个应该实在系统初始化时调用。static __init int s3c64xx_gpiolib_init(void){s3c64xx_gpiolib_add(gpio_4bit, ARRAY_SIZE(gpio_4bit)原创 2012-05-13 09:31:11 · 5992 阅读 · 0 评论 -
s3c6410的UART设备驱动(4)
s3c6410的UART设备驱动(1)的链接 s3c6410的UART设备驱动(2)的链接s3c6410的UART设备驱动(3)的链接 上两篇说了在模块初始化是调用uart_register_driver和uart_add_port注册UART驱动并添加端口,在模块卸载时调用uart_unregister_driver和u原创 2012-05-17 21:22:18 · 2809 阅读 · 0 评论 -
s3c6410的UART设备驱动(1)
1、这段话摘于《设备驱动开发详解》在使用串口核心层这个通用串口tty驱动层的接口后,一个串口驱动要完成的主要工作:(1)、定义uart_driver、uart_ops、uart_port等结构体的实例并在适当的地方根据具体硬件和驱动的情况初始化它们,当然具体设备的驱动可以将这些结构体在新定义的xxx_uart_driver、xxx_uart_ops、xxx_uart_port之原创 2012-05-11 20:13:09 · 5945 阅读 · 0 评论 -
Linux下s3c6410的GPIO操作(7)
没想到一个小小的GPIO操作函数,竟然写了七篇博客,这应该算是最后一篇了。1、s3c6410的GPIO操作函数主要涉及到三个文件,如下所示:arch/arm/plat-s3c64xx/gpiolib.clinux/arch/arm/plat-s3c/gpio.clinux/arch/arm/plat-s3c/gpio-config.c这三个文件中的很多函数都已经讲到原创 2012-05-14 16:38:36 · 2972 阅读 · 0 评论 -
Linux下s3c6410的GPIO操作(6)
1、在 Linux下s3c6410的GPIO操作(3) 这篇博客中少分析了一个函数,当时列出了源码,但没分析,现在补上。什么函数呢?如下所示:#ifdef CONFIG_S3C_GPIO_CFG_S3C64XX/** * s3c_gpio_setcfg_s3c64xx_4bit - S3C64XX 4bit single register GPIO config. * @ch原创 2012-05-14 14:47:36 · 2210 阅读 · 0 评论 -
Linux下s3c6410的GPIO操作(5)
1、我们曾经在前面看到这个函数,源码如下:__init void s3c_gpiolib_add(struct s3c_gpio_chip *chip){struct gpio_chip *gc = &chip->chip;int ret;BUG_ON(!chip->base);BUG_ON(!gc->label);BUG_ON(!gc->ngpio);原创 2012-05-13 17:02:00 · 2983 阅读 · 1 评论 -
GPIO驱动相关笔记
原文地址:http://blog.csdn.net/llxmedici/article/details/6282372打算跟着友善之臂的《mini2440 linux移植开发指南》来做个LED驱动,虽然LED的原理简单得不能再简单了,但是要把kernel中针对于s3c24**的GPIO的一些数据结构,还有函数搞清楚也不是那么轻松的事,所以本文主要简单地说明下LED驱动中的相关数据结构以转载 2012-05-13 09:37:18 · 1695 阅读 · 0 评论 -
s3c6410的RTC在linux中的驱动(3)
s3c6410硬件RTC(实时时钟)的地址链接s3c6410的RTC在linux中的驱动(1)的地址链接s3c6410的RTC在linux中的驱动(2)的地址链接上一篇说到了s3c_rtc_probe函数,但由于太长,而没有说完,这一篇接着上一篇的说。说完了这个函数就可以回到s3c_rtc_probe函数接着说了,下篇再聊。还记的这句话吗?现在接着聊: pr原创 2012-05-19 23:08:14 · 2143 阅读 · 0 评论 -
s3c6410的RTC在linux中的驱动(4)
s3c6410硬件RTC(实时时钟)的链接地址s3c6410的RTC在linux中的驱动(1)的链接地址s3c6410的RTC在linux中的驱动(2)的链接地址s3c6410的RTC在linux中的驱动(3)的链接地址还记得这句话吗?rtc_dev_prepare终于完了,现在回到rtc_device_register函数中。美好的时光总是短暂的,又到原创 2012-05-20 10:12:09 · 2313 阅读 · 0 评论 -
s3c6410的RTC在linux中的驱动(5)
s3c6410硬件RTC(实时时钟)的链接地址s3c6410的RTC在linux中的驱动(1)的链接地址s3c6410的RTC在linux中的驱动(2)的链接地址s3c6410的RTC在linux中的驱动(3)的链接地址s3c6410的RTC在linux中的驱动(4)的链接地址在上一篇中我们在中分析了RTC驱动的注册和注销,重点讲了平台设备驱动的原创 2012-05-20 19:48:11 · 2179 阅读 · 0 评论 -
linux中触摸屏驱动的实现(1)——基于s3c6410处理器
这几篇文章主要是关于linux中触摸屏驱动的,基于s3c6410处理器进行分析。这一篇主要是关于触摸屏设备作为平台设备的实现,还有对应的probe函数和remove函数的源码分析。1、触摸屏模块的加载和卸载函数static char banner[] __initdata = KERN_INFO "S3C Touchscreen driver, (c) 2008 Samsung Elect原创 2012-05-26 18:29:32 · 3794 阅读 · 1 评论 -
linux中触摸屏驱动的实现(3)——基于s3c6410处理器
linux中触摸屏驱动的实现(1)——基于s3c6410处理器的链接地址linux中触摸屏驱动的实现(2)——基于s3c6410处理器的链接地址1、上一篇分析的是两个中断处理函数中的其中一个触摸屏中断,现在来分析另外一个ADC中断,对应的中断函数是stylus_action。当触摸屏在自动X/Y位置转换模式和独立的X/Y位置转换模式时,当坐标数据转换之后会产生IRQ_A原创 2012-05-26 21:53:10 · 2578 阅读 · 1 评论 -
Documentation/fb目录中帮助文档的索引
Index of files in Documentation/fb. If you think something about frame buffer devices needs an entry here, needs correction or you've written one please mail me. 00-INDEX- this file这个翻译 2012-05-25 20:26:36 · 1589 阅读 · 0 评论 -
linux中LCD设备驱动(5)——基于s3c6410平台
s3c6410硬件DISPLAY CONTROLLER(显示控制器)的地址链接linux中LCD设备驱动(1)——framebuffer(帧缓冲)的地址链接linux中LCD设备驱动(2)——基于s3c6410平台的地址链接linux中LCD设备驱动(3)——基于s3c6410平台的地址链接linux中LCD设备驱动(4)——基于s3c6410平台的地址链接原创 2012-05-25 16:34:41 · 2766 阅读 · 0 评论 -
linux中LCD设备驱动(6)——Fbmem.c文件
前面几篇主要关注的是LCD驱动在6410平台上的实现,这一篇来说下linux帧缓冲设备驱动的上层建筑Fbmem.c文件。1、先上第一道菜:1.1、那我们现在来说Fbmem.c (linux2.6.28\drivers\video)文件中的应用程序访问帧缓冲设备的接口,大家对下面这些应该都不陌生吧。:/** * fbmem_init - init frame buffer s原创 2012-05-25 22:02:13 · 7470 阅读 · 0 评论 -
linux中LCD设备驱动(4)——基于s3c6410平台
s3c6410硬件DISPLAY CONTROLLER(显示控制器)的链接地址linux中LCD设备驱动(1)——framebuffer(帧缓冲)的链接地址linux中LCD设备驱动(2)——基于s3c6410平台的链接地址linux中LCD设备驱动(3)——基于s3c6410平台的链接地址我们这一篇来说与具体的TFT显示器有关的部分原创 2012-05-24 22:29:50 · 5465 阅读 · 0 评论 -
linux中LCD设备驱动(1)——framebuffer(帧缓冲)
1、framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。 framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的数据结构原创 2012-05-23 20:23:03 · 9138 阅读 · 0 评论 -
linux中LCD设备驱动(3)——基于s3c6410平台
s3c6410硬件DISPLAY CONTROLLER(显示控制器)的地址链接linux中LCD设备驱动(1)——framebuffer(帧缓冲)的链接地址linux中LCD设备驱动(2)——基于s3c6410平台的链接地址上一篇在说LCD设备驱动对应的probe函数时,没有说完,这一篇接着继续说probe函数。s3cfb_pre_init();上一次说到了这个原创 2012-05-24 18:26:39 · 3579 阅读 · 2 评论 -
linux中LCD设备驱动(2)——基于s3c6410平台
s3c6410硬件DISPLAY CONTROLLER(显示控制器)的链接地址linux中LCD设备驱动(1)——framebuffer(帧缓冲)的链接地址上一篇说了framebuffer帧缓冲的有关知识,这一篇具体的说下LCD驱动的实现。1、LCD设备驱动在linux内核中是作为平台设备存在,所以又要说那些已经说过很多遍的东西。int __devinit s3cf原创 2012-05-24 16:08:10 · 4648 阅读 · 0 评论 -
s3c6410在linux下的WATCHDOG TIMER(看门狗定时器)驱动(2)
s3c6410硬件WATCHDOG TIMER(看门狗定时器)的链接地址s3c6410在linux下的WATCHDOG TIMER(看门狗定时器)驱动(1)的链接地址在上一篇中看了看门狗在linux中驱动实现的整体架构,作为混杂设备和平台设备存在。现在开始看平台设备对应的probe函数。static struct platform_driver s3c2410wdt_drive原创 2012-05-21 21:29:37 · 2787 阅读 · 0 评论 -
Linux驱动修炼之道-混杂设备
原文地址链接 在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。 所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作转载 2012-05-21 19:58:57 · 5745 阅读 · 1 评论 -
s3c6410在linux下的WATCHDOG TIMER(看门狗定时器)驱动(1)
s3c6410硬件WATCHDOG TIMER(看门狗定时器)的链接地址如果对看门狗定时器的硬件不太熟悉,可以看上面这篇文章。还是先说下整体结构,又要说到大家很熟悉的平台设备了,同样看门狗定时器也是作为平台设备存在的,但与以前的不同的地方是,看门狗定时器是一种混杂设备,先介绍下混杂设备。1、混杂设备1.1、混杂设备并没有明确的定义。它的主设备号是10,不同的设备用次设备原创 2012-05-21 10:56:08 · 2852 阅读 · 0 评论 -
s3c6410在linux下的WATCHDOG TIMER(看门狗定时器)驱动(3)
s3c6410硬件WATCHDOG TIMER(看门狗定时器)的地址链接s3c6410在linux下的WATCHDOG TIMER(看门狗定时器)驱动(1)的链接地址s3c6410在linux下的WATCHDOG TIMER(看门狗定时器)驱动(2)的地址链接前面两篇一篇分析了看门狗定时器的驱动架构,另一篇分析了平台设备对应的probe函数,虽然对应的remove函数没原创 2012-05-22 15:46:42 · 3977 阅读 · 0 评论 -
混杂设备动态次设备号分析
原文地址链接今天看驱动源码时,发现一个MISC_DYNAMIC_MINOR宏,于是分析了一下内核源码。先粘出源码。在misc_register函数中,有如下语句: if (misc->minor == MISC_DYNAMIC_MINOR) { int i = DYNAMIC_MINORS; while (--i >=转载 2012-05-21 19:50:06 · 1682 阅读 · 0 评论 -
s3c6410的RTC在linux中的驱动(2)
s3c6410硬件RTC(实时时钟)的链接地址s3c6410的RTC在linux中的驱动(1)的链接地址上一篇主要是关于s3c6410的RTC在linux中驱动实现的整体结构框图,只有明白整体结构,我们才能进行自己的特定平台的RTC设备的驱动开发。这一篇我们就深入分析RTC设备驱动的具体实现。1、根据上一篇的分析,我们直接看Rtc-s3c.c (linux2.6原创 2012-05-19 20:09:22 · 2461 阅读 · 0 评论 -
s3c6410的RTC在linux中的驱动(1)
s3c6410硬件RTC(实时时钟)的链接地址如果对RTC硬件不熟悉的话,可以看上面这篇博客,讲述了硬件有关的内容。1、先从整体上做些分析,大致看了下linux2.6.28\drivers\rtc文件中的kconfig和Makefile文件,在Makefile文件中有如下内容:ifeq ($(CONFIG_RTC_DEBUG),y)EXTRA_CFLAGS += -原创 2012-05-19 17:29:54 · 3148 阅读 · 0 评论 -
s3c2410_gpio_cfgpin函数解析
函数原型:s3c2410_gpio_cfgpin(unsigned int pin,unsigned int function)位置:/linux-2.6.32.2/arch/arm/plat-s3c24xx/gpio.c函数内容:void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function){ v转载 2012-05-13 09:40:18 · 2874 阅读 · 1 评论 -
linux下的nandflash驱动分析(3)——基于s3c6410平台
在上一篇中probe函数中的一个很重要的函数nand_scan函数,现在来说另外一个很重要的函数add_mtd_partitions函数,add_mtd_partitions()会对每一个新建分区建立一个新的mtd_part 结构体,将其加入mtd_ partitions中,并调用add_mtd_device()将此分区作为MTD设备加入mtd_table。成功时返回0,如果分配mtd_part时原创 2012-05-30 21:47:27 · 3302 阅读 · 0 评论 -
linux串口终端驱动——s3c6410平台(四)
接着上一篇的tty线路规程,这一篇主要说明tty最主要的数据结构tty_driver1、tty_driver我认为tty_driver结构体是tty终端设备的根本,他连接了设备和驱动,而且,特定tty设备驱动的主体工作就是填充tty_driver结构体中的成员,实现其中的成员函数,tty_driver结构体如下:struct tty_driver {intmagic;原创 2012-05-03 15:55:23 · 810 阅读 · 0 评论 -
CFI查询(一)
毛德操《嵌入式系统》读书笔记1、介绍一些涉及的数据结构:的mtd_info。这样,只要抓住一个mtd_part数据结构,就可以找到所属的mtd_info结构,再找到相应的map_info结构,进而cfi_private结构,最后到达cfi_ident结构、cfi_pri_intelext结构,还有flchip结构数组chips[]。2、下面我们从sa1100_mtd_i原创 2012-05-03 23:01:09 · 2489 阅读 · 0 评论