自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自动对焦 AF

AF性能是判断相机好坏的重要指标,主要从准确度和速度两个方面来进行考察,本文将介绍自动对焦的几种方式。自动对焦目前主流的大致上有CDAF,PDAF和Laser assist AF这三种。前两种属于被动式,也就是说相机不需要其他额外辅助的探测手段,直接使用入射光线做判断来对焦;而第三种属于主动式,也就是说需要使用Laser来辅助探测,这在后面会详细介绍。1 CDAF (contras

2017-12-19 17:00:00 16062

原创 白平衡

1. 为何需要白平衡?讨论白平衡,那就要从色温(CCT)谈起,色温顾名思义就是色彩的温度,但是这个色温和我们一般所认知的冷色、暖色不同,它指的是一个绝对黑体(物理学家想象出来的)从绝对零度(-273℃)开始持续加温所呈现出来的颜色,譬如在炼钢炉里给一块铁加热,就会从黑->暗红->亮红->金黄,接着就融化了,因为铁的熔点是1535℃,所以更高温度的颜色就看不到。但从焊接用的火可以看到蓝色的火焰,

2017-12-15 17:21:27 9235 2

原创 自动曝光

一、自动曝光定义首先需要介绍一下曝光:光线强度乘以光线所作用的时间。定义中的“光线强度”,是指Sensor受光线照射的强度,即照度;定义中的“光线所作用的时间”,是指感光胶片受光线照射的时间,即曝光时间。曝光量以E表示,计算单位就是勒克斯·秒。若要取得一定量的曝光量,则光强度越大,曝光时间越短;光强度越小,曝光时间越长。曝光是拍照最基本也是最重要的技术之一。下图是用从1.3秒到15秒的

2017-12-11 18:19:28 22476 1

原创 Linux Media子系统

a. 总线初始化media目录下有media_device, media_devnode和media_entity。唯一的subsys_initcall出现在media_devnode,subsys_initcall(media_devnode_init),那就从这里入手。 313 static int __init media_devnode_init(void)314 {315

2018-01-09 09:11:16 6851

原创 C++面试题 sizeof

一、 sizeof   a. 空类型的sizeof是多大呢?#include #include using namespace std;struct A{};class B{};int main(){   struct A *ptra = (struct A *)malloc(sizeof(struct A));   B *ptrb = new B();   struct

2017-11-18 21:17:34 490

转载 Device Tree(三):代码分析

一、前言Device Tree总共有三篇,分别是:1、为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因)2、Device Tree的基础概念(请参考DT基础概念)3、ARM linux中和Device Tree相关的代码分析(这是本文的主题)本文主要内容是:以Device Tree相关的数据流分析为索引

2017-06-02 11:24:01 604

转载 Device Tree(二):基本概念

一、前言一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Compile

2017-06-02 10:39:15 541

转载 Device Tree(一):背景介绍

http://www.wowotech.net/device_model/why-dt.html一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种新的机制,各种fram

2017-06-02 10:37:28 432

转载 The Android ION memory allocator

https://lwn.net/Articles/480055/Back in December 2011, LWN reviewed the list of Android kernel patches in the linux-next staging directory. The merging of these drivers, one of which is a me

2017-05-24 17:00:11 779

翻译 Video4Linux框架简介(7) - V4L2框架和v4l2_subdev

V4L2框架译注:这是目前看到关于V4L2框架内众多结构关系最提纲挈领的一张图。子设备:v4l2_subdev struct●通常芯片连接到i2c或SPI总线,或通过GPIO引脚控制,但它们也可以表示SoC / FPGA内部模块。●子设备驱动程序可以由不同的桥驱动程序使用,因此它们不能依赖于任何特定的桥驱动程序。●不能进行探测,因此桥接器驱动程序必须

2017-02-10 14:22:58 9384

翻译 Video4Linux框架简介(6) - 控制框架

V4L2 PCI驱动实例控制框架译注:在图像传输开始后,会有各种各样的控制参数需要下发给硬件,譬如brightness, contrast等。首先,要增加如下的控制处理回调函数,一些芯片厂商把kernel驱动做小,很多就依赖event机制在userspace侧处理。#include #include struct skeleton {...struct v4l2

2017-02-10 14:00:55 1284

翻译 Video4Linux框架简介(5) - Streaming

译注:在前几节我们介绍了如何初始化v4l2驱动的框架、查询能力值、设置输入/视频标准/格式,但是还没有真正地传输过一帧数据。万事俱备,只欠东风,本节将会重点介绍"流媒体"中的数据流。流模式,数据流主要通过如下几种方式进行传输:●read/write接口:这种的基本比较少用。●内存映射流 I / O:驱动程序分配的内存,mmap()到用户空间。●用户指针流 I / O

2017-02-10 11:05:48 2780

翻译 Video4Linux框架简介(4) - v4l2_ioctl_ops

译注:本节主要会介绍一些v4l2常用的ioctl回调函数,每个驱动开发者可根据硬件需要来做具体实现或者不做实现。1. Input ioctlsvidioc_enum_input,顾名思义就是枚举输入,对于本示例驱动来说,有标准的S-Video输入和HDMI两种。static int skeleton_enum_input(struct file *file, void *priv,s

2017-02-09 10:38:56 3681

翻译 Video4Linux框架简介(3) - video_device

video_device是指向v4l2具体的设备,名字同样有些不够准确,事实上,根据注册时传入type(本例中使用的是VFL_TYPE_GRABBER,也就是视频输入设备 -- Camera)的不同,可以分为视频输入,视频输出,VBI,Radio等。第一步先是在驱动的probe函数中添加video_device的初始化并注册:struct skeleton {struct pci_dev

2017-02-08 19:52:43 2732

翻译 Video4Linux框架简介(2) - v4l2_device

V4L2 PCI基础驱动程序实例struct v4l2_device (1)(译注: 第一步,先基于你的桥接驱动(譬如这里就是PCI设备),添加一个v4l2设备对象,通常v4l2设备都不是独立存在的。)#include // 每个V4L2驱动都需要添加这两个头文件#include MODULE_DESCRIPTION("V4L2 PCI Skeleton Dr

2017-02-08 18:58:54 1773

翻译 Video4Linux框架简介(1)

原作者:Hans Verkuil特性与架构 特性●视频捕获/输出和调谐(/ dev /videoX,流和控制)●视频捕获和输出覆盖(/ dev / videoX,控制)●内存到内存(也称为编解码器)设备(/ dev / videoX,streaming和控制)●原始和切分VBI捕获和输出(/ dev /vbiX,streaming和控制)●无线电

2017-02-08 17:25:14 2106

翻译 Overview of the V4L2 driver framework(二)

struct v4l2_device------------------ Each device instanceis represented by a struct v4l2_device (v4l2-device.h). Very simple devices canjust allocate this struct, but most of the time you would

2017-02-03 18:40:57 713

翻译 Overview of the V4L2 driver framework(一)

Overview of the V4L2driver frameworkV4L2驱动框架概览===================================== Thistext documents the various structures provided by the V4L2 framework andtheir relationships.本文档描述

2017-02-03 18:16:31 842

翻译 Linux Kernel media框架(四)

Pipelinesand media streams管道和媒体流--------------------------- Whenstarting streaming, drivers must notify all entities in the pipeline toprevent link states from being modifiedduring streaming

2017-02-03 17:08:03 1578

翻译 Linux Kernel media框架(三)

Graphtraversal---------------图遍历 Themedia framework provides APIs to iterate over entities in a graph.媒体框架提供API以在图中的实体之间进行迭代。 Toiterate over all entities belonging to a media device, dri

2017-02-03 17:04:46 2495

翻译 Linux Kernel media框架(二)

Entities,pads and links实体,垫和链接------------------------ -Entities- 实体Entitiesare represented by a struct media_entity instance, defined ininclude/media/media-entity.h. Thestructure is u

2017-02-03 15:16:08 4043

翻译 Linux Kernel media框架(一)

Linuxkernel media frameworkLinux内核媒体框架============================ Thisdocument describes the Linux kernel media framework, its data structures,functions and their usage.本文档描述了Linux内核媒体框架,

2017-02-03 15:07:45 4991

转载 Google搜索

搜索引擎命令大全!1、双引号把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配。bd和Google 都支持这个指令。例如搜索: “seo方法图片”2、减号减号代表搜索不包含减号后面的词的页面。使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词。Google 和bd都支持这个指令。

2014-03-26 17:51:22 1147

原创 Linux kernel 性能优化(五)Linux虚拟内存优化

Linux内核包含针对虚拟内存子系统的一系列可调参数。这些参数可以透过/proc接口来读取。而Linux提供了sysctl命令作为一个/proc文件系统的管理员接口并且可以优化VM子系统。有些参数是可调的而另外一些是只读的。# sysctl –a | grep vm vm.legacy_va_layout = 0 vm.vfs_cache_pressure = 100

2014-03-06 15:25:53 2113

转载 ARM与x86之4--EAGLE is Coming!

EAGLE isComing!ARM的崛起使Intel陷入长考。尚属Wintel帝国的PC领域无需担忧。帝国的成员已经历经过多次优胜劣汰。Wintel制定的多数策略能得到这些成员的支持,并使他们最终受益。Intel从PC领域切走了最大一块蛋糕,也是众望所归,这与Intel在这个领域的付出成正比,更重要的是这个蛋糕正是Intel自己做的。PC帝国偶尔出现的纰漏,总能被Intel及时发现。进入

2014-03-06 11:33:24 967

原创 Linux kernel 性能优化(四)虚拟内存

虚拟内存使用磁盘作为RAM的扩展,从而有效的增加内存的使用率。内核会把当前未使用的内存块内容写到硬盘中去,让内存可以有其他用户。当原来的内容需要的时候,再重新读回内存。这个对用户来说是完全透明的;Linux下运行的程序只看到大量可用的内存而不会注意到其中有一些内存是暂存在磁盘中。当然,读写硬盘比使用内存要蛮,所以程序速度就受影响。作为虚拟内存使用的磁盘空间被称做交换空间。4.1 虚

2014-03-05 17:18:54 2475

原创 Linux kernel 性能优化(三)CPU性能监控

要理解CPU的性能,就要懂得解读运行队列,使用率以及上下文切换。正如前文描述,性能是和基准数据相关。然而在任何系统上都有通用的性能期望。这些期望包括:• 运行队列-- 一个处理器上的运行队列应该有少于1-3个线程。也就是说一个双核系统的运行队列上不应该有多于六个线程。• CPU使用率– 如果一个CPU被完全使用,那么应该达到以下的平衡• 65% – 70

2014-03-05 10:38:41 1620

原创 Linux kernel 性能优化(二)CPU 术语

CPU的使用很大程度上是依赖于什么资源试图使用它。内核有个调度器是用来调度两种资源:线程(单线程或多线程)和中断。调度器给予不同的资源不同的优先级。以下是从高到低的优先级排列:• 硬件中断 --这些请求是系统硬件产生。比如说,磁盘可能会在IO传输结束后产生一个中断信号或者一个NIC可能会在收到一个数据包后产生一个中断。•软中断 --这些内核软件中断是用来维护内核。比如内核时

2014-03-05 00:03:55 1436

原创 Linux kernel 性能优化(一)之优化简介

摘要:这个系列文档主要是描述如何监控Linux操作系统的性能。检查如何解释Linux性能工具的输出。在搜集这些输出以后,做出关于性能瓶颈的分析。不过不包括如何优化内核。题目涵盖以下几个部分:1. 优化简介2. CPU术语3. CPU监控4. 内核CPU线程调度1.0优化简介性能优化就是找到系统的瓶颈并且消除瓶颈的过程。许多管理员以为性能优化就像在百度上搜

2014-03-04 23:08:00 1963

转载 C语言中函数参数的入栈顺序

原文地址:C语言中函数参数的入栈顺序作者:HelloWord对技术执着的人,比如说我,往往对一些问题,不仅想做到“知其然”,还想做到“知其所以然”。C语言可谓博大精深,即使我已经有多年的开发经验,可还是有许多问题不知其所以然。某天某地某人问我,C语言中函数参数的入栈顺序如何?从右至左,我随口回答。为什么是从右至左呢?我终究没有给出合理的解释。于是,只好做了个作业,于是有了这篇小博文

2014-02-26 16:00:50 743

转载 C 中的变长数组

1、引言我们知道,与C++等现代编程语言不同,传统上的C语言是不支持变长数组功能的,也就是说数组的长度是在编译期就确定下来的,不能在运行期改变。不过,在C99标准中,新增的一项功能就是允许在C语言中使用变长数组。然而,C99定义的这种变长数组的使用是有限制的,不能像在C++等语言中一样自由使用。2、说明参考文献[1]中对变长数组的说明如下:C99 gives C programme

2014-02-26 14:22:51 802

原创 Jos - lab2 Memory Management

1. Key data structure:178 struct PageInfo {179         // Next page on the free list.180         struct PageInfo *pp_link;187         uint16_t pp_ref;188 };// These variables are set by

2014-02-25 17:14:07 1367

原创 Jos - lab1 Boot the PC

Start up flow of PC:1. BIOS    a. At the very beginning, BIOS will load 512-byte boot sector into [0x7c00,0x7dff);    b. Then set CS:IP = 0000:7C002. Boot loader    a. Switch from real mode

2014-02-25 15:45:48 726

原创 Jos-lab5 (下)

Exercise 4. Change duppage in lib/fork.c to follow the new convention. If the page table entry has thePTE_SHARE bit set, just copy the mapping directly. (You should use PTE_SYSCALL, not 0xfff, to

2014-02-23 22:49:40 1244

原创 Jos-lab5 (上)

Exercise 1.i386_init identifies the file system environment bypassing the typeENV_TYPE_FS to your environment creationfunction, env_create.Modifyenv_create in env.c,so that it gives the file syste

2014-02-22 15:14:48 1465

原创 ARM Linux的面试题

1. ARM MMU是什么? 存储器管理单元 TTBR是什么?Translation table base register名稱說明TranslationTable Base Register 0 (TTBR0)用來記錄User-Mode應用Task的記憶體分頁架構所在的BaseAddress,通常大小為128bytes到

2014-02-17 16:11:47 3978 1

转载 Linux 面试题

1) Linux中主要有哪几种内核锁?atomic原子锁,spin lock,信号量,读写锁,RCU,mutex2) Linux中的用户模式和内核模式是什么含意?User space即运行在用户进程空间,拥有4G的内存空间,在被保护的状态下运行;内核模式下就直接操作硬件,管理内存,3) 怎样申请大块内核内存?vmalloc()4) 用户进程间通信主要哪几种方式?IP

2014-02-13 12:23:03 818

原创 Jos - lab4 (Part A) System Calls for Environment Creation

Question3. In your implementation of env_run() you should havecalled lcr3(). Before and after the call tolcr3(), your code makes references (at least it should)to the variablee, the argument t

2014-02-03 00:56:29 1307

原创 Jos - lab4 (Part A) Round-Robin Scheduling

Exercise 6.Implement round-robin scheduling in sched_yield()as described above. Don't forget to modifysyscall() to dispatchsys_yield().

2014-02-01 01:13:55 1602 3

原创 80386 programmer's reference manual Chapter 6 Protection notes

1. Why protection?Identify and detect bugs.2. Overview: 5 aspectsType checkingLimit checkingRestriction of addressable domainRestriction of procedure entry pointsRestriction of instruc

2014-02-01 00:18:59 773

Shell programming

关于Linux 下进行 Shell编程的书籍

2010-07-13

空空如也

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

TA关注的人

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