自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 POE受电设备(PD)电路工作原理

硬件设计:POE--POE受电设备(PD)电路工作原理参考资料:解决POE PD设计挑战的有效的解决方案POE电源模块的介绍特性和芯片的详细资料概述如何应对PoE受电设备设计挑战以太网供电中受电设备的芯片设计与研究以太网供电检测和分级接口电路设计  PD(PowerDevice,受电端设备)是POE系统中的客户端设备,如IP电话、网络安全摄像机、AP及掌上电脑等许多其他以太网设备。根据POE供电工作流程(参考:POE基础),PD端应该存在一个用于被检测的签名电路和PD功耗分类..

2021-04-30 11:26:40 14648

原创 以太网接口及POE设计

PoE标准 Power Over Ethernet 是有源以太网供电的简称通过Cat-5电缆供电在IEEE 802.3af以太网供电标准中进行了定义。PoE标准以前限制在几瓦以内,但更新的PoE技术可实现更高的功率。例如,PoE+允许每端口功率高达25 W,而PoE++(四 对以太网供电系统)通过使用现有电缆的所有电线允许70 W到100 W的功率。与此PoE标准并行的是ADI公司定义的专有标准 LTPoE++™,该标准定义高达90W的受电设备(PD)功率规范(请参见表1)。表1. ADI...

2021-04-29 20:18:26 10665

转载 MTK 平台Camera 驱动架构

记录下 Mtk的Hal3架构笔记,正在进行学习,后续仍会更新一.MtkCam3的代码结构及学习资料mtk online里搜Camera 可以搜到很全面的Mtk Hal3的学习文档,Mtk整理的文档很棒,简单到位!https://online.mediatek.com/QuickStart/2a17666a-9d46-4686-9222-610ec0f087cc下述的代码结构只是列出了mtk平台的camera路径,Android Camera相关路径并未记录APPMTK Cameravend

2021-04-23 17:27:45 1447 1

转载 MTK 平台Camera 驱动架构

android 将系统大致分为应用层、库文件(c/c++ java lib)和硬件抽象层、Linux 内核四层。在底层的内核空间,Camera 的driver 将其驱动起来以后,将硬件驱动的接口交给硬件抽象层,android 上层的Camera 应用程序在android 实时系统中的虚拟机中,加载android 留给Camera 公用的一些库文件,调用硬件抽象层的接口来控制Camera硬件来实现功能。当然,如果是Raw 模式的Camera ,还需要在硬件抽象层调用一些参数来控制Camera ...

2021-04-23 15:40:53 1542

转载 mtk驱动camera的调试总结1--原理

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

2021-04-22 14:04:05 2658

转载 Camera的调试总结2--代码流程及移植步骤

1、先梳理下camera的驱动架构,如下是驱动展开后的代码目录简单介绍下几个比较重要的文件:inc->kd_imgsensor.h -----定义sensor id 和sensor namesrc->mt6580->camera_hw->kd_camera_hw.c -----配置camera的上电时序src->mt6580->kd_sensorlist.h------结合对应的sensor id和名字绑定对应的初始化函数src->mt6580-&g

2021-04-22 13:58:19 1966

转载 Android源码编译选项eng、user、userdebug的区别

Android源码编译选项eng、user、userdebug的区别1、各选项简要说明eng:debug版本user:release版本userDebug版本:部分debug版本2、详细介绍Android源码编译选项eng、user、userdebug是由Android.mk文件中的LOCAL_MODULE_TAGS配置项来决定的。其一般形式如下:? 1 LOCAL_MODULE_TAGS := user eng optional...

2021-04-22 09:03:11 2274

转载 MTK平台GPIO的使用与调试

我们在LINUX外设驱动的开发与调试中,GPIO的正确使用是一门必修课,本文主要描述MTK平台GPIO的使用和调试方法。一,DWS的配置打开dws文件的工具 DrvGen.exe 有新和旧两种,不同平台使用的工具可能不一样,新平台大多使用新的 DrvGen.exe,两种工具只是打开的方式和界面不一样,其实GPIO的配置项两个都大同小异,本文以MT6739平台为例,使用新的DrvGen.exe 工具。路径在:alps\vendor\mediatek\proprietary\scripts\dct下.

2021-04-21 17:46:50 2651

转载 MTK LCM移植流程

Android系统开机启动过程及驱动概述:MTK平台的显示驱动分两块,一块在LK代码里面,一块在kernel代码里面;lk的lcm驱动路径在:vendor\mediatek\proprietary\bootable\bootloader\lk\dev\lcm\xxxx_hd720_dsi_vdokernel的lcm驱动路径在:kernel-x.x\drivers\misc\mediatek\lcm\xxxx_hd720_dsi_vdolcm驱动中,最主要的是了解该结构体中的成员函数运行过程:

2021-04-20 20:46:31 8979

转载 MTK 平台CTP bring up

MTK 平台CTP bring up记录MTK平台 CTP bring up的过程一、TP的基础原理二、bring up步骤1.找到代码目录;2.需要修改的地方一般为makefile,dts以及config遇到的问题:记录MTK平台 CTP bring up的过程本次 TP bring up的平台是基于MT6761的8766工程,TP的ic为BOE的FT3427,和 国显的GT9293。一、TP的基础原理1.现在主流的屏幕技术都为电容屏,所谓的CTP;CTP从制造工艺也分为几个版本;

2021-04-20 20:37:31 1833

转载 MTK CTP移植流程android 8.1

TP启动过程及驱动概述:Mtk Touch driver:驱动包括Mtkplatform 虚拟平台设备驱动、Module touch IC驱动、Inputsubsystem。Mtk platform:设备驱动是mtk为了兼容多个touch IC驱动而设计出来的虚拟驱动,它会去遍历每一个touch IC驱动,直到其中一个初始化成功。Linux input_subsystem:是linux的输入子系统,我们的输入设备都要通过这个子系统进行上报事件以及设置事件的类型。static struct tpd

2021-04-20 20:20:52 480 2

转载 Android 系统架构图

Android 操作系统架构开篇: http://gityuan.com/android/ https://cloud.tencent.com/developer/article/1429122Android架构图(五层框架):https://www.cnblogs.com/pengdonglin137/p/3858254.html官方系统架构图:https://developer.android.google.cn/guide/platform/Android S...

2021-04-20 17:30:54 2235

转载 Android 平台架构

平台架构Android 是一种基于 Linux 的开放源代码软件栈,为各类设备和机型而创建。下图所示为 Android 平台的主要组件。图 1.Android 软件堆栈。Linux 内核Android 平台的基础是 Linux 内核。例如,Android Runtime (ART)依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。硬件抽象层 (HAL)...

2021-04-20 15:13:47 142

原创 NDK ndk build 和 cmake构建方式

NDK(Native Development Kit): 原生开发工具包,即帮助开发原生代码的一系列工具,包括但不限于编译工具、一些公共库、开发IDE等。JNI(Java Native Interface):Java本地接口。是为了方便Java调用c、c++等本地代码所封装的一层接口 JAVA------JNI-----C/C++在Android Studio 2.2 之后,工具中增加了 CMake 的支持,所以在 Android Studio 2.2 之后有2种选择来编译...

2021-04-20 14:58:49 358

转载 物联网常见通信协议RFID、NFC、Bluetooth、ZigBee

物联网常见通信协议RFID、NFC、Bluetooth、ZigBee等梳理1 概述在上一篇文章《物联网常见通信协议与通讯协议梳理【上】-通讯协议》中,对物联网常用通信协议和通讯协议作了区分,并对通讯协议进行了分享;本文将对常用的通信协议进行剖析,重点面向市场上使用率较高的,且又不是诸如TCP/IP之类老生常谈的。2 近距离通信协议2.1 RFIDRFID的空中接口通信协议规范基本决定了RFID的工作类型,RFID读写器和相应类型RFID标签之间的通讯规则,包括:频率、调制...

2021-04-20 14:24:57 7692 1

转载 蓝牙协议简介

一、Bluetooth(一)、蓝牙分类从左到右依次为:经典蓝牙(BR/EDR)、双模蓝牙(同时支持BR/EDR/LE)和低功耗蓝牙(BLE)。其中经典蓝牙和低功耗蓝牙互不兼容。其实看结构也可以看出双模蓝牙是经典蓝牙和低功耗蓝牙的合集。(二)、蓝牙原理及应用1、工作方式蓝牙技术 拓扑结构基础率BR(Basic Rate)/增强数据率EDR(Enhanced Data Rate) 1:1低耗能LE(Low Energy) 1:1 1:n  n:n2、应用涵盖的领域...

2021-04-20 14:16:54 24434

原创 蓝牙架构

架构1:host+controller双芯片标准架构这个标准把蓝牙协议栈分成host和controller两部分,其中host跑在AP上,controller跑在蓝牙模块上,两者之间通过HCI协议进行通信,AP芯片厂商一般会直接采用开源的Bluez来实现Host功能,而Controller部分大部分由蓝牙厂商自己来实现。另外,目前比较火的Zephyr开源蓝牙协议栈也采用了这种架构。应用在手机中比较多。架构2:单芯片整体方案手机周边蓝牙设备是蓝牙另外一个非常重要的应用场合,通常蓝牙周边设.

2021-04-20 11:56:26 1465

转载 什么是.so文件

so文件是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据linux下何谓.so文件:用过windows的同学应该都知道 .dll文件吧, 这二者有什么共通之处呢,其实 .so文件就跟.dll文件差不多 一般来说.so文件就是常说的动态链接库, 都是C或C++编译出来的。与Java比较就是:它通常是用的Class文件(字节码) Linux下的.so文件时不能直接运行的,一般来讲,.so文件称为共享库那么.so文件是怎么用的呢?for example:(1) 动态库的编译.

2021-04-20 10:26:50 1079

转载 Linux 字符设备驱动结构(四)—— file_operations 结构体知识解析

前面在Linux 字符设备驱动开发基础 (三)—— 字符设备驱动结构(中),我们已经介绍了两种重要的数据结构struct inode{...}与 struct file{...} ,下面来介绍另一个比较重要数据结构struct _file_operationsstruct _file_operations在Fs.h这个文件里面被定义的,如下所示:struct file_operations { struct module *owner;//拥有该结构的模块的指针,一般为THI...

2021-04-19 17:53:20 265

转载 Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析

前面我们学习了字符设备结构体cdevLinux 字符设备驱动开发 (一)—— 字符设备驱动结构(上)下面继续学习字符设备另外几个重要的数据结构。先看下面这张图,这是Linux 中虚拟文件系统、一般的设备文件与设备驱动程序值间的函数调用关系;上面这张图展现了一个应用程序调用字符设备驱动的过程, 在设备驱动程序的设计中,一般而言,会关心 file 和 inode 这两个结构体用户空间使用 open() 函数打开一个字符设备 fd = open(...

2021-04-19 17:48:47 251

转载 Android系统架构

一、引言本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂,需要具备全面的技术栈,但整体架构设计清晰。Android底层内核空间以Linux Kernel作为基石,上层用户空间由Native系统库、虚拟机运行环境、框架层组成,通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用C++和Java代码编写,通过JNI技术打通用

2021-04-19 16:26:13 367

原创 自动驾驶L0-L5

SAE就是Society of Automotive Engineers,也就是美国机动车工程师学会,SAE将自动驾驶等级从L0至L5共分为6个等级,其自动驾驶技术水平也从0级至5级递增。目前市场上量产车辆搭载最多的为L2级和L3级自动驾驶,目前还没有车企实现L4级量产车辆。L0级,人工驾驶,根据SAE的定义,L0级别的自动驾驶仅能提供警告和瞬时辅助。值得注意的是,主动刹车、盲点监测、车道偏离预警和车身稳定系统都属于L0级别的自动驾驶。L1级,辅助驾驶,能够帮助驾驶员完成某些驾驶任务,且只.

2021-04-19 15:37:58 388

转载 adb操控MTKLogger

以下为结合相关资料整理而来。如何通过adb command去控制MTKLogger 开关DebugLoggerUI (Q0之后更名),设定log路径等等。Q0版本之前:1. 开启/关闭adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name start/stop --ei cmd_target 23(start表示开启,stop表示关闭;23可改为1/2/4/16,分别代表MobileLog/ModemLog/

2021-04-17 17:13:17 2071

转载 MTK平台安卓Q 10.0 camera驱动移植——sensor

平台MTK676X 安卓:Q/10.01. 添加驱动程序文件将模组厂商提供的驱动程序及调试参数文件拷贝到以下目录.厂商可能会自行客制化,但都是kernel和vendor两处下面,不一定和下面列出的一模一样。两个文件夹需要的文件一般提供的时候就会分开,分别拷入就好。vendor/mediatek/proprietary/custom/kxxx/ hal/imgsensor/gc8034_kxxx_mipi_raw/kernel-4.9 / drivers/misc/mediatek/imgse

2021-04-17 16:57:22 1244

原创 人脸识别摄像头与普通摄像头的区别

人脸识别摄像头与普通摄像头的区别任何带有摄像头的摄像设备基本上都可以实现采集人脸图像功能,它们之间的差异主要体现在人脸成像质量、环境光线影响和实时人脸识别等三个方面。1.人脸图像质量现在任何一台带有摄像头的摄像设备例如手机、电脑、平板、相机等基本上都可以实现拍照和录制视频的功能,这些常见的摄像设备与人脸识别摄像机拍摄出来的照片最大的区别就在于成像质量的高低。普通摄像头通常情况下拍摄的图片像素不是很高并且照片清晰度也不够,特别是在远距离拍摄时在放大图片后就会变得特别模糊;而人脸识别摄像机因其聚焦能

2021-04-16 20:23:26 15506

转载 Linux中__set_bit函数分析

/*** __set_bit - 在内存中设置一位* @nr: 要设置的那一位* @addr: 开始计数的地址** 与set_bit()不同,此函数是非原子的,可以重新排序。如果同时调用同一个内存区域,则可能只有一个操作成功。*/static inline void __set_bit(int nr, volatile unsigned long *addr){ unsigned long mask = BIT_MASK(nr); unsigned long ...

2021-04-16 11:37:47 3522

转载 andriod ramdisk、boot.img、recovery.img之间的关系

一、ramdisk介绍 二、ramdisk.img介绍 三、ramdisk、boot.img、recovery.img之间的关系正文回到顶部一、ramdisk介绍ramdisk通过直面意思就大概能理解意思,ram disk虚拟内存盘,将ram模拟成硬盘来使用的文件系统。对于传统的磁盘文件系统来说,这样做的好处是可以极大提高文件访问速度;但由于是ram,所以 在掉电后,这部分内容不能保存。ramdisk文件系统是在系统上电后直接从磁盘一次性加载到内存,在整个运行期间都不会有写回操作,所.

2021-04-16 11:27:45 2077

转载 Android Recovery升级原理

摘要 1. Recovery相关概念 2. Android系统的启动模式 2.1 Android 各个分区介绍 2.2 Android的启动模式 2.3 如何进入Recovery模式 3. Recovery升级原理 3.1 应用层升级流程 3.2 OTA升级包的目录结构 3.3 Recovery模式下的OTA升级流程 4. Bootloader、BCB、Recovery与Main System之间的交互正文摘要Recovery模式指的是一种可以对...

2021-04-16 11:17:46 641 1

转载 JAVA虚拟机、Dalvik虚拟机和ART虚拟机

从Android5.0开始废弃了Dalvik,全面推行ART。Dalvik与ART的区别(1)在Dalvik下,应用每次运行都需要通过即时编译器(JIT)将字节码转换为机器码,即每次都要编译加运行,这虽然会使安装过程比较快,但是会拖慢应用以后每次启动的效率。而在ART环境中,应用在第一次安装的时候,字节码就会预编译(AOT)成机器码,这样的话,虽然设备和应用的首次启动(安装慢了)会变慢,但是以后每次启动执行的时候,都可以直接运行,因此运行效率会提高。(2)ART占用空间比Dalvik大(字节码.

2021-04-16 10:44:47 580

转载 Android启动过程深入解析

当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Linux内核? 桌面系统linux内核与Android系统linux内核有什么区别? 什么是引导装载程序? 什么是Zygote? 什么是X86以及ARM linux? 什么是init.rc? 什么是系统服务?当我们想到Android启动过程时,脑海中总是冒出很多疑问。本文将介绍Android的启动过程,希望能帮助你找到上面这些问题的答案。Android是一个基于Linux的开源操作系统。x8

2021-04-15 16:06:01 1663

转载 Android P (9.0) 之Init进程源码分析

众所周知,init进程是Android系统的第一个用户进程,Android启动流程大致如下:init进程主要提供以下几个功能:挂载文件系统、生成部分设备节点、创建目录属性服务处理子进程终止分析和运行init.rc(等等rc文件)init进程代码路径为 system/core/init/init.cpp。今天我们主要是分析Android P的init的代码,其实各个版本的代码稍有不同,但是万变不离其宗。init进程的启动调试可以查看本文。init进程源码分析init.cpp文...

2021-04-15 14:34:13 504

转载 Android P (9.0) 之Zygote进程源码分析

init进程是用户空间的第一个进程,而zygote进程则是第一个java进程。zygote进程是init进程的子进程,init进程通过解析rc文件,运行了zygote进程。zygote是Android系统中一个相当重要的进程,它的主要功能就是执行Android应用程序。在Android系统中运行新的应用,如同卵子受精分裂一样,需要跟Zygote进程(拥有应用程序运行时所需要的各种元素和条件,如:虚拟机等)结合才能执行。Zygote进程zygote进程运行时,会初始化Art(或者Dalvik)...

2021-04-15 14:24:48 387

转载 The Android boot process from power on

Since mobile platforms and embedded systems has some differences compared to Desktop systems in how they initially start up and boot. This post will discuss the initial boot stages of an Android phone in some detail. Since we have used theBeagle Boardas ..

2021-04-15 11:27:01 395

原创 Andriod 启动流程

概述:Loader > Kernel > Native > Framework > Application细分:BootRom > Bootloader > Kernel > Init > Zygote > SystemServer > Launcher调用流程: crt0.S > kmain > arch_init > target_init > apps_init > aboot_initKernel初

2021-04-15 10:34:49 85

转载 几种linux内核文件的区别

几种linux内核文件的区别:1、vmlinux编译出来的最原始的内核文件,未压缩。2、zImage是vmlinux经过gzip压缩后的文件。3、bzImagebz表示“bigzImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。4、uImageU-boot专用的映像文件,它是在...

2021-04-14 17:55:51 277

原创 MTK andriod 9.0 基本配置文件

CONFIG_FILE PATH projectconfig ${dirname PRODUCTS}/ProjectConfig.mk kconfig ${LINUX_KERNEL_VERSION}/arch/${TARGET_ARCH}/configs/${MTK_TARGET_PROJECT}_defconfig device.mk device/mediatek/${MTK_TARGET_PROJECT}/...

2021-04-14 11:04:54 545

转载 Android平台开发指导(Android Porting Guide)

本文为Android平台开发人员和Android设备制造商提供了底层开发指导。如果你对Android的上层应用开发很感兴趣,请访问AndroidDevelopersSite。关于这份指导书这份指导书按照逻辑划分为几个部分(见目录)。在一个持续的开发过程中,Android是一个复杂的工程项目,随着版本和API的改变,这份指导书将会不断更新。至使用者对于精通嵌入式Linux的工程师而言,这本书非常有价值。但是,它的重点并不在普通的嵌入式Linux开发,而是更多提供Android平台的特色。..

2021-04-10 14:41:34 918

原创 载波聚合CA与双连接 DC 区别

1)DC ,Dual-connectivity,双连接,就是UE同时与两个基站或者两种无线制式保持连接。CA,carrier aggregation,载波聚合,仅限于同一种无线制式下,大多数时候是同一个基站下的多个载波聚合。2)DC在3GPP R12版本中引入,CA在3GPP R10版本中引入。3)DC在PDCP层分流数据,而CA在MAC层分流数据...

2021-04-08 15:46:32 2927

转载 载波聚合CA

为什么需要载波聚合?一般来说,要提升网速或者容量,有下面几个思路:建更多的基站:这样一来同一个基站下抢资源的人就少了,网速自然就上去了。但缺点是投入太大了,运营商肯定不会做亏本的买卖。提升频谱效率:从2G到5G,有多少专家潜心钻研,一头青丝变华发,就是为了提升效率,在每赫兹的频谱上传更多的数据!可见这项工作是真的很艰难。增加频谱带宽:这是提升容量最简单粗暴的办法了,从2G到5G,单个载波的带宽不断增长,从2G的200K,再到3G的5M,4G的20M,在5G时代甚至达到了100M(Sub6G频

2021-04-08 15:42:17 638

转载 指纹调试 mtk(MT6763)- android8.1

一 指纹调试思路,总纲二 硬件原理图三 如何确认是否移植好finger驱动?a)probe函数调试的初始化是否成功,打印信息确认b)查看设备节点是否生成 /dev/sunwave_fp c)SPI通信是否成功,1)确认pin脚初始化是否正确,是否被占用,cs,clk,rst,miso,mosi,eint等,android8.1对应的gpio路径:cat...

2021-04-02 10:14:16 1602

空空如也

空空如也

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

TA关注的人

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