自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ubuntu中安装微信

打开terminal: 第一步:升级软件 sudo apt-get update sudo apt-get upgrade 第二步: git clone https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu.git 第三步:cd到deepin-wine-for-ubuntu文件夹下面,执行下列命令./install.sh 第四步:在home目录下新建一个文件夹,我命名的是wine_.

2022-04-24 10:45:05 11212 7

原创 Ubuntu无法用快捷键或图标打开终端

问题最近在用 Ubuntu 18.04的时候,遇到了不能用快捷键 ctrl + alt + T打开命令行终端的问题。如果点击终端图标,则会在顶部显示一个正在加载的终端图标,貌似一会儿就能打开。不过过一会儿之后,顶部的图标就消失了,也没有打开终端窗口。但是,如果对桌面点鼠标右键,选择“打开终端(Open terminal)”,或者对文件管理器里任意目录点鼠标右键,选择“在此打开终端(Open terminal here)”,则可以正常打开终端窗口。打开终端窗口后,再通过其菜单打开新窗口也没有.

2022-04-16 12:47:27 3595 3

原创 (已解决)pip3报错:from pip._internal.cli.main import main File “/usr/local/lib/python3.5/dist-packages/p

liuzhicheng@Rivotek:~$ pip3 -VTraceback (most recent call last): File "/home/liuzhicheng/.local/bin/pip3", line 7, in <module> from pip._internal.cli.main import main File "/home/liuzhicheng/.local/lib/python3.5/site-packages/pip/_internal/.

2022-04-16 12:07:56 2417

原创 Camera 服务启动流程简析

Camera 服务启动流程概览 cameraserver 与 provider 这两个进程启动、初始化的调用逻辑,如下图总体逻辑顺序:provider 进程启动,注册;cameraserver 进程启动,注册,初始化;cameraserver 获取远端 provider(此时实例化 CameraProvider 并初始化)。上图中,实线箭头是调用关系。左边是 cameraserver 进程中的动作,右边则是 provider 进程中的动作,它们之间通过 ICameraPro.

2022-03-16 16:42:14 1378

原创 Camera HAL3的整体架构和流程

Camera的整体架构上图是Google官方的Camera架构,Google封装了HAL层接口:ICameraProvider, ICameraDevice, ICameraDeviceSession。这几个接口的作用如下:ICameraProvider:用于枚举单个设备并管理其状态。ICameraDevice:相机设备接口。ICameraDeviceSession:活跃的相机设备会话接口。MTK HAL3结构主要实现了这几个接口, CameraProviderImpl实现了IC.

2022-03-16 11:13:53 2679

原创 Ubuntu-18.04Python2与Python3自由切换

一、配置ssh链接安装openssh-server$ sudo apt-get install openssh-server二、安装Python3及pip3$ sudo apt-get install python3$ sudo apt install python3-pip三、将Python3设置为默认python2切换python3$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.

2022-03-11 11:51:48 980

原创 Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build-YnoI8J/pip/

$ pip install --upgrade pipCollecting pip Using cached https://files.pythonhosted.org/packages/33/c9/e2164122d365d8f823213a53970fa3005eb16218edcfc56ca24cb6deba2b/pip-22.0.4.tar.gz Complete output from command python setup.py egg_info: Tracebac.

2022-03-11 11:20:27 3398

原创 Android性能调试:系统跟踪应用---Perfetto

什么是系统跟踪应用?“系统跟踪”应用是一款用于将设备活动保存到跟踪文件的 Android 工具。多用于分析性能问题;什么是Perfetto?Perfetto 是 Android 10 中引入的全新平台级跟踪工具。Android 10(API 级别 29)或更高版本的设备上,跟踪文件会以 Perfetto 格式保存;生成的跟踪文件存储在设备的“/data/local/traces”目录下,文件的后缀名为“.perfetto-trace“;用于解析“.perfetto-trace“文件.

2022-03-09 16:47:53 3185

原创 Ubuntu终端查看YUV文件

YUV格式编码的图片并不能使用一般的图像软件打开,在Linux下需要安装ffmpeg。#安装ffmpeg$sudo apt install ffmpeg #查看图片,需要注意的是YUV图像的信息中并没有存储宽和高,所以在打开时需要指定图像的宽和高。$ffplay [-f rawvideo] -video_size WxH dest.yuv #将图像转化为YUV格式$ffmpeg -i src.xxx -s WxH [-pix_fmt yuv420p] dest.yuv...

2022-03-04 14:11:58 3248

原创 Ubuntu16.04如何将桌面上左边任务栏移到屏幕下方

操作步骤1)移动到桌面的下方:打开终端,(快捷键:Ctrl+Alt+T)然后输入命令:gsettings set com.canonical.Unity.Launcher launcher-position Bottom效果图如下所示:2)移动到桌面的左方:打开终端,输入命令:gsettings set com.canonical.Unity.Launcher launcher-position Left效果图如下所示:3)注意:如果遇到错误Glib-GIO-.

2022-01-26 09:59:46 5300

原创 ubuntu下修改终端字体颜色

Ubuntu下终端字体如果全是白色很不直观,可以根据自己喜好修改颜色。$ sudo gedit .bashrc将以下一段添加在最下面即可。(下面这个是我的配色)PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;33m\]\w\[\033[00m\]\$ 'liuzhicheng@Rivotek:~$ echo ${LS_COLORS} | grep 34rs=0:di=01.

2022-01-21 17:23:20 2203

原创 Ubuntu 磁盘挂载——开机自动挂载

Ubuntu 磁盘挂载1.使用命令查看分区sudo fdisk -l 2.创建挂载目录sudo mkdir /mnt/data3.开始挂载sudo mount /dev/sda/ /mnt/data/4.设置开机自动挂载4.1查询挂载硬盘UUIDsudo blkid /dev/sda2返回信息为/dev/sda2: LABEL="Data" UUID="88069947069936E2" TYPE="ntfs" PARTLABEL="Basic data partition".

2022-01-20 12:32:26 6937 1

原创 如何在Ubuntu系统下安装JDK

一、安装Open JDK1.打开终端,在命令行模式下输入指令,添加OpenJDK的源sudo add-apt-repository ppa:openjdk-r/ppasudo apt-get update2.输入指令,安装OpenJDK 8sudo apt-get install openjdk-8-jdk3.安装完成后,可以在命令行模式下输入“java -version”指令验证是否安装成功二、安装Oracle JDK官网下载JDKhttp://www..

2022-01-14 11:48:26 29996 2

原创 如何删除aux aux.c aux.h,强行删除删不掉的文件

一、原因Windows 下不能够以下面这些字样来命名文件/文件夹,括:“aux”“com1”“com2”“prn”“con”和“nul”等,因为这些名字都属于设备名称,等价于一个 DOS 设备,如果我们把文件命名为这些名字,Windows 就会误以为发生重名,所以会提示“不能创建同名的文件”等等。 当然,有一些特殊的方法可以偷机取巧,建立以这些设备名为名的文件夹,比如我们在命令提示符下执行“md C:/aux//”,就在 C 盘建了一个名叫 aux 的文件夹。此文件夹虽然可以访问,也可以建立子文.

2022-01-08 16:46:14 1904 1

原创 26.学习Camera之——PDAF(相位对焦)的基本原理

在自动对焦的时候总是有一个困惑,知道图像是不清楚的,但是lens应该向前还是向后移动呢?总是要前后移动lens一下才知道,普通的反差法对焦就是这么做的,爬山嘛。PDAF的出现就是为了解决这个lens移动的问题,可以根据图像,预判lens运动的方向。PDAF最早运用在单反上,已经是非常成熟的技术了,原理如下图。左图为CCD在焦后的情况,右图为焦前。当CCD在焦后时,在线阵CCD1和CCD2上会发现聚焦点CCD1的在左,反之,则聚焦点CCD2的在左(图中红色标记的光线)。这种方法需要加.

2021-12-06 17:51:00 6033 3

原创 25.学习Camera之——OTP

Camera之OTP随着5Meg 、8Meg、12Meg 等高像素摄像头在手机中的应用越来越广,终端客户对camera的成像效果和品质要求越来越高,如何提升摄像头模组的一致性和各方面的性能已显得尤为重要。今天就为大家介绍在高像素模组中被越来越广泛应用的OTP技术。1. 何谓OTP全称:OTP(One Time Programmable)MCU的一种存储器类型,意即一次性编程。多是采用融丝结构,编程过程是不可逆的破坏活动。2. 优缺点相对于传统的公司采用的eeprom而言,OTP具有价.

2021-12-06 17:30:15 2169

原创 24.学习Camera之——高通-Camera多模组兼容方案

一、需求工作中,经常遇到这样的需求:sensor相同模组厂不同(意味着走线、fpc、镜头、组装等不相同)这时候,效果的同事需要做针对不同模组厂同一颗sensor进行效果调试。效果参数是2份,即做兼容!如果你只兼容2个模组厂生产的同一颗sensor,那么直接让2家模组厂区分sensor_id就可以了!然后驱动代码搞2份,sensor_id和效果文件区别一下就行了!但是如果有3家甚至更多的模组厂呢,就无法根据sensor_id来区分了,因为sensor_id的地址只能是2个!(ps:为啥.

2021-12-06 17:24:32 1083

原创 20.学习Camera之——深入理解Android相机体系结构

文章目录及链接文章 链接相机简史 https://blog.csdn.net/u012596975/article/details/107136261安卓相机架构概览 https://blog.csdn.net/u012596975/article/details/107136568应用层 https://blog.csdn.net/u012596975/article/details/107137110服务...

2021-12-06 15:32:45 2392

原创 19.学习Camera之——相机驱动层–V4L2框架解析

相机驱动层–V4L2框架解析一、概览相机驱动层位于HAL Moudle与硬件层之间,借助linux内核驱动框架,以文件节点的方式暴露接口给用户空间,让HAL Module通过标准的文件访问接口,从而能够将请求顺利地下发到内核中,而在内核中,为了更好的支持视频流的操作,早先提出了v4l视频处理框架,但是由于操作复杂,并且代码无法进行较好的重构,难以维护等原因,之后便衍生出了v4l2框架。按照v4l2标准,它将一个数据流设备抽象成一个videoX节点,从属的子设备都对应着各自的v4l2_su.

2021-12-06 15:27:47 2924 2

原创 18.学习Camera之——V4L2视频输入框架概述

V4L2框架简介几乎所有的设备都有多个 IC 模块,它们可能是实体的(例如 USB 摄像头里面包含 ISP、sensor 等)、也可能是抽象的(如 USB 设备里面的抽象拓扑结构),它们在 /dev 目录下面生成了多个设备节点,并且这些 IC 模块还创建了一些非 v4l2 设备:DVB、ALSA、FB、I2C 和输入设备。正是由于硬件的复杂性,v4l2 的驱动也变得非常复杂。特别是 v4l2 驱动要支持 IC 模块来进行音/视频的混合/编解码操作,这就更加使得 v4l2 驱动变得异常复杂。.

2021-12-06 15:12:11 1491

原创 17.学习Camera之——Linux V4L2驱动架构解析与开发导引

众所周知,linux中可以采用灵活的多层次的驱动架构来对接口进行统一与抽象,最低层次的驱动总是直接面向硬件的,而最高层次的驱动在linux中被划分为“面向字符设备、面向块设备、面向网络接口”三大类来进行处理,前两类驱动在文件系统中形成类似文件的“虚拟文件”,又称为“节点node”,这些节点拥有不同的名称代表不同的设备,在目录/dev下进行统一管理,系统调用函数如open、close、read等也与普通文件的操作有相似之处,这种接口的一致性是由VFS(虚拟文件系统层)抽象完成的。面向网络接口的设备.

2021-12-06 14:58:03 1796

原创 16.学习Camera之——V4L2 driver -整体架构

字符设备驱动程序核心:V4L2本身就是一个字符设备,具有字符设备所有的特性,暴露接口给用户空间。V4L2 驱动核心:主要是构建一个内核中标准视频设备驱动的框架,为视频操作提供统一的接口函数。平台V4L2设备驱动:在V4L2框架下,根据平台自身的特性实现与平台相关的V4L2驱动部分,包括注册video_device和v4l2_dev。具体的sensor驱动:主要上电、提供工作时钟、视频图像裁剪、流IO开启等,实现各种设备控制方法供上层调用并注册v4l2_subdev。1 从字符设备开始:熟悉.

2021-12-06 14:36:08 2759

原创 15.学习Camera之——camera理论基础和工作原理

导读:一、摄像头模组CCM二、摄像头工作原理 一、摄像头模组(CCM) 1、camera特写 摄像头模组,Camera Compact Module,简写为CCM,是影响捕捉的重要元器件,我的理解就是硬件上的摄像头。如下图:2、摄像头内部分解 摄像头硬件结构图: (1) 、工作原理 光线通过镜头Lens进入摄像头内部,然后经过IR Filter过滤红外光,最后到达sensor(传感器),senor分为按照材质可以分为CMOS和CCD两.

2021-12-06 11:59:17 4655

原创 14.学习Camera之——camera基本知识

一 Camera模组 大家都知道,手机背面的那个小小的孔,就叫摄像头。这个小孔幽幽的泛着光泽,深邃又迷人,如同一个含苞待放的小萝莉一样,这个小萝莉还是个傲娇娘,像零之使魔的614一样惹人怜爱,而且在小萝莉身体里面,不对,是在小孔的里面,还有层膜…..哦,这是镀膜。 看了上面一段大家别惊慌,我不是猥琐的宅男,我也有女朋友的……她叫姐崎宁宁……囧! 回到正题来吧。虽然Camera的构成大家都知道很简单,就是镜头+感光芯片而已。不过大家也都知道光学成像是一门非常深奥且尖端的科学,这其.

2021-12-06 11:33:20 3820

原创 13.学习Camera之——Android Treble架构解析

本文主要介绍Treble架构下的HAL&HIDL&Binder相关技术原理。1. Treble 简介Android 8.0 版本的一项新元素是 Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Project Treble 适用于搭载 Android 8.0 及后续版本的所有新设备(这种新的架构已经在 Pixel 手机的开发者预览版中投入使用)。1.1 系统.

2021-12-03 21:40:38 645

原创 12.学习Camera之——android binder 机制架构

1.Binder通信机制介绍这篇文章会先对比Binder机制与Linux的通信机制的差别,了解为什么Android会另起炉灶,采用Binder。接着,会根据 Binder的机制,去理解什么是Service Manager,在C/S模型中扮演什么角色。最后,会从一次完整的通信活动中,去理解Binder通信的过程。1.1 Android与Linux通信机制的比较虽然Android继承使用Linux的内核,但Linux与Android的通信机制不同。在Linux中使用的IPC通信机制如下:传.

2021-12-03 21:03:14 410

原创 11.学习Camera之——Android中的常见通信机制和Linux中的通信机制

Android中的常见通信机制和Linux中的通信机制HandlerHandler是Android系统中的一种消息传递机制,起作用是应对多线程场景。将A进程的消息传递给B线程,实现异步消息处理。很多情况是将工作线程中需要更新UI的操作消息传递给UI主线程,而实现更新UI操作。因为工作线程和主线程是共享地址空间,即Handler实例对象mHandler位于线程间共享的内存堆上,工作线程和主线程直接使用该对象,只需要注意多线程的同步问题。工作系统通过mHandler向其成员变量MessageQue.

2021-12-03 20:53:02 600

原创 __attribute__((weak)) 简介及作用

最新在看项目新架构代码上看到了有使用到weak,以前没有看到过,所以写一篇文章以作记录。场景:A,B两个模块,A模块调用了不确定B模块是否提供了函数,但是又不得不调用,这个时候在A模块中再申明一个弱符号函数,即用weak,如果外部提供了调用外部的,如果没提供调用申明的。弱符号:若两个或两个以上全局符号(函数或变量名)名字一样,而其中之一声明为weak属性,则这些全局符号不会引发重定义错误。链接器会忽略弱符号,去使用普通的全局符号来解析所有对这些符号的引用,但当普通的全局符号不可用时,链接器会使.

2021-11-30 17:43:30 303

原创 10.学习Camera之——Android系统通信机制与调用流程

1.1.1 Android 的系统构架 要深入学习 Android,首先需要学习 Android的系统构架。Android的系统构架和其操作系统一样,采用了分层的构架,层次非常清晰,因此要掌握它的构架并不难。下图为为Android 的系统构架图,如果你对该图已经不陌生,并且理解图中所示的构架,那么你可以跳过这部分内容(或者快速浏览) ;如果你是第一次见到该图,建议你详细阅读该部分内容,因为整本书的内容都是以这幅图为基础的。我们会对图中的每一个模块进行详细地分析,让你真正掌握 A..

2021-11-29 21:22:28 330

原创 9.学习Camera之——Android系统架构与系统源码目录

1.Android系统架构Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。应用层系统内置的应用程序以及非系统级的应用程序都是属于应用层。负责与用户进行直接交互,通常都是用Java进行开发的。应用框架层(Java Framework)应用框架层为开发人员提供了可以开发应用程序所需要的API,我们平常开发应用程序都是调用的这一层所提供的API,当然也包括系统的应用。这一层的是由Java代码编写的,可以称为Java F..

2021-11-29 20:59:55 412

原创 8.学习Camera之——Android开机流程

Android系统启动流程要求:掌握Android系统的启动流程,每个阶段的区别和作用。一. android系统架构andorid系统架构从上到下分别有应用层、应用框架层、系统运行时库层、硬件抽象层、Linux内核层。 应用层:包括系统应用比如闹钟、日历等这些在内的以及非系统级别的应用都属于应用层。负责用户交互,也就是我们需要开发的东西。 应用框架层:这一层主要是为咱们开发人员提供用来开发应用程序的API,平常我们开发程序大部分都是调用这部分的API来进行开.

2021-11-29 20:45:07 4814

原创 7.学习Camera之——Linux下0号进程的前世(init_task进程)今生(idle进程)

Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2)idle进程由系统自动创建, 运行在内核态idle进程其pid=0,其前身是系统创建的第一个进程,也是唯一一个没有通过fork或者kernel_thread产生的进程。完成加载系统后,演变为进程调度、交换init进程由idle通过kernel_thread创建,在内核空间完成初始化后, 加载init程序, 并最终用户空间由0进程创建,完成系统的初始化. 是系统中所.

2021-11-29 19:10:18 330

原创 6.学习Camera之——linux内核启动流程

本文以Linux3.14版本源码为例分析其启动流程。各版本启动代码略有不同,但核心流程与思想万变不离其宗。内核映像被加载到内存并获得控制权之后,内核启动流程开始。通常,内核映像以压缩形式存储,并不是一个可以执行的内核。因此,内核阶段的首要工作是自解压内核映像。内核编译生成vmliunx后,通常会对其进行压缩,得到zImage(小内核,小于512KB)或bzImage(大内核,大于512KB)。在它们的头部嵌有解压缩程序。通过linux/arch/arm/boot/compressed目录.

2021-11-29 18:58:50 295

原创 5.学习Camera之——字符设备驱动

要求:掌握Linux内核模块、字符设备驱动作业:创建一个简单的 字符设备驱动这个驱动中,实现 read和write 两个API,其中 write中把传入的内容保存在一块内存中(使用kmalloc()来进行分配,最大1K的大小,如果传入的内容大于1K则报错);当read这个 设备文件的时候,请把这个内存里面的内容打印出来。验证的方法如下,比方说如果你的设备文件是 /dev/kaka写入内容: echo "hello" > /dev/kaka 或者是 cat /sdcard/demo.

2021-11-29 18:05:10 666

原创 4.学习Camera之——Linux内核中的Kconfig、Makefile、.config

Kconfig、Makefile、.config.

2021-11-29 16:30:33 274

原创 3.学习Camera之——Linux内核及内核编译

要求:了解驱动的一些硬件基础,掌握Linux内核及内核编译的相关知识,本地完成内核配置及编译。一、准备工作准备工作如何做,这里就不详说了。a) 首先,你要有一台PC(这不废话么^_^),装好了Linux。b) 安装好GCC(这个指的是host gcc,用于编译生成运行于pc机程序的)、make等工具。c) 下载一份纯净的Linux内核源码包,并解压好。d) 如果你是移植Linux到嵌入式系统,则还要再下载安装交叉编译工具链。例如,你的目标单板CPU可能是arm等cpu,则安装相应.

2021-11-29 16:17:56 365

原创 2.学习Camera之——Linux驱动基础

Linux的三大类驱动:STM32裸机开发与嵌入式Linux开发的一些区别:嵌入式Linux的开发方式与STM32裸机开发的方式有点不一样。在STM32的裸机开发中,驱动层与应用层的区分可能没有那么明显,常常都杂揉在一起。当然,有些很有水平的裸机程序分层分得还是很明显的。但是,在嵌入式Linux中,驱动和应用的分层是特别明显的,最直观的感受就是驱动程序是一个.c文件里,应用程序是另一个.c文件。比如我们这个hello驱动实验中,我们的驱动程序为hello_drv.c...

2021-11-29 15:53:34 1827

原创 1.学习Camera之——C语言和Linux的编程规范

要求:掌握基本的C语言和Linux的编程书写规范,在Linux Kernel中添加自己的驱动模块如何添加驱动模块,请参考下面1. 构建测试模块:hello1.1 在linux-3.4/drivers/下新建目录hellocd linux-3.4/drivers/mkdir hello1.2 在hello/下新建hello.c Makefile Kconfig三个文件------------------------------------------------------------.

2021-11-29 15:38:01 574

原创 深入MTK平台bootloader启动之【 lk -> kernel】分析笔记

接上一篇分析: 《深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记》Pre-loader 运行在ISRAM,待完成 DRAM 的初始化后,再将lk载入DRAM中,最后通过特殊sys call手段实现跳转到lk的执行入口,正式进入lk初始化阶段.一、lk执行入口:位于.text.boot 这个section(段),具体定义位置为:./lk/arch/arm/system-onesegment.ld:10: .text.boot : { *(.tex

2021-11-17 21:31:00 1729

原创 深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记

1、bootloader到kernel启动总逻辑流程图ARM架构中,EL0/EL1是必须实现,EL2/EL3是选配,ELx跟层级对应关系:EL0 -- appEL1 -- Linux kernel 、lkEL2 -- hypervisor(虚拟化)EL3 -- ARM trust firmware 、pre-loader若平台未实现EL3(atf),pre-loader直接加载lk:若平台实现EL3,则需要先加载完ATF再由ATF去加载lk:bootload.

2021-11-17 21:20:05 1794 1

ubuntu install wechat

ubuntu install wechat

2022-01-21

空空如也

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

TA关注的人

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