自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 cache工作原理

cache基本原理cache的组织形式多核cache一致性

2022-09-18 23:45:10 1067

原创 新加sensor

海思平台和Movidious平台新sensor bringup的比较从海思文档找到的sensor bringup的步骤如下,调试思路都是一样的。1. 准备材料准备环节与平台无关。1.1 确认主芯片规格支持Master模式,支持的线性、WDR接口模式,支持输入频率上限。1.2 Sensor datasheet确认图像传输接口模式,输出频率。确认曝光时间、增益如何设置,帧率如何修改。确认在WDR 模式下的以上两项。LVDS 接口,需要确认同步码。1.3 Initialize Settin

2021-08-29 17:36:10 797

原创 CV 笔记

CV笔记边缘检测Sobel 算子拉普拉斯算子Canny 算子SolvePnP霍夫变换边缘检测参考资料:https://www.jianshu.com/p/2334bee37de5Sobel 算子一阶差分-1, 0, 1-2, 0, 2-1, 0, 1这就是 Sobel 边缘检测算子,偏 x 方向的。(类似二元函数的偏导数,偏x,偏y)。下面是sobel 偏 y 方向的算子。-1, -2, -10, 0, 01, 2, 1分别计算偏 x 方向的 Gx,偏 y 方向的 Gy,求

2021-08-29 17:19:07 338

原创 视觉相机笔记

参考文献:《视觉SLAM十四讲–从理论到实践》《计算机视觉–模型、学习和推理》https://www.jianshu.com/p/b4479e746025https://my.oschina.net/abcijkxyz/blog/7876591 相机模型相机将三维世界中的坐标点(单位米)映射到二维图像平面(单位像素)的过程可以使用小孔成像进行描述。相机标定的目的即是获取摄像机的内参...

2021-04-21 10:14:08 1229

转载 Kalman Filter 学习笔记

作者:凌晨2点的北京链接:https://www.jianshu.com/p/2768642e3abf来源:简书Intro最近在学习伟大的Kalman Filter,这篇笔记主要是对国外的两篇介绍Kalman Filter的博客的翻译和一些个人理解,博客链接:Kalman Filter For Dummies, How a Kalman filter works。两篇博客的侧重的层次面不太一样,第一篇讲的层次比较浅显但是缺失了一些细节,第二篇讲的很深入但是有些抽象,这篇笔记将两篇博客结合起来,希望可

2021-04-18 20:15:02 240

转载 Android 进程保活招式大全

本文来自于腾讯bugly开发者社区, ,原文地址:https://segmentfault.com/a/11900000...

2019-09-10 23:07:16 181

原创 常用benchmark小结

项目预研和产品开发中经常有性能评估的需求,性能benchmark是评估性能最常用的手段。本文小结下之前用过的benchmark,先记些流水账,后续有时间再详 细整理。下表是linux native的benchmark,除了x86版本外,也都能找到或者编译出arm版本。|工具名称| 测试项目 | summary|–|--|| coremark | cpu |测评cpu的整体性能(列举、矩阵运......

2019-08-02 22:56:09 22156 5

原创 海思MPP

1 系统概述海思提供的媒体处理软件平台(Media Process Platform,简称 MPP),可支持应用软件快速开发。该平台对应用软件屏蔽了芯片相关的复杂的底层处理,并对应用软件直接提供MPI(MPP Program Interface)接口完成相应功能。该平台支持应用软件快速开发以下功能:输入视频捕获、 H.265/H.264/JPEG 编码、 H.265/H.264/JPEG 解码、...

2019-07-27 14:57:35 5881

转载 ISP算法概述

转载自https://blog.csdn.net/weijory/article/details/53306545前言:本篇blog主要为讲述ISP处理流程及其应用场景。一、概述ISP(Image Signal Processor), 即图像信号处理, 主要作用是对前端图像传感器输出的信号做后期处理, 依赖于 ISP 才能在不同的光学条件下都能较好的还原现场细节。Cmo...

2019-05-26 00:09:05 631

转载 展讯secureboot方案

Secure Boot方案介绍及实施流程 转自https://blog.csdn.net/weixin_34014555/article/details/862604591. Secure boot概述本文档主要是secure boot方案的介绍和...

2019-05-25 23:57:39 4542

转载 camera基本知识

转载于https://blog.csdn.net/wang714818/article/details/78088424 一 Camera模组          大家都知道,手机背面的那个小小的孔,就叫摄像头...

2019-05-11 23:01:09 1550

转载 Verified Boot

转载自http://luomingmao.com/2016/08/29/Verified-Boot/简介Verified Boot 是 Android 4.4 开始引入的一个新特性,作用是在系统启动时校验 system 分区是否被篡改。好处在于可以检测到 system “发生过” 改动,比如用户使用 root 软件强行植入 su 文件,但最后删除了 su, 这种情况也能检测出来。一旦检验不过,...

2019-03-03 20:35:27 3411

转载 我学习CRC32、CRC16、CRC原理和算法的总结(与WINRAR结果一致)

原文地址:http://wenku.baidu.com/view/fb791c0203d8ce2f006623f5.html我学习CRC32、CRC16、CRC原理和算法的总结(与WINRAR结果一致)wxleasyland([email protected])2010年9月2日比较愚钝,学了CRC校验好几天,很痛苦的过程,现终于有眉目了,总结一下。国外版的“轻松无痛苦学

2019-02-23 21:59:49 7679

原创 Android系统内存优化

1. 基础知识内存管理是Linux/Android OS的灵魂,关于内存的知识太多,此章节只为了后续的内存评估和优化对常用知识进行梳理,不对具体概念进行讲解,有必要的话需要先查阅相关知识点。1.1 Linux内存地址空间内存管理最基础的两个概念就是物理地址和虚拟地址,下图是最通用的描述虚拟地址通过MMU转换成物理地址的过程图。接下来是32bit OS常用的虚拟地址分布图,03GB地址空间...

2019-02-23 21:53:58 3955

原创 使能全盘加密后的Android ota升级

1. 背景知识关于Android全盘加密功能的实现可以参考https://source.android.google.cn/security/encryption/full-disk。data分区的加密原理是基于块设备层的dm-crypt,实现是通过在mount data分区时添加forceencrypt fstab属性。目前android版本的ota升级包都是存放在data分区中,重启后re...

2019-02-23 17:12:41 1925 1

原创 msm8996平台的一些debug方法

欢迎使用Markdown编辑器写博客本文中基于一些基于msm8996平台的bsp和kernel调试的一些节点和方法,有些与高通平台相关,但大部分应该是linux通用的调试信息,未经仔细整理,只当随笔记录了。android版本是7.1,kernel版本是3.18。regualtor msm8996:/d/regulator/pm8994_l17 # ls -l total 0 drwx...

2018-05-14 21:56:54 1862

转载 Android之编写hello HAL&JNI代码

http://blog.csdn.net/eliot_shao/article/details/51861905 http://blog.csdn.net/eliot_shao/article/details/51864811HAL层中文名称又叫硬件抽象层,可以理解我Linux驱动的应用层。本文实现了一个简单的hello HAL的代码,衔接hello驱动和hello JNI:http:/

2018-01-28 00:36:41 470

转载 Linux Socket CAN中文文档

转载于http://blog.csdn.net/yuanlulu/article/details/7220060自己在年假中空闲之余翻译的内核中Socket CAN的文档,原文地址在:http://lxr.linux.no/linux+v2.6.34/Documentation/networking/can.txt但是这篇文档没有涉及广播管理协议套接字 (SOCK_DGR

2018-01-18 15:56:30 1566

原创 展讯平台android display驱动分析

本文以展讯tshak平台的display controller为硬件模型,来说明Android底层显示驱动的实现原理。该硬件模型较基础和简单,目前大多SOC平台的硬件设计都变得越来越复杂,实现功能也越来越全面,但基于此平台的设计更方便理解。1 display控制器下图的结构即是显示控制器的模块组成,它内部集成了lcd显示相关的控制器:lcdc和dispc,其中lcdc仅支持MCU接口类型(...

2017-11-05 20:39:26 3729

原创 Linux时间子系统(三) -- clockevent, tick device

1 clockeventclockevent是具有编程和事件产生能力的定时器,在我使用的ARM SOC平台上底层依赖的硬件是ARM Generic Timer中的Timers。当然,在SOC系统中应该还会有其它的timer可以使用,但是本文的介绍只限于arm的timer。1.1 数据结构struct clock_event_device { void

2017-08-23 22:18:38 2756

原创 Linux时间子系统(二) -- clocksource, timekeeper

转载请标明出处floater的csdn blog,http://blog.csdn.net/flaoter从本节开始使用的内核代码版本是3.18.12,使用的定时器硬件是ARM Generic Timer。1 clocksource在上一节中介绍过clocksource提供了一个单调增加的计时器,它的底层硬件在arm平台上对应的就是上一节中的System Counter。1.1 数据结构struct

2017-08-22 22:38:17 3394

原创 Linux时间子系统(一) -- 原理

转载请标明出处floater的csdn blog,http://blog.csdn.net/flaoter1 内核概述内核2.6之前的时间子系统主要是围绕低分辨定时器和基于它实现的tick时钟周期展开的,随着嵌入式应用的发展,时间子系统引入了两个主要功能: 高分辨率定时器, tickless系统。 1. tickless系统。为了满足嵌入式设备的低功耗需求,会停用周期性的时钟,使系统长时间地进入省

2017-08-19 16:34:18 5172

原创 ddr控制器随笔

下图是依据使用过的cadence ddr controller IP画出的SOC中常用的ddr controller的结构图。 ddr控制器的数据和指令输入来自AXI Bus,AHB Bus等,它们连接的是访存指令的发起方,如CPU, GPU, DMA控制器等。ddr控制器输出的数据和指令通过DFI连接的ddr phy访问外设ddr sdram。下面对Arbiter和Command Queue

2017-07-23 19:58:25 4783

原创 linux进程调度与管理(三)

本节内容介绍用于普通进程调度的完全公平调度类(Completely Fair Scheduler),它的基本原理是这样的:设定一个调度周期(sched_latency_ns),目标是让每个进程在这个周期内至少有机会运行一次,换一种说法就是每个进程等待CPU的时间最长不超过这个调度周期;然后根据进程的数量,大家平分这个调度周期内的CPU使用权,由于进程的优先级即nice值不同,分割调度周期的时候要加权

2017-07-21 20:37:48 788

原创 linux进程调度与管理(二)

转载请标明出处floater的csdn blog,http://blog.csdn.net/flaoter上节内容对linux进程的表示和常用基础知识等进行了说明,本节开始对进程管理进行说明。1 进程调度数据结构1.1 数据结构在介绍进程调度数据结构之前,先看一下task_struct中与进程调度相关的数据成员。struct task_struct{ int prio, static_pri

2017-07-19 21:45:07 611

原创 linux进程管理与调度(一)

进程的管理与调度是所有操作系统的核心功能。从内核的角度来看,进程是内核分配资源(CPU,Memory)的重要单元,是计算机用来管理这些资源的一种抽象。从本节开始,将对linux内核的进程管理与调度子系统进行分析,其中使用的内核版本是4.4。1 进程描述在linux内核中,每一个进程唯一对应一个struct task_struct结构体,内核通过这些task_struct的管理实现对进程的管理。此数据

2017-07-19 20:39:09 1969

原创 perf使用小结

1 IntroductionPerf是Linux平台一款性能分析工具,它的实现依赖于一个性能分析架构的内核子系统,并在应用层提供了简洁的命令行接口。 Perf可以分析指定应用程序的性能问题,也可以用来分析内核的性能问题。性能分析是基于内核提供的perf_events接口实现的,支持的events包括软件事件和硬件事件。软件事件分为 1. software events,例如context-swi

2017-07-15 12:05:20 2536

转载 掌握USB/HDMI/MHL/DP验证规范 高速接口传输一次上手

转载自http://www.istgroup.com/schinese/2_news/02_news_detail.php?ID=271本来打算写一篇关于MHL,HDMI和USB的文章,但是发现网上还没有MHL 2.0或3.0的spec供下载,担心自己不参考spec写出来会有错误,所以就在网上找了一篇文章进行转载。除了MHL, HDMI和USB外,这篇文章还对另一种常用视频通信协议DisplayPo

2017-07-12 21:46:44 8519 1

原创 linux SPI驱动框架(二) -- 设备驱动

之前文章http://blog.csdn.net/flaoter/article/details/50001133对linux SPI驱动框架的控制器驱动进行了介绍,本节内容对SPI从设备的设备驱动进行讲解。设备驱动关注的结构体主要有两个,struct spi_device描述spi从设备,struct spi_driver是从设备的设备驱动。struct spi_device { stru

2017-07-11 21:20:34 6765 4

原创 ARMv8简介

参考文献: 1. DDI0487A_a_armv8_arm.pdf 2. DDI0500C_cortex_a53_r0p2_trm.pdf 3. ARM_Trusted_Firmare_for_ARMv8-A.LCU13_.pdfArmv8 OverviewARMv7与Armv8的升级示意如下: Aarch64指令集Aarch64的32个通用寄存器引用和描述如下, 与Aar

2017-07-09 16:43:52 3211

原创 arm linux 页表创建

本文对arm linux页表创建函数进行说明。在http://blog.csdn.net/flaoter/article/details/73381695中对MMU使能之前的临时页表进行了说明,此文是对kernel中正式使用的页表创建过程进行说明。 arm linux使用两级页表,L1是pgd,L2是pte。其中L1页表共2048项,每项占用8bytes,每项对应2M内存,共占用2048*8=16

2017-07-03 22:07:44 2147

原创 arm linux 临时页表的建立

本小节主要针对Android启动过程中kernel的启动进行说明,kernel的启动涉及知识太多,不可能在一节中进行足够的讲解,本节先对汇编部分进行解析。linux kernel的主要特点之一就是运行在虚拟地址空间上,但是怎么才能实现物理地址到虚拟地址空间的切换是本节关注的重点。本文使用的kernel版本为4.4。bootloader跳转到kernel之前需要保证 MMU = off, D-cac

2017-06-26 21:11:15 2250 2

转载 usb之枚举

转载自http://blog.csdn.net/myarrow/article/details/82700291. 枚举是什么?       枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB的枚举过程,只要枚举成功了,那么就已经成功大半了。       USB架构中, hub负责检测设备的连

2017-06-22 21:24:13 502

原创 linux clock

linux kernel在3.4之后加入了CCF(common clock framework)来统一管理clock,对外提供了统一的接口供其它模块调用,对内封装了clock驱动。linux的clock是基于provider/consumer模型的。本文叙述的顺序是先对clock的基本原理进行说明,然后对CCF和clock驱动进行解析,最后是外部模块的调用实例。1 原理clock是设备

2017-06-20 20:37:40 1895

原创 HDMI协议解析

本文从软件工程师角度对HDMI spec进行解析,基于的spec版本为1.4,也是设备支持最多最成熟的版本,目前最新版本为2.0。1 概述HDMI(High-Definition Multiface Interface)是Hitachi, Panasonic, Philips, SiliconImage, Sony, Thomson, Toshiba几家公司共同发布的一款音视频传输协议,主要用于DV

2017-06-18 14:19:27 59421 6

原创 Android启动流程(一)

本章节内容是基于手机平台的android启动流程进行解析,不同厂商的手机平台启动流程也都大体相似,涉及的代码大多开源,可以在相关社区进行下载。 启动顺序为: 1. ROM启动 2. spl 3. uboot 4. kernel 5. Andriod 我也将按照上述顺序对启动流程进行解析,本小节首先介绍ROM启动,spl和uboot。1 ROM启动手机SOC芯片内部一般都固

2017-06-17 15:46:39 1310

转载 I2C设备驱动(四)-- 调试问题

1 i2c死锁异常现象:master设备复位后,不能对slave进行读写操作,总线表现为SCL为高,SDA一直为低 原因:master与slave进行通信时,正好发生打算发第9个时钟,此时SCL为高,而从开始拉低SDA为低做准备(作为ACK信号),等待SCL变低后,从再释放SDA为高。如果此时正好master复位,master SCL还没来得及变低,直接变成高电平,此时slave还在等待SCL变低

2017-06-10 16:10:13 716

原创 I2C设备驱动(三)--linux i2c驱动框架

1 体系结构linux的i2c体系由以下三部分组成:(1)i2c核心由linux内核提供,定义基本数据结构,实现i2c驱动和设备的注册、注销,通信方法等。与设备无关。(2)i2c控制器驱动一般由soc设备厂商提供,主要实现i2c_adapter数据结构和通信方法数据结构i2c_algorithm。实现i2c master功能,也是本小节进行介绍的重点。(3)i2c设备驱动一般由外设厂商提供,主要实现

2017-06-10 15:55:13 6427 2

原创 I2C设备驱动(二)

I2C设备驱动(二)本小节内容基于单片机平台的firmware开发,也可用于非保护模式运行的操作系统内的开发。 1. GPIO模拟//function: set_scl_high//description: static void set_scl_high ( void ){ uint16_t volatile timeout = SCL_TIMEOUT; SET_SCL;

2017-06-10 13:46:42 823

原创 I2C设备驱动(一)--工作原理

1.协议简介I2C,inter-IC control。该协议是由Philips公司提出的一种两线式通信方案,有如下特点:(1)只需要两线,SDA和SCL (2)连接到总线的设备有唯一地址,master-slave工作模式 (3)multi-master,需要arbitration来确定通信关系 (4)串行,半双工,standard mode最高100kb/s,fast mode最高400kb

2017-05-17 23:04:41 1410

空空如也

空空如也

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

TA关注的人

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