自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

转载 Linux设备驱动程序学习(22)-Linux下PCI设备驱动程序开发

一、PCI总线系统体系结构PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规范,其目的是描述如何将计算机系统中的外围设备以一种结构化和可控化的方式连接在一起,同时它还刻画了外围设备在连接时的电气特性和行为规约,并且详细定义了计算机系统中的各

2014-04-04 10:26:17 737

转载 Linux设备驱动程序学习(15)-Linux设备模型(热插拔、mdev 与 firmware)

Linux设备驱动程序学习(15)-Linux设备模型(热插拔、mdev 与 firmware)热插拔有 2 个不同角度来看待热插拔:   从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。   从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、udev 和 mdev)的交互。 当需要通知用户内核发生了某种热插拔事件时,内核才调用这

2014-04-04 10:25:59 748

转载 Linux设备驱动程序学习(21)-内存映射和DMA-数据结构

原文地址:Linux设备驱动程序学习(21)-内存映射和DMA-数据结构 作者:tekkamanninja    前面学习了内核内存管理的基本概念,现在再来看看内核用怎样的数据结构来管理这些物理内存和映射。    内核源码:Linux-3.0一、物理页在内存中的数据结构及内存映射    由于历史原因, 内核使用逻辑地址来引用物理内存页。 但后来增加了对高内存的支

2014-04-04 10:25:43 1235

转载 Linux设备驱动程序学习(20)-内存映射和DMA-基本概念

原文地址:Linux设备驱动程序学习(20)-内存映射和DMA-基本概念 作者:tekkamanninja  这部分主要研究 Linux 内存管理的基础知识, 重点在于对设备驱动有用的技术. 因为许多驱动编程需要一些对于虚拟内存(VM)子系统原理的理解。  而这些知识主要分为三个部分:  1、 mmap系统调用的实现原理:它允许设备内存直接映射到一个用户进程地址空间.

2014-04-04 10:25:27 1713

转载 Linux设备驱动程序学习(14)-Linux设备模型(各环节的整合)

Linux设备驱动程序学习(14)-Linux设备模型(各环节的整合) 通过一个设备在内核中生命周期的各个阶段,可以更好地理解Linux设备模型。我将通过分析lddbus和sculld的源码来了解Linux设备模型中各环节的整合。《LDD3》中的(PCI总线)各环节的整合这部分内容作为参考资料,因为嵌入式Linux比较少用到PCI总线。看这部分内容一定要先熟悉一下 lddb

2014-04-04 10:25:08 607

转载 Linux设备驱动程序学习(13)-Linux设备模型(总线、设备、驱动程序和类)

Linux设备驱动程序学习(13)-Linux设备模型(总线、设备、驱动程序和类)文章的例子和实验使用《LDD3》所配的lddbus模块(稍作修改)。提示:在学习这部分内容是一定要分析所有介绍的源代码,知道他们与上一部分内容(kobject、kset、attribute等等)的关系,最好要分析一个实际的“flatform device”设备,不然会只学到表象

2014-04-03 15:32:26 413

转载 Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介)

Linux设备驱动程序学习(12)-Linux设备模型(底层原理简介)以《LDD3》的说法:Linux设备模型这部分内容可以认为是高级教材,对于多数程序作者来说是不必要的。但是我个人认为:对于一个嵌入式Linux的底层程序员来说,这部分内容是很重要的。以我学习的ARM9为例,有很多总线(如SPI、IIC、IIS等等)在Linux下已经被编写成了子系统,无需自

2014-04-03 15:30:38 549

转载 Linux设备驱动程序学习(3-补)-Linux中的循环缓冲区

Linux设备驱动程序学习(3-补)-Linux中的循环缓冲区参考资料:《Linux内核中的循环缓冲区》作者:西邮 王聪    严重感谢文章作者! 但是(可能是源码版本问题)有些结论并不正确: “而kfifo_init只会接受一个已分配好空间的fifo->buffer,不能和kfifo_free搭配,用kfifo_init分配的kfifo只能用kfree释放。” 阅

2014-04-03 15:29:40 558

转载 Linux设备驱动程序学习(11)-中断处理

Linux设备驱动程序学习(11)-中断处理可以让设备在产生某个事件时通知处理器的方法就是中断。一个“中断”仅是一个信号,当硬件需要获得处理器对它的关注时,就可以发送这个信号。 Linux 处理中断的方式非常类似在用户空间处理信号的方式。 大多数情况下,一个驱动只需要为它的设备的中断注册一个处理例程,并当中断到来时进行正确的处理。本质上来讲,中断处理例程和其他的代码并行运行。因此,它们不可

2014-04-03 15:28:44 588

转载 Linux设备驱动程序学习(9)-与硬件通信

在学习有关I/O总线的内容时,最好先看看相关的知识:从PC总线到ARM的内部总线 I/O 端口和 I/O 内存每种外设都是通过读写寄存器来进行控制。在硬件层,内存区和 I/O 区域没有概念上的区别: 它们都是通过向在地址总线和控制总线发出电平信号来进行访问,再通过数据总线读写数据。因为外设要与I\O总线匹配,而大部分流行的 I/O 总线是基于个人计算机模

2014-04-03 15:27:22 839

转载 Linux设备驱动程序学习(8)-分配内存

Linux设备驱动程序学习(8)-分配内存内核为设备驱动提供了一个统一的内存管理接口,所以模块无需涉及分段和分页等问题。 我已经在第一个scull模块中使用了 kmalloc 和 kfree 来分配和释放内存空间。kmalloc 函数内幕kmalloc 是一个功能强大且高速(除非被阻塞)的工具,所分配到的内存在物理内存中连续且保持原有的数据(不清零)。原型:

2014-04-03 15:24:34 700

转载 Linux设备驱动程序学习(6)-高级字符驱动程序操作[(4)异步通知fasync]

异步通知fasync异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,signal函数就是让一个信号与与一个函数对应,没当接收到这个信号就会调用相应的函数。一、什么是异步通知个人认为,异步通知类似于中断的机制,如下面的将要举例的程序,当设备可写时,设备驱动函数发送一个信号给内核,告知内核有数据可

2014-04-03 15:23:32 480

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

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

2014-04-03 15:22:11 452

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

Linux设备驱动程序学习(5)-高级字符驱动程序操作[(2)阻塞型I/O和休眠] 这一部分主要讨论:如果驱动程序无法立即满足请求,该如何响应?(65865346)一、休眠进程被置为休眠,意味着它被标识为处于一个特殊的状态并且从调度器的运行队列中移走。这个进程将不被在任何 CPU 上调度,即将不会运行。 直到发生某些事情改变了那个状态。安全地

2014-04-03 15:21:15 519

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

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

2014-04-03 15:20:06 984

转载 Linux设备驱动程序学习(7)-内核的数据类型(深入分析Linux内核链表)

深入分析Linux内核链表一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。通常链表数据结构至少应包含两

2014-04-03 15:18:36 628

转载 Linux设备驱动程序学习(7)-内核的数据类型

Linux设备驱动程序学习(7)-内核的数据类型由于前面的学习中有用到 第十一章 内核数据结构类型 的知识,所以我先看了。要点如下:将linux 移植到新的体系结构时,开发者遇到的若干问题都与不正确的数据类型有关。坚持使用严格的数据类型和使用 -Wall -Wstrict-prototypes 进行编译可能避免大部分的 bug。内核数据使用的数据类型主要分为 3

2014-04-03 15:17:33 1173

转载 Linux设备驱动程序学习(10)-时间、延迟及延缓操作(Jiq.c)

共享隊列点击(此处)折叠或打开/* * jiq.c -- the just-in-queue module * * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet * Copyright (C) 2001 O'Reilly & Associates 

2014-04-03 15:16:30 611

转载 Linux设备驱动程序学习(10)-时间、延迟及延缓操作(Jit.c)

以下代碼基本演示了Linux设备驱动程序学习(10)-时间、延迟及延缓操作的所有知識点击(此处)折叠或打开/* * jit.c -- the just-in-time module * * Copyright (C) 2001,2003 Alessandro Rubini and Jonathan Corbet * Cop

2014-04-03 15:15:05 929

转载 Linux设备驱动程序学习(10)-时间、延迟及延缓操作

Linux设备驱动程序学习(10)-时间、延迟及延缓操作 度量时间差 时钟中断由系统定时硬件以周期性的间隔产生,这个间隔由内核根据 HZ 值来设定,HZ 是一个体系依赖的值,在 中定义或该文件包含的某个子平台相关文件中。作为通用的规则,即便如果知道 HZ 的值,在编程时应当不依赖这个特定值,而始终使用HZ。对于当前版本,我们应完全信任内核开发者,他们已经选择

2014-04-03 15:13:30 1408

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

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

2014-04-03 15:11:50 508

转载 Linux设备驱动程序学习(2)-调试技术(补充)

Linux 调试技术本文讨论了四种调试 Linux 程序的情况。在第 1 种情况中,我们使用了两个有内存分配问题的样本程序,使用 MEMWATCH 和 Yet Another Malloc Debugger(YAMD)工具来调试它们。在第 2 种情况中,我们使用了 Linux 中的 strace 实用程序,它能够跟踪系统调用和信号,从而找出程序发生错误的地方。在第 3 种情况中,我们使

2014-04-03 15:10:41 632

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

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

2014-04-03 15:09:30 419

转载 Linux设备驱动程序学习(2)-调试技术

原文地址:Linux设备驱动程序学习(2)-调试技术 作者:tekkamanninjaLinux设备驱动程序学习(2)-调试技术今天进入《Linux设备驱动程序(第3版)》第四章调试技术的学习。 一、内核中的调试支持在前面已经建议过:学习编写驱动程序要构建安装自己的内核(标准主线内核)。最重要的原因之一是:内核开发者已经建立了多项用于调试的功能。但是由于

2014-04-03 15:08:22 485

转载 Linux设备驱动程序学习(0)-Hello, world模块

原文地址:Linux设备驱动程序学习(0)-Hello, world模块 作者:tekkamanninjaLinux设备驱动程序学习(0)-设备驱动介绍& Hello, world!模块设备驱动程序的作用设备驱动程序就是这个进入Linux内核世界的大门。设备驱动程序在Linux内核中扮演着特殊的角色。它是一个独立的“黑盒子”,使某个特定硬件响应一个定义好的内部编

2014-04-03 15:07:04 1263

转载 OpenMax IL: component 基础知识

OpenMax IL: component 基础知识OpenMax IL 有四个部分组成:        1.客户端(Client):OpenMax IL的调用者2.组件(Component):OpenMax IL的单元,每一个组件实现一种功能3.端口(Port):组件的输入输出接口4.隧道化(Tunneled):让两个组件直接连接的方式OpenMax IL 中重要的组

2014-04-03 13:34:57 523

原创 android drivers博文收藏链接

Seal--学海无涯   linux driver androidhttp://blog.chinaunix.net/uid/26765074.html每天一个linux命令目录http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html罗升阳 http://weibo.com/shengyangluo

2014-04-03 13:31:44 496

转载 Android Camera TakePicture過程分析

Android Camera TakePicture過程分析接著上一篇文章,繼續講解camera拍照等具體功能實行流程Camera子系统采用C/S架构,客户端和服务端在两个不同的进程当中,它们使用android中的binder机制进行通信,本系列文章将从Android Camera应用程序到硬件抽象的实现一步一步对照相机系统进行分析,首先从CameraService初始化过程着手,

2014-04-03 13:26:13 666

转载 Camera--V4L2驱动学习记录

Video for Linux TwoV4L2的是V4L的第二个版本。原来的V4L被引入到Linux内核2.1.x的开发周期后期。Video4Linux2修正了一些设计缺陷,并开始出现在2.5.X内核。Video4Linux2驱动程序包括Video4Linux1应用的兼容模式,但实际上,支持是不完整的,并建议V4L2的设备使用V4L2的模式。要想了解 V4l2 有几个重要的文档

2014-04-03 12:27:01 763

转载 虚拟视频驱动程序vivi.c源码分析

虚拟视频驱动程序vivi.c源码分析以下先把上一篇文章中的最后一段,放在这里利于程序源码的分析:vivi.c 虚拟视频驱动程序----- 此代码模拟一个真正的视频设备V4L2 API (位于drivers/media/video目录下)入口:+int __init vivi_init(void)               + vivi_create_instance(i) /

2014-04-03 12:26:04 677

转载 Android Camera之SurfaceView学习

Android之SurfaceView学习首先我们先来看下官方API对SurfaceView的介绍SurfaceView的API介绍Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format of this surface and

2014-04-03 12:21:58 522

转载 Android Camera数据流分析全程记录(非overlay方式)

Android Camera数据流分析全程记录花了不少时间在这个数据流的分析上面,自己毕竟没怎么做过android,这里记录一下自己的见解,任何理解错误还望高人指教,以后还需慢慢纠正整个分析过程从app的onCreate开始:packages/apps/OMAPCamera/src/com/ti/omap4/android/camera/Camera.java在onCreate中做

2014-04-03 12:20:39 1059

转载 Android Camera数据流分析全程记录(overlay方式一)

Android Camera数据流分析全程记录(overlay方式)这里为什么要研究overlay方式呢?android camera需要driver和app层需要有大量数据需要传输,如果使用非overlay方式进行数据从driver到app层的传输,使系统性能受到很到影响,使系统速度变慢,同时会影响功耗等,而在camera preview module时,通常我们是不必要将采集的数据保存

2014-04-03 12:18:39 1616

转载 解读Android 4.0 Camera原生应用程序的设计思路

解读Android 4.0 Camera原生应用程序的设计思路一篇很不错的文章:http://my.oschina.net/jerikc/blog/907911. 设置摄像头方向2. 打开线程与预览线程 3. 设置参数4. Camera外设按键5. 自动对焦与触摸对焦6. 拍照7. 人脸检测8. 位置管理9. 旋转管理

2014-04-03 12:17:32 663

转载 Android Camera数据流分析全程记录(overlay方式二)

Android Camera数据流分析全程记录(overlay方式)这篇文章接着上一篇文章继续:http://blog.chinaunix.net/uid-26765074-id-3568436.html上一篇文章overlay这个过程已经走了一遍,但是根本是这个流程还没有走完,由上一篇文章知道,最后调用了postFrame方法,postFrame这个方法都实现了什么样的功能呢???他

2014-04-03 12:15:21 930

转载 Android OMAP4 Ducati 和 OpenMax IL介绍

Android OMAP4 Ducati 和 OpenMax IL介绍UpdateTI 发布的这个文章,个人感觉特别好,想研究的朋友可以看一下:http://processors.wiki.ti.com/index.php/OMX_EZSDK_Examples转载一篇很好的文章,地址:http://book.51cto.com/art/201101/243147.htm,感谢分

2014-04-03 12:14:15 560

转载 Android的binder机制分析

Android的binder机制分析转载别人的文章,谢谢分享:http://blog.csdn.net/nadyhuayue/article/details/8363029android的binder机制提供一种进程间通信的方法,使不同一个进程可以以类似远程过程调用的形式调用另一个进程所提供的功能。 android的代码中,与C/C++的binder包括一些类型和接口的定义和实现,

2014-04-03 12:13:13 547

转载 Android Camera CameraHal.cpp 分析

Android Camera CameraHal.cpp 分析作为上层和底层的中转站,hal层在android中起到的作用不言而喻,针对camera的研究已经有一段时间了,这里自己还是决定静下心来好好的分析一下CameraHal.cpp这里的代码,对自己更好的理解hal与上层和底层的交互作用不可小觑,特别对理解hal与kernel driver的交互过程作用很大不多说废话了,开始今

2014-04-03 12:11:54 1023

转载 Android Camera AppNotifier工作机制分析

Android Camera AppNotifier工作机制分析上面的章节中已经说过了,AppNotifier在initialize的时候会创建并且开启一个线程,这个线程不停的检查是否底层有消息传送过来,如果有消息传送过来,响应的消息会做相应的处理,主要包括以下三种消息:msgQ,mEventQ,mFrameQ,在之前的文章中也同样说到了,这些消息的来源,通过setEventProvide

2014-04-03 12:10:26 745

转载 Android Camera OMXCameraAdapter.cpp初始化分析

Android Camera OMXCameraAdapter.cpp初始化分析这几天一直在研究android 的omx机制,我针对的android是4.0.3,主要是TI 的4430,4460的omx方式实现,这里还是简单的说一下为什么要研究这个文件之前有一篇文章已经比较详细的说过了OMAP4系列芯片了,这里这个OMXCameraAdapter其实就是omap4 A9端的omx cl

2014-04-03 12:05:00 768

空空如也

空空如也

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

TA关注的人

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