自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构专题-数据结构绪论

参考《大话数据结构》一书,来做个数据结构的总结回顾。第一章讲的是一些基本概念。数据结构绪论数据结构:是相互之间存在一种或者多种特定关系的数据元素的集合。数据:是描述客观事物的符号,是计算机可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。数据项:一个元素可以由若干个数据项组成,是数据不可分割的最小单位。逻辑结构与物理结构逻辑结构:是指数据对象中数据元素之间的相互关系。分为以下四种:集合

2020-08-30 17:21:05 193

原创 戳破 Camera API2 HAL3【转载】

OVERVIEW目录:前言 基本概念的简介一.手机开机的时候发生了什么? 二.打开camera做了哪些事情三.点击拍照按钮的时候做了哪些事情思路:1.APP做了啥2.Framework做了啥3.hal做了啥4.kernel做了啥5.这些部分中间做了啥Let’s Start!前言 基本概念简介IPC Inter-Process Communicationcameraserver 26354 1 32880 14144 binder_ioctl_write_

2020-08-09 16:19:04 1929

原创 [camera专题--MTK平台]启动篇

1、写在开头工作两年了,一直做手机驱动这块,从一开始调试lcm、TP,然后公司倒闭后去了一家小公司,小公司调试内容很多,经常一个人负责一个项目的全部驱动,感觉啥都会一点,但都不精通。于是又毅然选择了跳槽,专门做一个模块。很幸运选择了camera模块,虽然加班很多,但趁年轻,多加班学点东西也是值得的。刚接触时主要看MTK的官网进行学习,MTK培训这点做的很好,各种文档还是中文的,也有视频。然后是项目上的练习,向前辈请教。但东西太多,太久不用便忘记了,所以有必要做个专题总结回顾之前遇到的各种坑。道路很长,唯有

2020-07-26 16:10:52 618 1

原创 camera学习---HAL代码流程

主要参考了MTK文档和Camera Open 调用流程blog下面两张是MTK文档中的一张camera HAL架构图表。Application:packages/apps/Camera2/src/com/android/camera/***Framework:/frameworks/base/core/java/android/hardware/Camera.javaAndroid...

2019-10-09 20:19:29 1138

原创 一年来的工作总结

寻寻觅觅工作已经一年多了,从校招踏上了驱动这条路,由于专业上的不对口,碰到过很多难题,靠自己看linux视频和网上搜索答案一步步积累经验。第一份工作是由于公司倒闭,这期间公司项目经验积累的很少;第二家公司是一家小公司,活多项目也比较多,几乎一个人负责整个项目,什么模块都需要自己调试,但也熟悉了解了整个项目下来的一个流程,从点亮三大件–>测试–>解bug–>跑cts归档–>归...

2019-09-25 21:54:51 642 1

原创 Makefile := ?= += =的区别

工程项目中c文件太多管理不方便,因此用Makefile来做项目管理,方便编译链接过程。看下Makefile中几种变量赋值运算符的区别:= ?= += =(1)= 最简单的赋值(2):= 一般也是赋值以上这两个大部分情况下效果是一样的,但是有时候不一样。用=赋值的变量,在被解析时他的值取决于最后一次赋值时的值,所以你看变量引用的值时不能只往前面看,还要往后面看。用:=来赋值的,则是就...

2019-09-09 11:47:56 329

原创 java学习笔记整理3-泛型简介

参考:韦东山老师视频,blog:java 泛型详解1、什么是泛型?为什么要使用泛型?泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用,Android系统中也有广泛的使用。泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是...

2019-09-09 11:26:57 150

原创 java学习笔记整理2-面向对象程序设计

Java是面向对象的语言,先看个简单的程序示例:class Person { String name; String getName() { return "guangdong "+name; }};public class Oop { public static void main(String args[]) { Person p1 = new Person(); p...

2019-08-26 17:52:37 255

原创 java学习笔记整理1-java基础

参考资料-韦东山老师第四期资料运行环境:在linux下运行,使用linux发行版ubuntu,安装好java开发环境sudo apt-get updatesudo apt-get install openjdk-7-jdksudo apt-get install openjdk-7-jre第一个java程序//Hello.java,类的名字(Hello)和java文件的名字要一致,...

2019-08-26 15:18:57 137

原创 JAVA学习笔记—JNI实现

参考资料-韦东山老师第四期视频主要参考视频讲解和相关文档,进行java的一个小的学习总结。本文讲解JNI的实现原理和代码实验。整体流程如下:下面用代码来实现下,由于我这边使用的windows的电脑,所以采用虚拟机的方式,安装ubuntu(需要安装java,参考网上其他教程即可)进行操作。先实现一个java程序和一个c程序(命名随意)JniDemo.javapublic class J...

2019-08-25 23:48:53 289

原创 Linux操作系统学习(1)

参考书籍:《linux内核完全注释》1、UNIX 操作系统的诞生 Linux操作系统是 UNIX操作系统的一个克隆版本。UNIX操作系统是美国贝尔实验室的 Ken.Thompson和 Dennis Ritchie 于 1969 年夏在 DEC PDP-7 小型计算机上开发的一个分时操作系统。 当时 Ken Thompson 在 1969 年夏天乘他夫人回家乡加利福尼亚渡假期间,在一个月内开...

2019-08-24 15:30:45 291

原创 ubuntu下使用minicom工具

minicom是ubuntu下的一个串口输出工具,打印用来串口输出信息。安装:sudo apt-get install minicom 配置:1、保证你对串口有读/写的权限. 我们知道, Linux的设备对应于/dev/目录中的某个文件. 使用如下命令来打开对COM1的权限:/USB转串口使用ttyUSB0/sudo chmod 777 /dev/ttyUSB0 2、设置合适波...

2019-08-19 10:25:49 746

转载 沉下心做事

一个鸡蛋从外打破是食物,从内突破是生命。 想要认真潜下心来提高自己,是一个自我觉醒的开端。不能沉下心的原因,大多数人应该有这么几种:一、遇到困难,觉得难以克服这里的困难包括分客观问题,主管问题,人际关系问题等等。比如看书学习过程中有一个点怎么搞也不明白,或者所用的软件有个插件怎么也搞不好,这样的绊脚石犹如里程碑一样的存在,一旦解决了,就会往前跨进一大步,但却有很多人,被绊倒了。解决这类问题...

2019-08-18 23:31:44 645

转载 [转]学习站点-大神笔记

Android:深入浅出Android老罗Androidandroid底层蜗窝科技–内核设备树:设备树其他:瑞芯微–RK平台大神博客GitHub的RK平台大声吴恩达机器学习笔记内核调试笔记吴恩达机器学习笔记嵌入式和ARM非常不错的学习网站无人驾驶向日葵智能不错的资料杜春蕾的<<ARM 体系架构与编程>>,深度学习不错文章神经网络基础...

2019-08-16 16:01:54 168

原创 二叉树和红黑树

整理一些常见的算法:原文连接:http://www.360doc.com/content/18/0904/19/25944647_783893127.shtml

2019-08-13 17:27:48 156

原创 C++学习笔记三(表达式)

1.1 基本概念表达式由一个或多个运算对象组成,对表达式求值将得到一个结果。组合运算符和运算对象:要理解含有多个运算符的复杂表达式,首先要理解运算符的优先级、结合律、以及运算对象的求值顺序运算对象转换:求值过程中,运算对象常常由一种类型转换成另外一种类型。重载运算符:为已存在的运算符赋予了另外一层含义左值和右值:当一个对象被用作右值时,用的是对象的值(内容),当一个对象被用作左值...

2019-08-13 15:22:46 193

原创 C++学习笔记二(字符串、向量和数组)

字符串、向量和数组1、有了using声明就无须专门的前缀也可以使用所需的名字了。形式:using namespace ::name;如:using namespace std;2、标准库类型stringstring表示可变长的字符序列,使用string类型必须首先包含string头文件。#include <string>using std::string;*定义和初始...

2019-08-13 10:07:47 100

原创 C++学习笔记一

系统学习下C++,参考 C++ Primer 第5版 中文版带书签的链接: https://pan.baidu.com/s/1-qFSz1W4vsfxHoPH0QOoxA 提取码: h268编译运行C++程序1、使用PC机上的编译器IDE集成开发环境2、运行GNU编译器,g++ -o a.o a.cpp初识输入输出1、iostream库包含两个基础类型istream和ostream,分...

2019-08-12 20:36:23 196

原创 Android从驱动到应用(7)_添加应用程序来使用硬件访问服务

前面已经搭建好硬件访问服务,下面来添加一个应用程序来使用下。参考罗升阳的《Android系统源代码情景分析 [罗升阳著]》目录结构如下:包含一个源代码目录src、一个资源目录res、一个配置文件AndroidManifest.xml、和一个编译脚本Android.mk文件,下面看下具体的实现代码。Demo.java:定义了一个Activity组件,他是应用程序的主界面,定义了一个编辑框和...

2019-08-12 12:42:51 308

原创 Android从驱动到应用(6)_添加硬件访问服务

Android的硬件访问服务运行在system中,而使用硬件访问服务的应用程序运行在另外的进程中,所以应用程序要通过进程间通信机制(Binder进程间通信机制)来访问这些硬件访问服务;Binder进程间通信机制要求提供服务的一方必须实现一个具有跨进程访问能力的服务接口。AIDL:Android系统通过接口描述语言(AIDL)来定义具有具有跨进程访问能力的服务接口,后缀名为aidl,编译时会将它转...

2019-08-09 16:35:32 335

原创 Android从驱动到应用(5)_添加JNI层

前面已经添加好了HAL层,由于HAL层由c++开发的,而应用程序框架层中的硬件访问服务是使用java语言开发的,所以硬件访问服务必须通过java本地接口(JNI)来调用硬件抽象层模块的接口。使java代码可以调用c代码frameworks/base/services/core/jnicom_android_server_DemoService:#define LOG_TAG "DemoS...

2019-08-09 15:26:16 308

原创 Android从驱动到应用(4)_硬件抽象层的加载及权限问题

前面已经编写了硬件抽象层的接口,并已经在out/target/product/generic/system/lib/hw目录下看到demo.default.so文件那这个文件是如何进行加载的呢,本文参考罗升阳的《Android系统源代码情景分析 [罗升阳著]》平台:MTK,安卓8.0Android系统中的硬件抽象层模块是由系统统一加载的,当需要加载这些模块时,只要指定它们的id值就可以了,加...

2019-08-08 15:24:06 334

原创 Android从驱动到应用(3)_添加HAl层

前面我们已经添加了驱动层的代码,接下来添加下HAL层的代码。HAl层目录结构:hardware----libhardware/include/hardware/demo.h----libhardware/modules/demo|—demo.cpp|—Android.mkdemo.h: 按照android对HAL层规范的要求,分别定义模块ID、模块结构体以及硬件接口结构体.#ifn...

2019-08-07 21:10:54 661

原创 Android从驱动到应用(2)_添加驱动

上节简单介绍了如何实现一个简单的应用程序,为了更好的理解底层到上层的实现机制,先从第一个驱动开始。平台: Android o go + kernel 3.18 + MTKandroid/kernel-3.18/drivers/----demo----demo.c----demo.h----Kconfig----Makefiledemo.c实现一个典型的字符设备驱动,及proc节点,...

2019-08-07 15:53:57 477

原创 Android从驱动到应用(1)_开发第一个android应用程序

参考老罗的Android系统源代码情景分析,准备系统学习下安卓,好记性不如烂笔头,这里针对学习过程做个总结。由于涉及知识面比较广,同时会同步整理下linux内核相关的知识点,参考的内核书籍和网站列举如下:老罗的博客Linux内核源代码情景分析.(pdf)Linux Device Drivers.(纸质书)安卓应用官方文档Google Android SDK开发范例大全.(pdf)开始...

2019-08-06 20:36:48 364

转载 【转】嵌入式工程师C语言面试常见的0x10个问题

1、用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL要点:①#define语法的基本知识(例如:不能以分号结束、括号的使用,等等)②懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。③意识到这个...

2019-08-06 10:17:55 318 1

原创 【MTK驱动模块_5】battery2--代码架构和流程

power的代码如下:不同的内核代码和cpu架构位置会稍微有点差异,项目上暂时接触较多的是MT6580平台,使用的GM1.0电量的算法。主要跑的各个文件的作用battery_common.c ----对battery的device和driver进行platform平台总线注册、匹配,充电控制主线程battery_meter.c ---- SW FG和HW FG 算法linear_cha...

2019-08-02 17:16:25 1634

原创 【MTK驱动模块_4】battery--硬件原理介绍

battery作为手机的供电系统,提供至关重要的作用,关系手机续航,性能的稳定。本节先从batter的硬件原理开始介绍。battery的内部结构:电池内部结构:B+,B-,分别接锂电芯的正负极,一个封装好的电池留给外部的接口共计4个,分别P+,P-,NTC,ID;下面分别介绍:P+:电池正极p-:电池负极NTC引脚:用来测试电池温度的,NTC电阻集成在电池中,目前我们一般做的电池的规格里面...

2019-08-01 20:50:04 2066

转载 【转】dmesg用法总结

1.dmesg介绍在dmesg里我们可以查看到开机信息,printk产生的信息等。若研究内核代码,在代码中插入printk函数,然后通过dmesg观察是一个很好地方法。2.dmesg输出含义dmesg 输出的数字含义是什么,纠结了一会儿,下面给出解释终端输入dmesg,可以看到每行最开始显示的是一个综括号,里面的数字为timestamp,时间戳,该时间指示的系统从开机到现在的运行时间,单位...

2019-08-01 16:07:33 828

原创 常见adb调试命令

介绍adb工具即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。了解一些常见的adb命令很有必要,安装就不详细介绍了,直接看调试lcm调试:1、录制视频、截图adb shell screenrecord /sdcard/demo.mp4adb shell screencap -p /sdcard/scree...

2019-08-01 15:25:28 893

原创 【MTK驱动模块_3】lcm--代码流程及调试

LK阶段:project\vendor\mediatek\proprietary\bootable\bootloader\lk\kernel\main.ckmain();--thread_t *thread_bs2 = thread_create("bootstrap2", &bootstrap2, NULL,DEFAULT_PRIORITY, DEFAULT_STACK_SIZ...

2019-07-30 11:51:38 1889

原创 【MTK驱动模块_2】camera的调试总结2--代码流程及移植步骤

1、先梳理下camera的驱动架构,如下是驱动展开后的代码目录简单介绍下几个比较重要的文件:inc->kd_imgsensor.h -----定义sensor id 和sensor namesrc->mt6580->camera_hw->kd_camera_hw.c -----配置camera的上电时序src->mt6580->kd_sensorlis...

2019-07-29 18:28:45 4521

原创 【MTK驱动模块_1】camera的调试总结1--原理

关于camera的调试总结主要从原理知识,调试流程及代码流程,调试碰到的问题总结3个方面讲解。camera在手机驱动调试中占了大头,相对比较复杂。主要是他涉及到的原理、代码比较多,名词也比较多。首先咱们先从摄像头的原理开始。可以从MTK官网或普通网站搜索了解即可,我在这结合项目来做个简单的总结。1、下图是camera模组的基本结构。2、CCM的工作原理:物体通过镜头(lens)聚集的光,...

2019-07-29 17:15:23 2405

原创 写在开头

养成纪录的好习惯,一是方便自己回忆总结,也方便他人查阅。人生只有一次,有太多的东西值得纪录了,除了工作经验,还有人生轨迹,生活态度,都应该值得纪录下来。这里感谢csdn给了一个这样好的平台,我希望自己能保持纪录的习惯,摆脱自己的拖延,做个自律的人。来送自己一句话:If you can’t fly, then run; if you can’t run, then walk; if ...

2019-07-27 23:41:53 157

空空如也

空空如也

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

TA关注的人

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