
驱动
文章平均质量分 77
yuyin86
这个作者很懒,什么都没留下…
展开
-
linux2.6中的platform和of_platform机制B
A platform机制platform_driver_register,什么时候调用PROBE函数 注册后如何找到驱动匹配的设备platform_driver_register(struct platform_driver *drv)注册后如何找到驱动匹配的设备struct platform_driver { int (*probe)(struct platf转载 2014-08-21 00:09:11 · 1989 阅读 · 0 评论 -
linux 内核与用户空间通信之netlink使用方法
1 引言Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管转载 2013-08-05 12:49:45 · 1169 阅读 · 0 评论 -
Linux设备模型理解
本文从四个方面来总结一些内容: 1.底层数据结构:kobject,kset.2.linux设备模型层次关系:bus_type,device,device_driver.3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析. 4.面向对象的思想在linux设备模型中的应用分析. 一、底层数据结构:kobject,kset先说说模型的意义: 总体来说是为了转载 2013-07-27 19:41:02 · 646 阅读 · 0 评论 -
linux驱动头文件说明
#include linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。#include在l转载 2013-07-26 19:16:50 · 671 阅读 · 0 评论 -
使用 /sys 文件系统访问 Linux 内核
使用 /sys 文件系统访问 Linux 内核sysfs 虚拟文件系统提供了一种比 proc 更为理想的访问内核数据的途径程 任全 (crquan@gmail.com), Linux 内核开发者、存储开发工程师, UIT(创新科存储技术有限公司)简介: sysfs 是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类转载 2013-07-26 19:16:01 · 1073 阅读 · 0 评论 -
debugfs, tmpfs, proc, sysfs 介绍
debugfs, tmpfs, proc, sysfs 介绍我们经常看到自己的 linux 操作系统里除了 ext3 之外, 还有很多其他的文件系统, 如 debugfs, tmpfs, proc, sysfs 等. 本文简介这些文件系统是做什么的.kernel space - user space interface 实际上, 除了 tmpfs 之外,转载 2013-07-26 19:25:44 · 2403 阅读 · 0 评论 -
libudev and Sysfs Tutorial
Introduction and MotivationOn Unix and Unix-like systems, hardware devices are accessed through special files (also called device files or nodes) located in the /dev directory. These files are r转载 2013-07-26 19:02:01 · 1084 阅读 · 0 评论 -
Libudev和sysfs指南 翻译
在unix和类unix系统中,硬件设备可以通过/dev目录下的特殊文件进行访问,这些文件又被称为设备文件或设备节点。通过操作普通文件一样读写这些文件可以利用内核设备驱动程序与硬件设备通信,而这个过程不是读写磁盘上的数据,网上有许多描述/dev目录下文件细节的资源。以前,这些特殊文件是在系统安装的时候通过mknod命令创建的,最近几年,linux系统开始使用udev来在运行时管理/dev下的设备文件转载 2013-07-26 19:14:24 · 1734 阅读 · 0 评论 -
Linux驱动模型简介
Linux驱动模型可以从底层和上层两个层次来探究: 设备底层模型 和 设备模型的上层容器Linux驱动模型和sysfs文件系统紧密相连,在内核中注册的每个kobject对象对应sysfs文件系统中的一个目录。sysfs的引入是为了方便调试,设备模型的开发者将设备结构树导出为一个文件系统,这就是sysfs文件系统,它可以帮助用户能以一个简单文件系统的方式来观察系统中各种设备的拓扑结构。转载 2013-07-26 19:04:08 · 739 阅读 · 0 评论 -
关于Linux driver中device_create()使用的注意事项
通过驱动模块的加载在/dev下创建设备文件,在驱动模块卸载时又自动的删除在/dev下创建的设备文件非常方便。而这个过程就是通过device_create()和device_destroy()内核函数完成的,在Linux2.6.27之前是class_device_create()和class_device_destroy()。最近在开发过程中发现device_create()参数使用很灵活,一不小心转载 2013-06-07 23:55:13 · 864 阅读 · 0 评论 -
PF_NETLINK应用实例NETLINK_KOBJECT_UEVENT具体实现--udev实现原理
相对于linux来说,udev还是一个新事物。然而,尽管它03年才出现,尽管它很低调(J),但它无疑已经成为linux下不可或缺的组件了。udev是什么?它是如何实现的?最近研究Linux设备管理时,花了一些时间去研究udev的实现。 udev是什么?u 是指user space,dev是指device,udev是用户空间的设备驱动程序吗?最初我也这样认为,调试内核空间的程序要比转载 2013-08-05 12:50:25 · 1155 阅读 · 0 评论 -
Linux IO调度器相关算法介绍(转)
IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法。存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间。然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平衡这两者,IO调度器提供了多种调度算法来适应不同的IO请求场景。其中,对数据库这种随机读写的场景最有利的算法是DEANLINE。接着我们按照从简单到复杂的顺序,迅速扫一下Linux 2.6内核提供的几转载 2013-11-24 18:49:34 · 897 阅读 · 0 评论 -
Linux内核的Oops与Linux Kernel Panic报错解决思路
Linux内核还有没有给我们留下其他的有用信息。Oops: 0002 [#1]这里面,0002表示Oops的错误代码(写错误,发生在内核空间),#1表示这个错误发生一次。Oops的错误代码根据错误的原因会有不同的定义,本文中的例子可以参考下面的定义(如果发现自己遇到的Oops和下面无法对应的话,最好去内核代码里查找): * error_code: *转载 2013-10-27 10:30:35 · 8386 阅读 · 1 评论 -
阅读ARm芯片手册 阅读方法
一 overview1 table of contents -***2 product overview -*** 芯片概述3 feature *** 每一个功能的特点4 block diagram -****** 芯片的内部组织结构框图 4.1 arm core 芯片所选用的arm内核版本 4.2 periptheral 芯片转载 2014-03-10 23:54:48 · 2680 阅读 · 0 评论 -
linux 内核线程创建
转载http://lupaworld.blogbus.com/logs/37201575.html1. 头文件#include //wake_up_process()#include //kthread_create()、kthread_run()#include //IS_ERR()、PTR_ERR()转载 2013-12-27 00:45:02 · 2935 阅读 · 0 评论 -
内核态和用户态通讯知识收集
内核态和用户态通讯知识收集在一台运行 Linux 的计算机中,CPU 在任何时候只会有如下四种状态:【1】 在处理一个硬中断。【2】 在处理一个软中断,如 softirq、tasklet 和 bh。【3】 运行于内核态,但有进程上下文,即与一个进程相关。【4】 运行一个用户态进程。 1. Linux中的进程间通信机转载 2013-12-24 22:50:31 · 923 阅读 · 0 评论 -
relayfs介绍
relayfs介绍Relay 是一种从 Linux 内核到用户空间的高效数据传输技术。通过用户定义的 relay 信道,内核空间的程序能够高效、可靠、便捷地将数据传输到用户空间。通过灵活运用改造也可双向传输。Relay 特别适用于内核空间有大量数据需要传输到用户空间的情形。Relay 的前身是 RelayFS,即作为 Linux 的一个新型文件系统,即用虚拟文件系统的方式(内核创建,用户空转载 2013-12-23 23:17:33 · 962 阅读 · 0 评论 -
使用 ftrace 调试 Linux 内核,第 2 部分
使用 ftrace 调试 Linux 内核,第 2 部分ftrace 使用ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第二部分,通过示例介绍了如何使用 ftrace 中的跟踪器,并对不同格式的跟踪信息进行转载 2013-12-19 01:02:46 · 984 阅读 · 0 评论 -
lmbench的使用方法 与CPU上下文切换的次数和时间(context switch)
一、引言要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具,一般来说为了确保测试结果的公平和权威性,会选用比较成熟的商业测试软件。但在特定情形下,只是想要简单比较不同系统或比较一些函数库性能时,也能够从开源世界里选用一些优秀的工具来完成这个任务,本文就通过lmbench 简要介绍系统综合性能测试。二、测试软件Lmbench是一套简易,可移植的,符合ANSI/转载 2013-12-19 01:02:38 · 10801 阅读 · 1 评论 -
kernel oops 分析
https://groups.google.com/group/linux.kernel/browse_thread/thread/b70bffe9015a8c41/ed9c0a0cfcd31111from Linus原文如下:---On Mon, 7 Jan 2008, Kevin Winchester wrote: > J. Bruce Fields wrote:转载 2013-12-17 23:39:14 · 1177 阅读 · 0 评论 -
Oops, Linux crashes
Oops, Linux crashesYou've just started kernel development and got something like that: Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = c0004000 [00000000] *pgd转载 2013-12-17 11:38:45 · 1080 阅读 · 0 评论 -
Linux 自检和 SystemTap
用于动态内核分析的接口和语言现代的操作系统内核提供自检 功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为 SystemTap 的开放源码基础设施,它为 Linux® 内核提供这种动态的自检。1 评论:M. Tim Jones, 自由作家200转载 2013-12-14 00:25:05 · 887 阅读 · 0 评论 -
Linux kernel测试初探
来源:百度质量部前言Linux基金会在4月3日公布了Linux开发年报,向我们展示了linux kernel作为世上最大开源合作项目之一的魅力。自2005年以来,共有800家公司7800名开发人员参与Linux kernel开发,最近一年也有200家公司共1000名开发人员参与。目前在Linus Torvalds的监督之下,Linux核心约2到3个月发布一个新的稳定版本,每次更转载 2013-12-05 01:09:20 · 988 阅读 · 0 评论 -
Linux平台设备驱动
在设备驱动程序中经常会见到和platform相关的字段,分布在驱动程序的多个角落,这也是2.6内核中比较重要的一种机制,把它原理弄懂,对以后分析驱动程序很有帮助:在linux2.6设备模型中,关心总线,设备,驱动这三个实体,总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动。相反,在系统每注册一个驱动的时候,寻找与之匹配的设备,匹配是由总线来完成的。一个现实的Linux 设转载 2013-06-07 23:54:27 · 532 阅读 · 0 评论 -
Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的转载 2013-04-26 23:52:24 · 573 阅读 · 0 评论 -
Linux 2440 LCD 控制器
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn一、开发环境主 机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2.6.30.4编译转载 2013-01-10 21:01:55 · 656 阅读 · 0 评论 -
对象间通信机制-事件、回调等
早期程序使用输入-操作-输出的机制,整个流程完全由程序员事先设定好。事件驱动机制是指程序按照事件发生的次序随机执行而不是按照编程时就定义好的顺序执行当某个事件发生时程序将找到相应的事件处理程序来处理事件。所以具有顺序结构的编程显然不具有事件驱动的先决条件。面向对象程序设计当中采用的就是事件驱动机制。比如说鼠标左击、双击都是具体事件,根据这些事件启用预先设置的相应动作就是事件驱动机制。注转载 2012-09-26 20:54:06 · 1924 阅读 · 0 评论 -
ARM嵌入式常用开发工具介绍及插画开发流程(更新)
这里接着前边的开发环境的配置说,其实用于开发的话,基本的开发环境已经架构好了,不过由于嵌入式开发环境的特殊性(交叉编译),我们还会用到一些其他的外围工具,这里做简要的说明。并重新介绍一下整个开发环境中,各个工具的使用,及一个简单应用的开发流程。 SecureCRT : 串口输出显示工具、SSHclient 。 SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿转载 2012-07-26 22:54:33 · 871 阅读 · 0 评论 -
串行通信i2c总线协议简明教程(连接方式,读写时序,24CXX系列EEPROM)
一、技术性能:标准速率100kbit/s,快速模式400kbit/s,高速模式略;支持多机通讯;支持多主控模块,但同一时刻只允许有一个主控; 由数据线SDA和时钟SCL构成串行总线;每个电路和模块都有唯一的地址; 每个器件可以使用独立电源但是必须共地;----------------------------------转载 2012-03-15 21:07:50 · 2052 阅读 · 0 评论 -
linux内核驱动中_IO, _IOR, _IOW, _IOWR 宏的用法与解析
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域: bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。 bit29~bit15 14位为 "数据大小" 区,表示 ioctl() 中的 ar转载 2012-03-14 08:51:48 · 591 阅读 · 0 评论 -
FVID驱动
DM642 FVID驱动 TI公司为开发DSP的外设驱动程序,推出了DSP/BIOS Device Driver Kit(DDK),定义了标准的设备驱动模型,并提供了一系列的API接口。外设驱动程序分为两层:① 类驱动(class driver)。类驱动程序用来为应用程序提供接口。这部分程序与设备无关,主要功能包括维护设备数据缓冲区,向上提供API接口供应用层程序调用,并协调应用程转载 2012-03-09 19:24:26 · 884 阅读 · 0 评论 -
Linux内核访问外设I/O资源的方式
Author: DongasDate: 08-08-02 我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。 Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。 一、动态转载 2012-03-09 08:59:15 · 440 阅读 · 0 评论 -
Linux驱动开发学习的一些必要步骤
1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够通过dmesg看到输出。 5. 写一完整驱动, 加上read,转载 2012-03-24 10:10:37 · 541 阅读 · 0 评论 -
copy_to_user的使用失误
copy_to_user是编写驱动时经常遇到的函数这个函数的主要作用就是从内核空间拷贝一块儿数据到用户空间。它有如下三个参数: To 目标地址,这个地址是用户空间的地址; From 源地址,这个地址是内核空间的地址; N 将要拷贝的数据的字节数。如果数据拷贝成功,则返回零;否则,返回没有拷贝成功的数据字节数。让人比较头疼的是平时字符型驱动写习转载 2012-03-05 09:55:13 · 3290 阅读 · 0 评论 -
用户空间访问I2C设备驱动
关于Linux下如何编写芯片的I2C驱动,本系列第一篇文章《手把手教你写Linux I2C设备驱动》(见 http://www.linuxidc.com/Linux/2012-01/51289.htm )对编写I2C Client 设备驱动的关键代码给出了初步的讲述和示例,第二篇文章《Linux下读写芯片的I2C寄存器》(见http://www.linuxidc.com/Linux/2012-转载 2012-02-16 20:06:03 · 1359 阅读 · 0 评论 -
手把手教你写Linux I2C设备驱动
Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片、音视频采集芯片、音视频输出芯片、EEROM芯片、AD/DA转换芯片等等。 Linux I2C驱动涉及的知识点还是挺多的,主要分为Linux I2C的总线驱动(I2C BUS Driver)和设备驱动(I2C转载 2012-02-16 18:21:55 · 2237 阅读 · 5 评论 -
编写UDEV规则(howto)
Writing udev rulesby Daniel Drake (dsd)Version 0.74The most recent version of this document can always be found at: http://www.reactivated.net/writing_udev_rules.html ContentsInt转载 2012-09-20 08:58:19 · 904 阅读 · 0 评论 -
linux内核模块编程
主题: linux内核模块的程序结构--模块加载函数(必须),模块卸载函数(必须),模块许可证声明(必须),模块参数(可选),模块导出符号(可选),模块作者的等信息声明(可选)一个linux内核模块主要由以下几个部分组成。1、模块加载函数"用module_init()来指定"(必须) 当通过insmod和modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本转载 2012-11-27 09:26:08 · 543 阅读 · 0 评论 -
How Computers Boot Up
The previous post described motherboards and the memory map in Intel computers to set the scene for the initial phases of boot. Booting is an involved, hacky, multi-stage affair – fun stuff. Here’s转载 2012-11-12 08:55:58 · 825 阅读 · 0 评论 -
Linux平台设备驱动 platform_device
Linux平台设备驱动在设备驱动程序中经常会见到和platform相关的字段,分布在驱动程序的多个角落,这也是2.6内核中比较重要的一种机制,把它原理弄懂,对以后分析驱动程序很有帮助:在linux2.6设备模型中,关心总线,设备,驱动这三个实体,总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动。相反,在系统每注册一个驱动的时候,寻找与之匹配的设备,匹配是由总线来完成的转载 2012-12-08 09:08:34 · 1325 阅读 · 0 评论