- 博客(17)
- 收藏
- 关注
原创 基于MTK平台的预览HDR实现
这个专题主要从下面三大块内容来展开介绍1、什么是HDR?2、MTK Camera HAL3框架介绍3、算法实现1、什么是HDR?问题1: 在了解HDR原理之前,先稍微思考一个问题:在我们平常使用的手机中,HDR功能一般指的是Capture HDR(拍照HDR),而没有Preview HDR,为什么?HDR是高动态范围图像(High-Dynamic Range)的简称,与普通的图像相比,拥有比较好的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Range,低动态范围
2021-06-23 14:55:17
354
原创 详解static、volatile、const
1、背景在查阅相关资料的时候,无意间看到一个大佬对于static关键字的讲解,如雷贯耳,写得非常容易理解,这是大佬的链接本人在学习相关知识的时候,喜欢也习惯把从各种书籍或者是各位大佬的博客中学到的知识用自己的逻辑和自己的语言重新组织一下(当然,如果书中或者各位大佬的描述我觉得非常好理解,我就直接使用啦),方便自己记忆,加深影响。废话不多说,我们进入正题2、static关键字介绍在记录知识点的时候,我喜欢以提问的方式来一层一层地拨开这个知识点的“心”,我个人觉得这样的方式来学习某些知识,能够形成一个
2021-06-02 23:46:25
2815
2
原创 Linux中的中断管理机制
1、中断产生背景假设现在CPU需要去获取一个键盘的时间,如果处理器发出一个请求信号之后一直在轮询键盘的响应,由于键盘响应速度比处理器慢得多并且需要等待用户输入,这对于CPU来说是非常浪费资源的。与其这样,还不如等到键盘有事件发生的时候再发送一个信号给处理器,让处理器暂停当前的工作来处理这个响应,这比处理器一直轮询等待效率要高,这就是中断管理机制产生的背景。2、Linux内核中断管理从系统角度来看,Linux内核中断管理可以分成4层硬件层:例如CPU和中断控制器的连接处理器架构管理:例如CPU中断
2021-05-11 14:38:19
2358
3
原创 图像优化算法(HE、AHE、CLAHE)简单介绍
一、背景介绍在工作过程中,接到一个客户需求:使用普通Camera实现capture hdr和preview hdr,其中的preview hdr需求,正常的hdr算法需要使用三帧图像数据来合成一帧HDR图像,算法的时间复杂度较高,这对于需要实时性处理的camera preview功能来说不太实际,因此我使用了图像增强算法(HE、AHE、CLAHE)来提高camere预览图像的对比度,提升预览效果,下面分别介绍一下这三种算法。二、灰度直方图均衡算法(HE)2.1、算法简介直方图均衡算法的介绍来自百科,
2021-04-24 23:20:24
15839
1
原创 Linux中的同步机制
1、背景编写内核代码或驱动代码时需要留意共享资源的保护,防止共享资源被并发访问。所谓并发访问,就是指多个内核路径同时访问和操作相同地址的数据,有可能发生相互覆盖共享数据的情况,造成被访问数据的不一致,可能会造成系统不稳定或产生错误。通俗点来讲,就是不同的人去修改同一个东西,当某一个人想要去重新获取这个东西时,其实跟前面他写的值不一样了,但是他却不知道,拿回来就用,造成出错。2、有什么解决办法?Linux内核提供了多种并发访问的保护机制,例如原子操作、自旋锁、信号量、互斥体、读写锁、RCU等,我们需要了
2021-03-10 19:15:12
1688
原创 内存屏障详解
1、什么是内存屏障?你可以先这么理解,在拥有多核CPU的ARM处理器中,会存在一种现象:那就是各个CPU在进行数据共享的时候(数据共享的目的是为了保证数据一致性),某种情况下CPU可能是处于阻塞的状态,也就是CPU需要等到另外一个CPU的反馈信息后才可以进行下一步的动作,这样严重影响了CPU的性能,为了优化和解决这种问题,可以从硬件和软件两个方面结合进行处理,硬件方面采用的是增加store buffer这一硬件结构,后面会介绍,软件方面采用的,就是使用内存屏障。2、为什么会出现内存屏障在进一步剖析为什
2021-03-08 11:50:56
9392
6
原创 Linux之DMA详解
Linux之DMA详解1、什么是DMA?DMA全称Direct Memory Access(直接访问存储器)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据。2、为什么需要DMA?整个数据传输操作在一个称为DMA控制器的控制下进行,CPU除了在数据传输开始和结束时做一点处理外(开始和结束时候要做中断处理),在外部设备和存储器进行数据传输的过程中,CPU可也进行其他的工作(前提是未设置停止CPU访问),这样,在大部分时间里,CPU和输入输出都处于并行操作,因此,计算机系统的效率将
2021-02-23 10:59:56
9335
1
原创 Linux内存之Cache
一、 Linux内存之Cache1.1、Cache的基本介绍Cache存储器,是位于CPU和主存储器DRAM之间的一块高速缓冲存储器,规模较小,但是速度很快,通常由SRAM(静态存储器)组成。Cache的功能是提高CPU数据输入输出的速率。Cache容量小但速度快,内存速度较低但容量大,通过优化调度算法,可以让系统的性能大大改善,感觉就像是又有了主存储器的内存,又有了Cache的访问速度。1.2、程序是如何运行的?我们先思考一个问题:我们的程序是如何运行起来的?我们应该知道,程序是运行在RAM之
2020-12-25 15:10:43
9898
2
原创 MTK A/B system说明及配置
1. 1.MTK A/B system说明及配置1.1. A/B system updatesAndroid从7.0开始引入新的OTA升级方式,A/B System Updates,我们先看看A/B system updates和我们常规的OTA升级有什么不同1.1.1. AB模式和常规模式的区别传统OTA:设备上有一个Android主系统和一个Recovery系统,Android主系统运行时检测是否需要升级,如果需要升级,则将升级的数据包下载并存放到cache分区,重启系统后进入Recover
2020-12-11 09:32:07
2946
1
原创 Linux内存管理之基本概念介绍(一)
Linux内存管理之基本概念介绍(一)我们知道,在linux操作系统中,cpu在执行一个进程的时候,都会访问到内存。但是CPU并不是直接访问物理内存地址,而是通过虚拟地址空间来间接访问到物理内存。操作系统通过在虚拟地址和物理地址之间建立映射关系,来让CPU可以间接访问到物理地址。想要了解Linux内存管理,那么需要先了解一下Linux内存管理的一些基本名词。虚拟地址空间:操作系统为每一个正在执行的进程分配的一个逻辑地址页:通过将虚拟地址空间以512Byte~8K的大小作为一个单位,这个单位就被称
2020-11-27 11:32:34
595
1
原创 Linux内存管理之红黑树(五)
一、什么是红黑树1.1、二叉查找树想要学习红黑树,就必须先理解一下二叉树(Binary Search Tree)[BST]左子树上所有节点的值均小于或等于它的根结点的值右子树上所有节点的值均大于或等于它的根节点的值左、右子树也分别为二叉排序树下图就是一颗典型的二叉查找树1.1.1、二叉查找树的好处比如我们想要在上面的二叉树上查找节点10,应该怎么搜索呢?a、查找根结点9b、由于10>9,查找右孩子13c、由于10<13,查找左孩子11d、由于10<11,查找左
2020-11-24 17:59:12
486
原创 Linux内存管理之内存管理单元(MMU)(二)
Linux内存管理之内存管理单元(二)1.1、什么是MMU在CPU内部,有一个专门的硬件单元来负责这个虚拟页面到物理页面的转换,它被被称为内存管理单元(Memory Management Unit, MMU),是内存管理中非常重要的一个组成部分。ARM处理器的内存管理单元包括TLB和Table Walk Unit两个部件。TLB:TLB是一块高速缓存,用于缓存页表转换的结果,从而减少内存访问的时间页表查询:一个完整的页表翻译和查找的过程叫做页表查询,页表查询的过程由硬件自动完成,但是页表的维护需要
2020-11-24 17:30:52
539
原创 Linux内存管理(一)——从硬件角度看内存管理
从硬件角度看内存管理①、在操作系统还没有出来之前,程序都是被存放在卡片上,计算机读取一张卡片就运行一条指令。这种从外部存储介质上直接运行指令的方法效率很低②、单道编程的内存管理所谓单道,就是整个系统只有一个用户进程和一个操作系统。在这种模式下,用户程序总是加载到同一个内存地址上运行。所以内存管理很简单,实际上不需要任何的内存管理单元,因为程序使用的地址就是物理地址,而且也不需要地址保护。缺点:无法运行比实际物理内存大的程序;其次,系统只运行一个程序,造成资源浪费;其三,无法移植到其他的计算机中运行③
2020-11-23 16:58:33
259
转载 Python中Collections模块的Counter容器类使用教程
Python中Collections模块的Counter容器类使用教程1、collections模块collections模块自Python2.4版本开始被引入,包含了dict,set,list,tuple以外的一些特殊容器类型,分别是:OrderedDict类:排序字典,是字典的子类。引入自Python2.7namedtuple()函数:命名元组,是一个工厂函数。引入自Python2.6Counter类:为hashable对象技术,是字典的子类。引入自Python2.7deque:双向队列。引
2020-11-04 11:40:19
219
原创 【积少成多】vi的进阶使用
1. 【积少成多】vi的进阶使用在日常的开发工作中,ubuntu中的vi编辑器是我们无法避免的需要使用的工具之一,而其又不像普通的文本编辑器一样自由选择,想要随心所欲得使用vi编辑器,提高工作效率,也是需要下一定的心思的,在此将记录本人在工作中积累的一些关于vi编辑器的使用技巧1.1. 注释1.1.1. 多行注释Step 1:在命令行的模式下,将光标固定在需要注释内容中的第一列,按ctr...
2019-03-09 15:04:28
293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人