- 博客(256)
- 资源 (5)
- 收藏
- 关注
转载 linux设备模型之bus,device,driver分析二
===============================本文系本站原创,欢迎转载!转载请注明出处:http://www.cnblogs.com/gdt-a20=============================== 上篇分析了bus,driver的注册过程,这篇主要分析device的注册,并总结给出个流程图。三、device的注册 还是照例先看一下devi
2012-09-30 02:40:21 1182
转载 linux设备模型之bus,device,driver分析一
===============================本文系本站原创,欢迎转载!转载请注明出处:http://www.cnblogs.com/gdt-a20=============================== 内核的开发者将总线,设备,驱动这三者用软件思想抽象了出来,巧妙的建立了其间的关系,使之更形象化。结合前面所学的知识,总的来说其三者间的关系为b
2012-09-30 02:38:12 1191
转载 linux设备模型深探
------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言Linux设备模型是一个极其复杂的结构体系,在编写驱动程序的时候,通常不会用到这方面的东西,但是。理解
2012-09-30 01:54:26 848
转载 Linux设备模型之platform总线
先注册platform_device,然后再注册platform_driver,如果platform_device的名字和platform_driver的名字匹配上,那么platform_driver将会调用probe()函数。当然,如果platform_device和其他子系统(比如i2c子系统,它们也有probe函数)配合使用的话,也可以不注册platform_driver,我们有其他子系统的
2012-09-30 01:47:13 647
转载 Linux设备模型之input子系统详解
------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言在键盘驱动代码分析的笔记中,接触到了input子系统.键盘驱动,键盘驱动将检测到的所有按键都上报给了input
2012-09-30 01:43:31 1187
转载 Linux设备驱动之I2C架构分析
一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而I2C是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述.可自行
2012-09-30 01:36:12 1210
转载 I2C_BOARD_INFO{} / i2c_register_board_info() / i2c_match_id() / probe()
233/**234 * struct i2c_board_info - template for device creation235 * @type: chip type, to initialize i2c_client.name236 * @flags: to initialize i2c_client.flags237 * @addr: stored in i2c_cli
2012-09-28 16:06:30 15270
原创 The Linux Kernel API
http://docs.huihoo.com/linux/kernel/2.6.26/kernel-api/index.html
2012-09-28 15:39:05 814
转载 i2c_check_functionality() / 如何在驱动中调用i2c设配器帮我们完成数据传输
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA| I2C_FUNC_SMBUS_WORD_DATA))//判定适配器能力 goto exit;i2c_check_functionality用来判定设配器的能力,这一点非常重要。你也可以直接查看对应设配器的能力,如stati
2012-09-28 15:34:30 18231
转载 i2c_master_recv()/i2c_msg {}
inti2c_master_recv(struct i2c_client *client, char *buf ,int count) int i2c_master_recv(struct i2c_client *client, char *buf ,int count)//从芯片中读取数据,并存入buf{ struct i2c_adapter *adap=client->
2012-09-28 15:31:00 3914
转载 linux
i2c_check_functionality()实例解析linux内核I2C体系结构(2)http://www.embedu.org/Column/Column213.htm我对linux理解之i2c 二http://blog.csdn.net/sadamoo/article/details/7968123
2012-09-24 21:11:17 504
转载 linux设备模型之i2c子系统
I2c子系统将i2c控制器(i2c寄存器所在的那块电路)抽象出来,用adapter(适配器)这个结构来描述,可以说一个适配器就代表一条i2c总线,而挂接在i2c总线上的设备是用client这个结构体来表述,另外i2c_bus上的设备链表挂接的不单单是连接的这条i2c上的client,同样adapter也作为一个设备挂在其所在的i2c_bus,也就是说控制器和设备都作为i2c_bus上的设备连接在设
2012-09-23 23:47:47 2173
转载 struct device / device_driver 结构体
一、定义:linux/include/linux/device.hstruct device { struct klist klist_children; struct klist_node knode_parent; /* node in sibling list */ struct klist_
2012-09-23 23:26:45 7308
转载 i2c struct i2c_adapter /i2c_client /i2c_driver /i2c_add_driver() /i2c_register_driver()
1 struct i2c_adapter { 2 struct module *owner; 3 unsigned int id; 4 unsigned int class; // 适配器支持的类型,如传感器,eeprom等 5 const struct i2c_algorithm *algo;
2012-09-23 23:25:54 2323
转载 8张图片让你的emacs水平从走到飞
您也可以参考其他几篇相关的技术图片文章,相信看了以后您对各种工具一定会有更深入的了解和掌控:1. Some useful technical pictures2. vim_mind_mapping3. Vim代码折叠简介4. Gvim设置启动窗口和字体以及配色方案推荐可能大多数人更喜欢用vi,会说vi有多么多么的好,但是实际上emacs也同样的无比强大。只不过正
2012-09-23 13:38:03 1385
转载 linux内核可装载模块(lkm)传参机制 module_param()/module_param_string()
对于如何向模块传递参数,Linux kernel 提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。 使用下面的宏时需要包含头文件。 通过宏module_param()定义一个模块参数: module_param(name, type, perm); name既是用户看到的参数
2012-09-13 17:01:21 12544
转载 class_create(),device_create自动创建设备文件结点
class_create(),device_create自动创建设备文件结点从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一 点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_c
2012-09-06 14:53:44 815
转载 Linux 设备驱动模型中的class(类)
首先,想说明一下,促使我研究class(类)的是因为它能够自动创建/dev下的设备节点。当然class还有其另外的作用,且自动创建设备节点的还有udev系统,udev是处于用户空间的,其自动创建设备节点也是依赖于sysfs文件系统中提供的class类,我有个问题,如果我的内核没有移植好udev系统,只是利用class(类),能不能够自动创建设备节点呢???针对这样一个问题,想写这个文章理清理清一下
2012-09-03 15:44:39 634
转载 I2C
i2c_add_driver函数用法 http://wuyidaxuezhb.blog.163.com/blog/static/185337391201211133547701/Linux I2C驱动完全分析(一)http://www.cnblogs.com/armlinux/archive/2011/04/30/2390827.html
2012-08-30 20:45:18 720
转载 Linux设备驱动之Ioctl控制
大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/ 用户程序所作的只是通过命令码告诉驱动程序它
2012-08-22 19:01:17 685
转载 scull工作过程
scull(simple character utility for loading localities,"区域装载的简单字符工具") 是一个操作内存区域的字符设备驱动程序,这片内存区域就相当于一个字符设备。 scull的优点在于他不和任何硬件相关,而只是操作从内核分配的一些内存。任何人都可以编译和运行scull,而且还看看可以将scull移植到linux支持的所有计算机平台上。
2012-08-21 15:56:58 907
原创 原子操作 atomic_cmpxchg()/Atomic_read()/Atomic_set()/Atomic_add()/Atomic_sub()/atomic_clear_mask()
所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位。因此这里的原子实际是使用了物理学里的物质微粒的概念。原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。原子操作主要用于实
2012-08-21 14:55:55 21099 1
转载 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
函数原型: int alloc_chrdev_region(dev_t *dev, unsigned int -firstminor, unsigned int -count, char *name)头文件 : 函数功能: 动态分配设备编号函数参数说明: 该函数需要传递给它指定的第一个次设备号firstminor(一般为0)和要分配的设备
2012-08-19 14:50:31 1236
转载 Linux字符驱动中动态分配设备号与动态生成设备节点
在驱动程序中初始化入口函数中,向内核注册一个设备后,往往要注册一个类例如static int __init mydriver_init(void) //驱动程序的初始化{ …… MYDRIVER_Major = register_chrdev(0, DEVICE_NAME, &mydriver_fops); //向内核注册一个设备,返回值为注册的主设备号
2012-08-14 22:25:57 1934
转载 Android中HAL如何向上层提供接口总结
参考文献:http://blog.csdn.net/luoshengyang/article/details/6573809http://blog.csdn.net/hongtao_liu/article/details/6060734建议阅读本文时先浏览以上两篇文章,本文是对上两篇文章在HAL对上层接口话题的一个总结.1 什么是HALHAL的全称是
2012-08-08 15:52:52 796
转载 android
http://www.armfans.net/redirect.php?fid=36&tid=2398&goto=nextoldsethttp://www.cnledw.com/blog/1284174/article-46850.html
2012-08-07 21:17:14 396
转载 Android HAL实例解析(3)
5、第二种方法:经过Manager调用service HAL、JNI两层和第一种方法一样,所以后面只分析其他的层次。(1)Manager (属于Framework层) APP通过这个Manager和service通讯。文件:mokoid-read-only /frameworks/base/core/java/mokoid/hardware/LedMan
2012-08-07 21:14:42 764
转载 Android HAL实例解析(2)
4、第一种方法:直接调用service方法的实现过程 下面分析第一种方法中,各层的关键代码。(1)HAL层 一般来说HAL moudle需要涉及的是三个关键结构体:struct hw_module_t;struct hw_module_methods_t;struct hw_device_t; 下面结合代码说明这3个结构的用
2012-08-07 21:13:32 740
转载 Android HAL实例解析(1)
一、概述 本文希望通过分析台湾的Jollen的mokoid 工程代码,和在s5pc100平台上实现过程种遇到的问题,解析Andorid HAL的开发方法。 二、HAL介绍 现有HAL架构由Patrick Brady (Google) 在2008 Google I/O演讲中提出的,如下图。 Android的H
2012-08-07 20:43:45 875
转载 cdev_alloc/cdev_init、cdev_add、cdev_del
内核中每个字符设备都对应一个 cdev结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev {struct kobject kobj; // 每个 cdev都是一个 kobjectstruct module *owner; //指向实现驱动的模块const struct file_op
2012-08-07 14:26:54 11017 1
转载 Android下的Android.mk文件
3rdparty/atv/led/special/driver/Android.mk+led_test.c./mk sp8810ga u adr 3rdparty/atv/special/driver 编译出来的可执行文件位于 out/target/product/hsdroid/system/bin 目录下。LOCAL_MODULE_TAGS 选项说明LOCAL_MODULE_T
2012-08-06 19:21:27 1017
原创 cdev、file operations 结构体
1、实现 cdev、file operations 结构体2、申请设备号:alloc_chrdev_region(...)3、为 cdev 申请空间 kmalloc(sizeof(struct cdev),GFP_KERNEL)4、关联 cdev 、file operations , cdev_init(&dev->cdev,&file_operations)5、关联设备号和cde
2012-08-03 11:42:58 1250
转载 cdev结构 and MKDEV
MKDEV 功能:将主设备号和次设备号转换成dev_t类型cdev结构在Linux2.6内核中一个字符设备用cdev结构来描述,其定义如下:struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations*
2012-08-02 12:43:22 11812 2
转载 Unix编程之size_t、ssize_t
对于赶时间的朋友,只看第一段就好了。 首先,我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int,有没有注意到,它和long数据类型有啥区别?其实就是一样的。size_t 就是无符号型的ssize_t,也就是unsigned long/ unsigned int (在32位下),不同的编译器或系统可能会有区别,主要是因为
2012-08-02 09:37:21 807
转载 在linux下如何将ttyS0改成别的号,比如ttyS4什么的,我的系统只有一个串口。
不明白楼主为什么要这样做,不过是有办法的。ttyS0只是代表一个设备节点,它存在主设备号和次设备号。一个设备节点包含了这两个设备号,Linux系统通过这两个号唯一的确定一个驱动实例。一个实际存在的串口只能够存在一个驱动实例。大多数的驱动实例只支持单一现成的读写操作,所以不允许多个程序同时打开设备文件,典型的一种就是串口,它只允许一个程序打开。一个驱动实例对应一组唯一的主设备号和次设备号
2012-08-01 23:29:53 6747 1
转载 电容触摸屏
http://hi.baidu.com/god_sperm/blog/item/2aaac228e8a1ece8e7cd400a.html
2012-07-30 15:27:34 748
转载 Android init.rc
android启动过程中init.c文件分析http://blog.csdn.net/yinwei520/article/details/6591015 在Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被init可执行程序解析。 init.rc是在init启动后被执行的启动
2012-07-26 23:30:30 666
原创 创建CTP服务
tpon bootinsmod /system/sps/sprd_multi_tp/ko/sprd_multi_tp.koservice ctpcali /system/bin/ctpcaliuser rootoneshot
2012-07-26 11:33:49 607
转载 电阻式触摸屏的驱动程序和详细注释
http://os.chinaunix.net/a2009/1127/998/000000998949.shtmlhttp://blog.chinaunix.net/uid/22935566/frmd/105748.htmlhttp://wenku.baidu.com/view/1297b11ca8114431b90dd8a4.html#include #include
2012-07-11 20:43:06 864
原创 gpio_direction_output 与 gpio_set_value
gpio_set_value(port_num,0/1) 一般只是在这个GPIO口的寄存器上写上某个值,至于这个端口是否设置为输出,它就管不了!而gpio_direction_output (port_num,0/1),在某个GPIO口写上某个值之后,还会把这个端口设置为输出模式。 因此,有人也许就会建议,把gpio_set_value这个函数直接去掉不用,是否可以,显然是可以
2012-07-11 20:23:16 854
slickedit v18 18.0.1.2 序列号 破解
2013-11-26
slickedit 2013 v18 win linux mac
2013-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人