自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ForDream321的专栏

逆水行舟,不进则退

  • 博客(60)
  • 资源 (5)
  • 收藏
  • 关注

原创 c/c++代码性能效率

一、尽量减少值传递,多用引用来传递参数 boolCompare(string s1, string s2)boolCompare(string *s1, string *s2)boolCompare(string &s1, string &s2)boolCompare(const string &s1, const string &s2)  其中若使用第一个函数(值传递),则在参数

2018-02-01 22:19:05 8981 1

原创 高通Camera 驱动调试要点(二)

这篇文章主要介绍数据流这边Camera所遇到的问题,主要介绍bus overflow和sof freeze;(一)bus overflow   摄像头传感器时钟通道(即 MIPI DDR 时钟)的工作频率与激活的数据通道数决定摄像头传感器在指定操作模式下的总数据传输速率(吞吐量)。每个通道的数据传输速率是 MIPI DDR 时钟速度的两倍。例如,工作在 200 MHz MIPI DD

2017-10-26 15:32:53 11918

原创 高通Camera 驱动调试要点(一)

本文主要介绍QCOM camera调试的重要参数;

2017-10-24 18:16:11 22623 2

原创 ION框架学习(二)

第一章介绍:ION的框架和buffer的分配;   第二章介绍:如何使用ION buffer;  ION的整体框架及ION_device,ION_client,ION_heap创建和关系;这章将介绍如使使用操作ION;

2017-10-14 10:18:29 4157

原创 ION框架学习(一)

本系列分为三章:第一章介绍:ION的框架和buffer的分配; 第二章介绍:如何使用ION buffer; 第三章介绍:以MTK平台为例来了解camera buffer的流转;   ION是google在Android4.0 为了解决内存碎片管理而引入的通用内存管理器,用来支持不同的内存分配机制,如CARVOUT(PMEM),物理连续内存(kmalloc), 虚拟地址连续但物理不连续内存(vma

2017-09-05 18:30:24 6225 1

原创 上下拉电阻介绍

gpio type 中断,如果是高电平,我觉得肯定要使用下拉电阻,将电平钳制在低电平。 如果是低电平,我觉得肯定要使用上拉电阻,将电平钳制在高电平;上拉电阻(或者下拉电阻)不能太大,也不能太小,应该被设计成一个适当的值,让电路可以正常的工作。不过上拉(或者下拉)可能是chip内,也可能是chip外的;如果gpio中断内部使用了下拉电阻,如果外部在使用下拉电阻,会使pin脚的输入电阻变低

2017-08-23 15:55:32 566

原创 open drain和push pull

GPIO常常可以设置为输出和输入;在配置GPIO管脚的时候,常会见到两种模式:开漏(open-drain,漏极开路)和推挽(push-pull)这里先熟悉下什么是mos管:MOS管,即绝缘性场效应管。MOS英文全称为Metal-Oxide-Semiconductor即金属-氧化物-半导体,常用做开关元件;

2017-08-21 16:52:15 6045

原创 【Linux基础系列之】gpio系统

上一章介绍了pinctrl系统管理所有的物理pin脚,gpio也是pin脚的一种,所以需要某个gpio的时候就需要通过pinctrl把某个pin脚设置为gpio功能就即可;在pinctrl系统提供了操作pin脚的统一API接口,同时也可以用gpio的API来操作,在request gpio表明该pin没有被挪为他用之后,就可以设置该GPIO的输入输出,驱动能力,或者debounce功能等;

2017-08-18 15:55:35 1915

原创 【Linux基础系列之】pinctrl系统

pinctrl子系统用于控制管脚管理soc的管脚,它通常可以以一组寄存器的形式存在,用于使能独立或成组管脚的复用、设置负载电流、设置驱动能力等;

2017-08-17 17:25:47 3860 2

原创 【Linux基础系列之】设备模型

linux设备模型是linux比较基础的知识,虽然有很多资料很多书籍都会去讲设备模型,这里以我自己的方式清晰的描述下linux设备模型;

2017-07-27 17:53:50 525

原创 【Linux基础系列之】同步机制介绍

当多核CPU同时执行一段代码的时候,就容易发生抢占,这段代码可以叫做临界区,其他内核控制路径能够进入临界区前,进入临界区前的内核控制路径必须全部执行完这段代码,为了避免这种共享数据发生竞争,就需要采用同步技术,本文就简单介绍linux内核当中的一些同步原语;(一) per-cpu变量  最简单的同步技术就是把内核变量申明为per-cpu变量,这个变量只会在本地CPU操作时调用,就不用考虑其他CPU

2017-07-22 16:43:19 689

原创 GDB 调试出现:Couldn't find general-purpose registers in core file

现在平台基本都是64位的,用平台默认的gdb工具来加载vmlinux和ramdump会出现:warning: Couldn't find general-purpose registers in core file.warning: Couldn't find general-purpose registers in core file.#0 <unavailable> in ?? ()这是因为

2017-07-13 10:48:28 5596

原创 【Linux基础系列之】内存管理(2)-高端内存

常用内存分配和高端内存分配使用

2017-07-04 17:14:42 617

原创 【Linux基础系列之】内存管理(1)-buddy和slub算法

Linux内存管理是一个很负责的系统,也是linux的精髓之一,网络上讲解这方面的文档也很多,我把这段时间学习内存管理方面的知识记录在这里,涉及的代码太多,也没有太多仔细的去看代码,深入解算法,这篇文章就当做内存方面学习的一个入门文档,方便以后在深入学习内存管理源码的一个指导作用;

2017-06-30 17:01:04 5702

原创 linux 信号简介

信号是一种软件中断,提供了一种处理异步的方法,信号发生是随机的。可以被发送到一个进程或一组进程;使用信号的主要目的有两个:让进程知道已经发生了一个特定的事件;强迫进程执行它自己代码中的信号处理程序;(一 )信号处理流程 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个阶段:信号产生,信号在进程中注册,信号的执行和注销;(1)信号产生信

2017-06-15 17:21:50 531

原创 异常debug之GNU工具使用

gnu tool

2017-06-12 17:38:29 826

原创 【Linux基础系列之】中断系统(2)-下半部

前面一篇文章分析了中断系统的框架,这篇文章主要讲中断的下半部份的机制;(一)概述 linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable task(bottom half),属于不那么紧急需要处理的事情。在执行bottom half的时候,是开中断的。系统可以把实时性的操作或者硬件的一些ACK放在上半部分来做,其他数据处理,

2017-06-05 18:34:00 905

原创 Camera模组散热设计

模组的散热设计对于camera的效果有一定的影响,温度过高拍摄暗处的时候会有明显的noise;热量来源功耗:高像素高帧率,必然增加手机照相模组的功耗。功耗越高,相同条件下,模组温度越高。建议:选择正确的初始化设置以及合理的电源供电方式;自动对焦:VCM 工作状态最大可以达到 80mA 电流。建议: 正确控制 VCM 的工作状态,正确处理 VCM PDN 脚的工作状态;模组尺寸:模组尺寸越来越小,越来

2017-05-29 17:56:13 1013

原创 Camera电源噪声处理

camera供电分为PMU和LDO,如果camera的供电设计不好,会导致camera效果伴有很强的noise,具体表现在较为暗的环境下竖条纹明显。在实验室关闭光源拍摄墙壁带有电源干扰的图片如下:首先了解布线原则:主板AVDD,DOVDD,DVDD,AFVDD 的滤波电容建议分别放置2颗,分别是0.1uf和4.7uf ,如果对AVDD 电源要求严格,建议分别放1uf 和10uf;主板AVDD,D

2017-05-29 17:31:19 3727

原创 Camera模组布线规则

为保证信号的质量,走线应尽量可能地短或直,尽量减少过孔(除GND 以外)和其它会引起线路阻抗不连续的因数,避免出现太多的拐弯,拐弯处避免使用90度走线,应使用弧形走线或45度走线;

2017-05-29 16:31:37 2847

原创 【Linux基础系列之】中断系统(1)-框架

本文分为两篇,第一篇主要描述中断控制器和中断处理流程;第二篇主要讲述中断的下半部分处理机制包括softirq,tasklet,workqueue;Linux中断系统(1)-中断框架 Linux中断系统(2)-中断下半部(一)中断综述 中断硬件系统主要有各个外设、中断控制器(Interrupt Controller)和CPU组成。各个外设提供irq request line连接到中断控制器,在发

2017-05-26 19:51:49 2086

原创 ARMv8-中断处理接口

不考虑EL2和EL3,IRQ处理分两种情况:用户态发生的中断和内核态发生的中断,相应的中断处理接口分别为:el1_irq el0_irq

2017-05-16 16:22:39 1995

原创 ARMv8-异常处理

ARM异常处理分为同步(synchronous)和异步异常(asynchronous)满足下面条件为同步异常: 1. 异常是由于直接执行或尝试执行指令而生成的。 2. 提供给异常处理程序的返回地址确定保存着指示引起异常的指令。 3. 异常是精确的。

2017-05-16 14:35:25 5613

原创 ARM基础学习-局部标号

局部标号主要用于在局部范围内使用。他由两部分组成:开头是一个0~99的数字,后面紧跟着一个通常表示该局部变量作用范围的符号。 局部变量的作用范围通常为当前段,也可以用伪操作ROUT来定义局部变量的作用范围。

2017-05-15 14:39:43 835

原创 ARMv8-AArch64寄存器和指令集

(一)简述 AArch拥有31个通用寄存器,系统运行在64位状态下的时候名字叫Xn,运行在32位的时候就叫Wn;AArch32与AArch64寄存器对应关系:(二)PSTATE PSTATE不是一个寄存器,它表示的是保存当前process状态信息的一组寄存器或者一些标志位信息的统称,当异常发生的时候这些信息就会保存到EL所对应的SPSR寄存器当中;寄存器:标志位:type ProcState

2017-05-10 21:48:30 22588

原创 ARMv8-AArch64简述

ARMv8是ARM版本升级以来最大的一次改变,ARMv8的架构继承以往ARMv7与之前处理器技术的基础,除了现有的16/32bit的Thumb2指令支持外,也向前兼容现有的A32(ARM 32bit)指令集,扩充了基于64bit的AArch64架构,除了新增A64(ARM 64bit)指令集外,也扩充了现有的A32(ARM 32bit)和T32(Thumb2 32bit)指令集;

2017-05-09 19:18:04 33799 1

原创 ARM基础学习-SWI异常中断处理

在ARM处理器中,我们常常使用SWI指令来产生一个软中断。软中断指令SWI指令中包含了一个24位的立即数,这个立即数指示了用户请求的特定的SWI功能,即这个立即数表示的是SWI指令所想要触发中断的中断号。所以,当SWI指令触发了一次异常后进入异常处理的程序时,异常程序必须要从SWI指令中提取出来中断号,即提出出来SWI指令中低24位的值,从而得到用户请求的特定的SWI功能。

2017-05-07 18:18:45 1500

原创 函数可重入性

什么是可重入性重入一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机、处理器等的中断的时候会发生重入的现象。

2017-05-07 17:16:19 506

原创 ARM基础学习-异常中断处理

中断类型当异常中断发生的时候,系统执行完当前指令后,将跳转到相应的异常中断处理程序,当处理程序执行完毕后,程序返回到发生中断的指令的下一条指令处执行;在进入异常中断处理程序时,要保存被中断的执行现场,在异常中断处理程序退出时,要恢复被中断的程序的执行现场;

2017-05-07 16:39:17 1732

原创 ARM基础学习-快速上下文切换技术

FCSE的原理快速上下文切换技术(FCSE)通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成虚拟地址到物理地址的重映射,从而提高系统性能;

2017-05-06 16:40:38 1112

原创 ARM基础学习-Cache和写缓冲器

Cache介绍CPU的主频可以达到200MHZ,而一般性能的主存储器操用DRAM。其存储周期仅为100ns-200ns,主存储的性能将会影响整个系统的性能,Cache和写缓冲区位于主存储区和CPU之间,主要用来提高存储系统性能; 而cache经常与写缓冲器(write buffer)一起使用,使用writer buffer的目的是,将处理器和cache从较慢的对主存的写操作中脱离出来。

2017-05-06 16:20:57 1913

原创 ARM基础学习-存储管理单元MMU

在ARM系统中,存储单元MMU的主要完成以下工作: (1) 虚拟存储空间到物理存储空间的映射;ARM 采用页式虚拟存储管理,把虚拟空间分成固定大小的块,每一块称为一页;物理内存地址空间也分成同样大小的页;页的大小分为粗粒度和细粒度;MMU需要实现虚拟地址到物理地址的转换; (2) 存储器访问权限的控制; (3) 设置虚拟存储空间的缓冲的特性;页表是实现MMU的重要手段,页表存储与内存中,表的每

2017-05-06 12:39:38 1322

原创 ARM基础学习-协处理器CP15

CP15负责管理ARM中存储管理系统;

2017-05-04 21:41:56 2478 1

原创 主流手机双摄介绍

手机双摄

2017-05-02 22:17:45 2496

原创 ARM基础学习-ATPCS子程序调用基本规范

ATPCS

2017-05-02 20:32:53 2360

原创 ARM基础学习-寄存器寻址方式和指令

寻址方式数据都存在存储器中,寻址简单地说就是找到存储数据或指令的地址。存储器有很多存储单元,用于存储数据。arm指令

2017-04-30 17:13:02 8491

原创 ARM基础学习-寄存器

大学的时候学习过一段时间汇编,现在出来工作发现还需要捡起这些东西重新去学习,接下这一段时间先集中整理ARM的基础知识,然后扩展到ARMv8学习64位框架,然后学习MMU,学习它的中断处理方式;这篇文章以基础为主学习ARM寄存器;

2017-04-30 17:11:26 703

原创 coredump产生

coredump上一节分析了产生NE后生成tombstone的流程,有时候通过分析tombstone并不能解决问题,这时候我们需要coredump来分析问题,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析这个文件,我们可以定位到程序异常退

2017-04-29 10:05:29 2442

原创 Native Exception产生

本文主要讲述如何产生native exception及debuggerd如何处理这个异常信号

2017-04-29 09:59:42 3512

原创 c语言面试题重点整理·简单编程类

下面是常用到的一些面试题,不对的地方求纠正:(1)排序 插入法(2)排序冒泡法  (3)希尔排序(4)二分查找法int BinSearch1(int r[ ], int n, int k)//数组r[1] ~ r[n]存放查找集合{ low=1; high=n; while (low<=high) {

2016-03-23 20:48:01 846

SGM3140.pdf

flashlight datasheet SGM3140 500mA Buck/Boost Charge Pump LED Driver

2020-04-30

hrtimer高精度定时器.odt

Linux时间子系统:高精度定时器(hrtimer)与普通的定时器相比较,hrtimer具有高精度定时的优势;精度可达纳秒(ns)级别,内核使用红黑树来组织hrtimer。随着系统的运行,hrtimer不停的被创建和销毁。

2020-04-30

DW9714_spec_v0 4.pdf

DW9714_spec_v0 4.pdf af drvier spec sheet 10bit Resolution VCM driver IC with 12C interface

2020-04-21

S5PV210_UserManual_preliminary

s5pv210 文档.from samsung.spec

2014-11-09

S5PV210_iROM_ApplicationNote_Preliminary_20091126

S5PV210_iROM 文档from Samsung

2014-11-09

空空如也

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

TA关注的人

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