自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android Camera Architecture (Android Camera架构)

1、Camera成像原理介绍Camera工作流程图Camera的成像原理可以简单概括如下:景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯

2011-09-05 17:24:57 1250

原创 android2.2 Camera

App部分packages\apps\camera\src\com\android\Camera.javaFramework部分frameworks\base\core\java\android\hardware\Camera.javaJNI部分framewo

2011-08-26 10:12:21 476

原创 idr

介绍:在双数版本 Linux 2.6 中开始有 idr ( integer ID management ).在 2.4 还没有这个. 2.5 我没有去查过,不清楚有没有这个. idr 的所有声明、实现分别在 2.6 Kernel 目录里:$(kernel_src)/include/linux/idr.h$(kernel_src)/lib/idr.cidr 提

2011-06-10 09:24:00 1191

原创 揭示摄像头的奥秘

【文章简介】 摄像头说简单非常简单,因为其核心部件就三大块:核心IC控制芯片(包括USB接口功能和图像处理功能),图像传感器(CMOS或CCD器件),镜头 ... (1443 字)  工作原理篇:摄像头(CAMERA)主要分数字摄像头和模拟摄像头两种,模拟摄像头即那种可以直接通过视频接口(通常为S端子或AV端子)连接显示设备(一般指电视机或监视器)完成摄像功能的摄像头,特点是模拟影

2011-06-09 13:46:00 485

原创 Linux中EXPORT_SYMBOL的用法(附:自己的应用)

EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试。Linux symbol export method:[1] If we want export the symbol in

2011-06-08 13:21:00 1317

原创 Linux驱动开发学习的一些必要步骤

Linux驱动开发学习的一些必要步骤 1. 学会写简单的makefile 2. 编一些应用程序,可以用makefile跑起来3. 学会写驱动的makefile4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world,insmod后应该能够通过dmesg看到输出。5. 写一完整驱动, 加上read, write, ioctl, polling等各种函数的驱动实现。 在ioct

2011-06-02 14:13:00 444

原创 Linux驱动开发学习的一些必要步骤

Linux驱动开发学习的一些必要步骤 1. 学会写简单的makefile 2. 编一些应用程序,可以用makefile跑起来3. 学会写驱动的makefile4. 写一简单char驱动,makefile编译通过,可以insmod, lsmod, rmmod. 在驱动的init函数里打印hello world,insmod后应该能够通过dmesg看到输出。5. 写一完整驱动, 加上read, write, ioctl, polling等各种函数的驱动实现。 在ioct

2011-06-02 14:13:00 432

原创 u-boot及bootlload知识学习

<br />u-boot及bootlload知识学习<br />                                                    引 言 <br />        Bootloader(引导装载器)是用于初始化目标板硬件, 给嵌入式操作系统提供板上硬件资源信息,并进一步装载、引导嵌入式操作系统运行的固件。在嵌入式系统开发过程中,很多情况都会涉及底层Bootloader的移植问 题, 即使在有些已有Bootloader的参考开发板上也存在这种可能。概括来说, 如下情况会

2011-06-02 14:11:00 830

原创 v4l2_i2c_new_subdev_board接口分析(侧重I2C设备的探测)

V4L2中增加I2C设备接口:v4l2_i2c_new_subdev_board接口分析 struct v4l2_subdev *v4l2_i2c_new_subdev_board(struct v4l2_device *v4l2_dev, struct i2c_adapter *adapter, const char *module_name, struct i2c_board_info *info, const unsigned short *probe_addrs) { ........ if (mo

2011-06-02 14:03:00 1637 1

原创 关于linux中camera驱动的加载

<br />在camera驱动中有这么一个结构变量:<br />   static struct v4l2_i2c_driver_data v4l2_i2c_data = {<br />    .name = "ov2655",<br />   .probe = ov2655_probe,<br />    .remove = ov2655_remove,<br />   .id_table = ov2655_id,<br />  }<br />      除了这个之外,没有像其他模块一样的module_i

2011-06-02 13:58:00 2117 3

原创 linux驱动模块参数module_param

<br />为了增加驱动程序的灵活性,内核允许对驱动程序指定参数,而这些参数可在加载驱动程序模块时改变。<br />这些参数的值可由insmod或者modprobe在加载时指定;后者也可以从它的配置文件(/etc/modprobe.conf)读取参数的值。这两个命令可在命令行里接受几种参数类型的赋值。<br />我们可以用“module_param(参数名,参数类型,参数读/写权限)”为模块定义参数。为了演示这种功能,我们对本章开始的“hello world”模块(命名为hello_ext)做了如代码清单1

2011-06-02 13:45:00 865

原创 模块导出符号

<br />Linux内核头文件提供了一个方便的方法用来管理符号的对模块外部的可见性,因此减少了命名空间的污染(命名空间的名称可能会与内核其他地方定义的名称冲突),并且适当信息隐藏。 如果你的模块需要输出符号给其他模块使用,应当使用下面的宏定义:<br /><br />EXPORT_SYMBOL(name);<br />EXPORT_SYMBOL_GPL(name);<br /><br />这两个宏均用于将给定的符号导出到模块外. _GPL版本的宏定义只能使符号对GPL许可的模块可用。 符号必须在模块文件的

2011-06-02 13:42:00 444

原创 模块导出符号

<br />Linux内核头文件提供了一个方便的方法用来管理符号的对模块外部的可见性,因此减少了命名空间的污染(命名空间的名称可能会与内核其他地方定义的名称冲突),并且适当信息隐藏。 如果你的模块需要输出符号给其他模块使用,应当使用下面的宏定义:<br />EXPORT_SYMBOL(name);<br />EXPORT_SYMBOL_GPL(name);<br />这两个宏均用于将给定的符号导出到模块外. _GPL版本的宏定义只能使符号对GPL许可的模块可用。 符号必须在模块文件的全局部分导出,不能在函数

2011-06-02 13:38:00 539

原创 模块声明与描述

在Linux内核模块中,我们可以用MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_VERSION、MODULE_DEVICE_TABLE、MODULE_ALIAS分别声明模块的作者、描述、版本、设备表和别名,例如: MODULE_AUTHOR(author);                  //声明模块的作者 MODULE_DESCRIPTION(description);   //声明模块的描述  MODULE_VERSION(version_string);    /

2011-06-02 13:35:00 610

转载 Android2.2平台上支持多camera(一)

Android2.2平台上支持多camera(一) 收藏 Android2.2及其以前的版本都不支持多camera。Android2.3中,camera的硬件接口中增加了对多camera的支持。由于某些原因,不能直接移植Android2.3,但又要支持多camera,所以只能参考Android2.3版本,在2.2上添加接口,支持多camera。接下来,我将从application层开始,贯穿framework,直到hardware层,逐层介绍如何去支持多camera。一、Application层支持多cam

2011-05-20 09:01:00 365

原创 USB

<br />1、 Linux中的USB设备驱动<br />我们再看看下面的图,我们基本了解了一下EHCI和如何将EHCI驱动起来,上EHCI驱动上面是USB核心,这一块是USB中最复杂的一块了,所幸他是与硬件无关的,作为一个普普通通的驱动工程师,只需要知道他提供<br />上面的交互过程其实很复杂,还可以细分。我们需要注意的是在主机给设备分配地址前设备使用的是0号地址,这是个公共地址,任何设备在刚接入的时该都会使用这个地址,并且一次只能有一个设备在使用0地址,主要发出复位指令时才会给设备分配一个新的地址。设

2011-04-10 22:26:00 418

原创 linux USB

<br />1、 Linux中的USB设备驱动<br />我们再看看下面的图,我们基本了解了一下EHCI和如何将EHCI驱动起来,上EHCI驱动上面是USB核心,这一块是USB中最复杂的一块了,所幸他是与硬件无关的,作为一个普普通通的驱动工程师,只需要知道他提供<br />1、 Linux中的USB设备驱动<br />我们再看看下面的图,我们基本了解了一下EHCI和如何将EHCI驱动起来,上EHCI驱动上面是USB核心,这一块是USB中最复杂的一块了,所幸他是与硬件无关的,作为一个普普通通的驱动工程师,只需

2011-04-10 22:25:00 1044

原创 内核源码学习:套接字缓冲区提供的函数

内核源码学习:套接字缓冲区提供的函数2008-09-18 18:21<br />1.操纵sk_buff链表的函数<br />   sk_buff链表是一个双向链表,它包括一个链表头而且每一个缓冲区都有一个prev和next指针,指向链表中前一个和后一个缓冲区结点。<br /> <br />struct sk_buff *skb_dequeue(struct skb_buff_head *list) <br />这个函数作用是把第一个缓冲区从链表中移走。返回取出的sk_buff,如果队列为空,就返回空指针。添

2011-04-10 22:17:00 524

原创 Linux设备驱动程序--与硬件通信

<br />I/O 端口和 I/O 内存<br />每种外设都是通过读写寄存器来进行控制。 <br />在硬件层,内存区和 I/O 区域没有概念上的区别: 它们都是通过向在地址总线和控制总线发出电平信号来进行访问,再通过数据总线读写数据。<br />因为外设要与I/O总线匹配,而大部分流行的 I/O 总线是基于个人计算机模型(主要是 x86 家族:它为读和写 I/O 端口提供了独立的线路和特殊的 CPU 指令),所以即便那些没有单独I/O 端口地址空间的处理器,在访问外设时也要模拟成读写I/O端口。这一功能

2011-04-10 22:11:00 460

原创 linux内核 kthread_run函数 理解学习

<br />最近发现在内核创建线程的时候经常会用到kthread_run()这样的一个调用。于是准备拿出来学习一下。首先看看它的定义之处才发现它是一个宏函数,而不是一个真正意义上的函数。在include/linux/Kthread.h里有/**<br />* kthread_run - create and wake a thread.<br />* @threadfn: the function to run until signal_pending(current).<br />* @data: dat

2011-04-10 21:08:00 1285

空空如也

空空如也

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

TA关注的人

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