自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

转载 闲聊linux中的input设备(转)

用过linux的哥们都知道,linux所有的设备都是以文件的形式实现的,要访问一个设备,我们只需要以open、read、write的形式对设备的进行操作就可以了。在linux系统的/dev目录下,罗列了当前系统支持的所有设备。运行 ls /dev一下,着实吓了一大跳,[root@localhost ~]# ls /devadsp full midi

2012-09-18 20:34:18 3251

转载 MIPI显示标准

当移动互连网设备变得日益流行时,越来越多的厂商竞相设计最新和最时尚的产品。低功耗总是手持设备最关心的事情,这包括它们显示部件的功耗。根据市场调查公司iSuppli的调查结果,Intel提供的用于这些设备的处理器占据了市场的半壁江山。为了取代传统、过时的RGB并行总线,Intel在最近发布的Moorestown处理器中使用了LVDS和MIPI DSI总线接口。MIPI DSI是面向移动手

2012-09-13 15:16:20 1433

转载 我对linux理解之i2c 二

我们下面开始分析i2c的通信,即读写过程。我们先看读函数,对应i2c core中的i2c_master_recv:int i2c_master_recv(struct i2c_client *client, char *buf ,int count){    struct i2c_adapter *adap=client->adapter;//通过client访问adapter

2012-09-11 17:26:36 8236

转载 我对linux理解之i2c一

i2c设备是非常普遍的一种设备,我们现在开始i2c子系统的分析。我们先从注册开始:static const struct i2c_device_id IT7260_ts_id[] = {     { IT7260_I2C_NAME, 0 },    { }     };static struct i2c_driver IT7260_ts_driver = {     .

2012-09-11 17:25:17 2375

转载 深入源代码设计i2c驱动@linux2.6.32.2

不管怎样,先列出在linux2.6.32.2下最简短的i2c程序,因为在跟踪内核代码的过程中你会关注到它。一、最简驱动/* at24c08.c */#include  #include  #include  static  int  at24c08_probe(struct  i2c_client  *client,  const  struct  i2c_de

2012-09-11 17:07:07 1111

转载 i2c驱动之难点释疑

一、关于匹配i2c_client->dev和i2c_driver->driver的总线类型都是i2c_bus_type。 i2c_adapter->dev的总线类型并不是i2c_bus_type。在注册后设备与驱动匹配,是i2c_client->dev和i2c_driver->driver的匹配。i2c_client的建立都是依赖于 "new style" driversi2c_d

2012-09-11 16:39:24 768

转载 Linux设备驱动之I2C架构分析

一:前言  I2c是philips提出的外设总线。I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线。另外,I2C是一种多主机控制总线。它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以。而I2C是基于multi master机制。一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述

2012-09-11 16:35:30 591

转载 实例解析linux内核I2C体系结构(2)

作者:刘洪涛,华清远见嵌入式学院讲师。四、在内核里写i2c设备驱动的两种方式前文介绍了利用/dev/i2c-0在应用层完成对i2c设备的操作,但很多时候我们还是习惯为i2c设备在内核层编写驱动程序。目前内核支持两种编写i2c驱动程序的方式。下面分别介绍这两种方式的实现。这里分别称这两种方式为“Adapter方式(LEGACY)”和“Probe方式(new style)”。(

2012-09-11 16:29:20 649

转载 实例解析linux内核I2C体系结构(1)

作者:刘洪涛,华清远见嵌入式学院讲师。一、概述谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完成。下面比较下这两种驱动。第一种方法的好处(对应第二种方法的劣势)有:        ●    思路比较直接,不需要花时间去了解linux内核中复杂的I2C子系统的操作方法。

2012-09-11 16:28:47 652

转载 Android Camera Framework Stream(一)

现在我们尝试从最开始的启动流程来熟悉android camera的整体framework流程:首先从上图的各个步骤来逐一分析流程,后续会根据具体的一些点进行内容的添加和扩充: ? Camera.javapackages/apps/camera/src/com/android/最上层的应用就是从这个文件开始。该文件集中了整个android上层应用的所有相关内容,当然更多的则为

2012-09-11 16:09:48 778

转载 Android Camera 架构

第一部分 Camera概述  Android的Camera包含取景器(viewfinder)和拍摄照片的功能。目前Android发布版的Camera程序虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在Android的进程间通讯Binder的结构上。  以开源的Android为例,Camera的代码主要在以下的目录中:  Camera的JAVA程序的路

2012-09-11 16:04:15 740

转载 Linux kernel起来后android 之init详解

Linux kernel起来后运行的第一个应用程序就是init,Init属于linux下一个应用程序,其源码在 system/core/init中,main是应用程序的入口。从main()函数就可以知道init主要功能。main()(1)安装SIGCHLD信号。(如果父进程不等待子进程结束,子进程将成为僵尸进程(zombie)从而占用系统资源。因此需要对SIGCHLD信号做出处理,回收

2012-09-11 14:04:12 580

转载 Android camera系统开发之IPC (五)

四 连接建立后的client和Service的通信过程:这里以CameraService::connect()为例进行说明。 @Camera.cppsp Camera::connect(){    LOGV("connect");    sp c = new Camera();    const sp& cs = getCameraService();     //

2012-09-11 14:02:30 524

转载 Android camera系统开发之IPC (四)

三 获取一个CameraService服务代理 获取服务接口的唯一方法就是通过IServiceManager::getService()函数。假设Camera preview需要获取一个ICameraService。 @camera.cppconst sp& Camera::getCameraService(){    Mutex::Autolock _l(mLock)

2012-09-11 14:00:44 755

转载 Android camera系统开发之IPC (三)

二,CameraSerivce服务的注册同样在init.rc中能看到如下语句   service media /system/bin/mediaserver    user mediagroup system audio camera graphics inet net_bt net_bt_admin这个服务的入口是Main_mediaservice.c中的main()函数。而

2012-09-11 13:58:19 777

转载 Android camera系统开发之IPC (二)

一      系统服务管理器启动  参考Android init 详细过程分析 ,我们知道系统在INIT进程中会分析INIT.RC我们从init.rc中能看到如下代码@init.rc…service servicemanager /system/bin/servicemanager    user system    critical    onrestar

2012-09-11 13:57:13 506

转载 Android camera系统开发之总括

最近在从事有关Android Camera开发相关的工作,发现这一块还是比较复杂,从网络上也得到很多相关资料,但是都比较分散,对于出现的问题很难有个全面地了解与定位。   根据我自己的习惯,我比较喜欢把整个框架先大概了解一下,再针对某个部件进行认真分析,这样在出现问题的时候就可以做到有的放矢。      发现系统无法上传我的图片,可能是我本地加密的原因 ,只能这样凑合了

2012-09-11 13:55:21 707

转载 Android camera系统开发之IPC (一)

Android使用Binder机制来实现IPC, Binder通信是借助linux的binder driver来实现的,两个进程间IPC感觉就象是一个进程进入另一个进程执行代码一样,而且在本地能返回远端函数的返回结果。Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用来处理到来的调用请求的消息,包括请求的消息,和远端响应的消息。Android中的Binder通信是基于Ser

2012-09-11 13:53:09 612

转载 从Camera来看Binder IPC机制

Camera App通过framework中Camera java类进入jni部分,在android_hardware_Camera.cpp中:android_hardware_Camera_native_setup(){  sp camera = Camera::connect();}这里调用Camera类的connect函数,返回一个Came

2012-09-11 11:48:23 659

转载 FS_S5PC100平台上Linux Camera驱动开发详解(一)

作者:刘洪涛,华清远见嵌入式学院讲师。说明:        理解摄像头驱动需要四个前提:        1)摄像头基本的工作原理和S5PC100集成的Camera控制器的工作原理        2)platform_device和platform_driver工作原理        3)Linux内核V4L2驱动架构        4)Linux内核I2C驱动架构

2012-09-11 10:20:12 609

转载 FS_S5PC100平台上Linux Camera驱动开发详解(二)

作者:刘洪涛,华清远见嵌入式培训中心讲师。4-3 摄像头的初始化流程及v4l2子设备驱动这个问题弄清楚了以后下面就来看获得Camera信息以后如何做后续的处理:在fimc_init_global调用结束之后我们获得了OV9650的信息,之后在probe函数里面就会继续调用一个函数:fimc_configure_subdev().这个函数的实现如下:/*

2012-09-11 10:19:19 807

转载 FS_S5PC100平台上Android Camera架构分析

作者:刘洪涛,华清远见嵌入式培训中心讲师。1. Android-Camera架构分析Android的camera系统架构自上而下分别为应用层-框架层-硬件抽象层-linux驱动层。层与层之间通过Binder、回调函数或者系统调用联系。我们主要关心的是CameraService与CameraHAL之间的联系以及CameraHAL本身的实现。2. CameraS

2012-09-11 10:04:27 607

转载 linux内核input子系统解析

作者:刘洪涛,华清远见嵌入式学院讲师。       Android、X windows、qt等众多应用对于linux系统中键盘、鼠标、触摸屏等输入设备的支持都通过、或越来越倾向于标准的input输入子系统。    因为input子系统已经完成了字符驱动的文件操作接口,所以编写驱动的核心工作是完成input系统留出的接口,工作量不大。但如果你想更灵活的应用它,就需要好好的分析下input子系

2012-09-07 20:34:24 518

转载 Linux设备驱动程序学习(6) -高级字符驱动程序操作[(3)设备文件的访问控制]

Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制] 提供访问控制对于一个设备节点来的可靠性来说有时是至关重要的。这部分的内容只是在open和release方法上做些修改,增加一些检查机制既可。独享设备最生硬的访问控制方式是只允许一个设备一次被一个进程打开(独享),这是一个设备驱动最简单的访问控制。实现十分简单,具体的代码看实验

2012-09-07 17:11:43 500

转载 Linux设备驱动程序学习(5) -高级字符驱动程序操作[(2)阻塞型I/O和休眠]

这一部分主要讨论:如果驱动程序无法立即满足请求,该如何响应?(65865346)一、休眠进程被置为休眠,意味着它被标识为处于一个特殊的状态并且从调度器的运行队列中移走。这个进程将不被在任何 CPU 上调度,即将不会运行。 直到发生某些事情改变了那个状态。安全地进入休眠的两条规则:(1) 永远不要在原子上下文中进入休眠,即当驱动在持有一个自旋锁、seqlo

2012-09-07 17:10:02 1883

转载 Linux设备驱动程序学习(4)-高级字符驱动程序操作[(1)ioctl and llseek]

今天进入《Linux设备驱动程序(第3版)》第六章高级字符驱动程序操作的学习。一、ioctl大部分设备除了读写能力,还可进行超出简单的数据传输之外的操作,所以设备驱动也必须具备进行各种硬件控制操作的能力. 这些操作常常通过 ioctl 方法来支持,它有和用户空间版本不同的原型:int (*ioctl) (struct inode *inode,

2012-09-07 17:09:26 741

转载 Linux设备驱动程序学习(3)-并发和竞态

今天进入《Linux设备驱动程序(第3版)》第五章并发和竞态的学习。对并发的管理是操作系统编程中核心的问题之一。 并发产生竞态,竞态导致共享数据的非法访问。因为竞态是一种极端低可能性的事件,因此程序员往往会忽视竞态。但是在计算机世界中,百万分之一的事件可能没几秒就会发生,而其结果是灾难性的。一、并发及其管理竞态通常是作为对资源的共享访问结果而产生的。在设计自己的

2012-09-07 17:08:18 615

转载 Linux设备驱动程序学习(1)

Linux设备驱动程序学习(1)-字符设备驱动程序今天进入《Linux设备驱动程序(第3版)》第三章字符设备驱动程序的学习。这一章主要通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。

2012-09-07 17:06:05 464

转载 Linux内核中等待队列的几种用法

作者:杨硕,华清远见嵌入式学院讲师。Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠):     睡眠方式:wait_event, wait_event_interruptible             唤醒方式:wake_up (唤醒时要检测

2012-09-07 16:22:10 616

转载 Linux中的工作队列

工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一些变化,因此本文分成两个部分对2.6.20之前和之后的版本分别做介绍。

2012-09-07 16:10:47 323

转载 workqueue

什么是workqueue?Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程, Workqueue机制的实现Workq

2012-09-07 11:05:58 318

转载 在驱动模块初始化函数中实现设备节点的自动创建

Linux是一套免费使用和自由传播的操作系统,它主要用于基于Intel系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的,其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。 设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点

2012-09-06 15:35:06 561

转载 input子系统详解

Input子系统详解一.Input子系统架构Linux系统提供了input子系统,按键、触摸屏、键盘、鼠标等输入都可以利用input接口函数来实现设备驱动,下面是Input子系统架构:Input子系统架构二.Input系统的组成输入子系统由驱动层(Drivers),输入子系统核心层( Input Core )和事件处理层(Event Handler)三部份组

2012-09-06 15:32:28 458

转载 Linux的i2c驱动详解

1 简介  I2C 总线仅仅使用 SCL 、 SDA 两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和 PCB 板布线空间的占用。因此, I2C 总线被非常广泛地应用在 EEPROM 、实时钟、小型 LCD 等设备与 CPU 的接口中。 Linux I2C GPIO驱动是在没有专用I2C芯片的情况下,用GPIO口来模拟I2C总线时序,完成Linux与I2C设备的通

2012-09-06 15:30:59 596

转载 Camera模块解析之驱动篇

Camera模块解析之驱动篇1  手机摄像头功能概述手机摄像头功能由多个功能模块组成,主要三个部分,采集,加工,显示。(1)采集部分由感光的sensor完成,通过CAM IF接口与手机芯片内的CAM连接。(2)CAM对CAM IF数据进行加工,主要是格式转换,特殊效果等。最终处理出来的一帧数据,存在内存中。(3) 手机的刷新线程,使用手机内部的DMA功能,或

2012-09-06 15:20:53 1027

转载 device_register和驱动driver_register先后注册的影响和关系

开始我的博文之前,最近一天来的感受,我只想说一下,Linux的世界,玩在表面是轻松的,但是玩在内部那就是找死。佩服那些写源码的人。真的佩服。  这段世界大概半个月了,开始linux驱动的真正开发,也是从基层开始看的。相比以为linux下的驱动就是点灯之类的Led来说,现在我的感受就是,那些完全就是表面的东西。核心层次的驱动,完全不是这么随随便便写出来的。也正好说明现在很多公司正在写

2012-09-05 19:27:26 4149

转载 基本的数据结构学习笔记:kref

本文简单介绍了设备驱动模型中最最简单的一个数据结构:kref,它作为内核中最基本的引用计数而存在。首先直观地介绍该数据结构及操作它的一些方法,然后再介绍其具体的用法。参考:kref.h kref.c kref.txt一、kref及操作kref的方法struct kref { atomic_t refcount;};可以看到kref结构体的成员只有一个原子变量refcou

2012-09-05 15:57:24 525

转载 Linux设备驱动模型学习之基础篇--Kobject.txt翻译

----------------------------------------------------------------------------------------------------------------------------------------------------------本帖翻译了Linux2.6.29的Kobject.txt文档,由于英文水平不好,所以很多

2012-09-05 15:55:43 622

转载 Linux设备驱动模型学习之基础中的基础篇

该帖中所包含的都是在阅读内核代码时需要了解的一些基本概念,后续还会不断增加的,欢迎大家批评指正,谢谢。 1、  typeoftypeof并非ISO C的关键字,而是gcc对C的一个扩展。typeof是一个关键字(类似sizeof),用于获取一个表达式的类型。举个简单的例子:char tt;typeof(tt) cc;则typeof(tt)等价于char,即相当于声明了c

2012-09-05 15:48:01 384

转载 sysfs文件系统学习

为了更好地了解kobject的层次关系,有必要了解一下这种层次关系的表现机制:sysfs。本文简单地学习了一下sysfs,大部分内容来自内核文档sysfs.txt。好了,开始我们的学习之旅,呵呵。 何为sysfs    sysfs是一种基于ram的文件系统,它提供了一种用于向用户空间展现内核空间里的对象、属性和链接。sysfs与kobject层次紧密相连,它将kobject

2012-09-05 14:53:02 477

程序员面试宝典,这一份是完整的

这一份是完整的 程序员面试的常见题目分析

2010-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除