mtk

mtk平台hw_get_module分析

人盡茶涼 提交于 2020-03-15 17:11:35
google为了保护硬件厂商的信息,在android中添加了一层HAL层。查看HAL的编写方法的过程中,发现整个模块没有一个入口。一般应用程序有main函数,可以让加载器进行加载执行,而对于动态链接库,我们可以对库中导出的任何符号进行调用。 android中的HAL需要上层的函数对其进行加载调用,android的HAL加载器是如何实现对不同的Hardware Module进行通用性的调用的呢? 查看源码的过程中发现android中实现调用HAL是通过hw_get_module实现的。 int hw_get_module(const char *id, const struct hw_module_t **module) { return hw_get_module_by_class(id, NULL, module); } 这是其函数原型,id会指定Hardware的id,这是一个字符串,比如我们比较熟悉的sensor的id是#define SENSORS_HARDWARE_MODULE_ID "sensors",如果找到了对应的hw_module_t结构体,会将其指针放入*module中。看看它的实现。 int hw_get_module_by_class(const char *class_id, const char *inst, const struct hw_module

mtk preloader学习笔记

蹲街弑〆低调 提交于 2020-02-29 22:14:53
1.先看preloader生成过程,mediatek/buid/makemtk.mk文件里 preloader:   ... $(hide) cd $(PRELOADER_WD) && \ (./build.sh $(PROJECT) $(ACTION) $(DEAL_STDOUT) && \ cd $(MKTOPDIR) && \ $(call chkImgSize,$(ACTION),$(PROJECT),$(SCATTER_FILE),$(PRELOADER_IMAGES),$(DEAL_STDOUT),&&) \ $(SHOWRSLT) $$? $(MODULE_LOG) || \ $(SHOWRSLT) $$? $(MODULE_LOG)) ... 执行mediatek/source/preloader/build.sh生成的。 2.在build.sh里有 function build_preloader () {    ... make   ..... } 3.执行mediatek/source/preloader/Makefile文件的make命令。 all: $(ALL) # ELF Generation # $(D_BIN)/$(PL_IMAGE_NAME).elf: $(LD) --gc-sections -Bstatic -T$(MTK_PATH

Camera5 MTK camera驱动框架介绍

前提是你 提交于 2020-02-17 06:43:11
一、概序:   前文已经介绍了camera驱动部分的内容 Camera4 MTK camera驱动结构介绍 ,这里在回顾下之前的框架图, 这篇主要介绍红框部分的内容:        imgsensor起到承上启下的作用,在系统起来时会创建整个camera驱动运行的环境,其中主要的 文件和函数如下框图所示,先设备挂载时会调用注册platform设备platform_driver_register,在匹配成 功后会调用probe函数进行初始相关的设备:        其中camera的三路电压的上电方式可以通过GPIO来控制,也可以通过PMIC(REGULATOR)的方式来 进行控制,在imgsensor_hw中通过不同的pdev信息,调用不同的set函数。涉及的文件路径:   kernel-4.9/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor.c   kernel-4.9/drivers/misc/mediatek/imgsensor/src/common/v1/imgsensor_hw.c   kernel-4.9/drivers/misc/mediatek/imgsensor/src/mt6765/camera_hw/regulator/regulator.c   kernel-4.9/drivers/misc

MTK手机蓝牙测试小结

◇◆丶佛笑我妖孽 提交于 2020-02-13 23:01:01
刚接触 MTK 平台的蓝牙模块时,对其蓝牙菜单、名称等很多方面感到很不合理,或者说很不利于用户的使用,即友好性和易用性比较差。 一、下面是蓝牙菜单目录结构(下图): 从上图中可以看出有很些项对于用户而言,要么难以顾名思义,要么没使用意义。这些菜单主要有: 1. 搜索免持装置 此菜单可以修改为 搜索蓝牙设备 ; 2. 我的装置 此菜单可以修改为, 我的装置列表 ; 3. 认证需求、设置声音路径 两个菜单可以被删除。 4 .文件传输设置 菜单也需要进行菜单调整。 以上菜单中,目前 MTK 平台上存在的蓝牙相关问题项有: 1) 设置声音路径 : 设置声音路径留在手机时,声音也会转移至蓝牙耳机端(此菜单无效, 828/900 都有存在此问题) 2) [ 认证需求 ] 菜单 目前手机认证需求菜单打开时,另一台蓝牙手机和本机配对时,两台手机同时显示输入 PIN 码框,如果关闭认证需求,另一台手机发起和本机配对时,对方输入 PIN 码确认后,本机才显示输入 PIN 码框(目前 828/900 手机现象如此,但实际此功能应该不是这样的!) 3 )使用蓝牙立体声耳机收听音乐时,将配对手机音乐播放器中的蓝牙立体声开关打开,连接蓝牙耳机后,播放音乐时,按下音乐播放界面的开始 / 暂停键,反应非常缓慢( 1min 左右,有的平台无此问题!) 4 ) 锁键盘情况下,配对蓝牙手机发起和本机连接

WIN8 MTK驱动不能安装解决办法

坚强是说给别人听的谎言 提交于 2020-02-11 05:25:51
1 、把鼠标移动到桌面最右下角的位置会出来一个侧边栏,按那个齿轮就是“设置”,会出来个菜单,选择最下边的“更多电脑设置” 注:也可以按快捷键“WIN+I” 2 、选择“常规”→“ 高级启动”→”立即重启“ 注:1-2步也可在按下“重启”时同时按下“Shift”健,直接进入4图所示界面(这是Win8的一个快捷操作方式)。 3、在启动的界面选择“疑难解答”→”高级选项“→ “Windows启动设置”→“ 重启”(电脑不会真正的重启) 4、按照提示选择“ 禁用驱动程序强制签名”并重启 启动完成后, 直接安装驱动 ,选择“ 始终信任驱动程序 ” ,等待将会安装好Android驱动便可正常刷机!! 来源: https://www.cnblogs.com/mrcln/p/3601571.html

MTK手机功耗之唤醒源详解

不羁岁月 提交于 2020-01-31 11:59:51
一、手机功耗问题浅析博文 二、Sleep 、suspend 三、SPM (System Power Manager) 四、Deep idle 五、SODI (screen on deep idle) 六、systrace/ftrace 七、wireshark 八、layerdump 九、如何确定阻止进入suspend的原因 十、如何分析wakelock(wakeup source)持锁问题 十一、如何看SPM的状态是否正确 十二、如何查找待机唤醒源 十三、如何找到阻止进入deep idle / SODI的元凶 一、手机功耗问题浅析博文 手机功耗问题直接影响到手机的待机时长,因此,解决功耗问题对于智能机十分必要。 之前有写过一个功耗浅析的文章,可以先参考下: 手机功耗问题浅析博文 二、Sleep 、suspend 这里的suspend确切的说是MCU(ARM )的 suspend,也就是cpu进入Wait for interrupt 状态(WFI);因为对整个系统来说,CPU进WFI是整个系统睡眠的先决条件,我们debug也是从CPU是否进入WFI开始,从Linux的角度来说,CPU进入suspend就是SW完全不跑了,停在suspend workqueue里面。 CPU进入WFI 步骤 : 1 用户空间锁全部释放,2 kernel 空间锁全部释放,3 CPU中所有任务进入挂起队列

.gitignore详解

陌路散爱 提交于 2020-01-31 06:16:57
今天讲讲Git中非常重要的一个文件——.gitignore。 首先要强调一点,这个文件的完整文件名就是“.gitignore”,注意最前面有个“.”。这样没有扩展名的文件在Windows下不太好创建,这里给出win7的创建方法: 创建一个文件,文件名为:“.gitignore.”,注意前后都有一个点。保存之后系统会自动重命名为“.gitignore”。 一般来说每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。 实际项目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密码的配置文件等等。 这个文件的内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。 下面我们看看常用的规则: /mtk/ 过滤整个文件夹 *.zip 过滤所有.zip文件 /mtk/do.c 过滤某个具体文件 很简单吧,被过滤掉的文件就不会出现在你的GitHub库中了,当然本地库中还有,只是push的时候不会上传。 需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中: !*.zip !/mtk/one.txt 唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。 为什么要有两种规则呢?想象一个场景:我们只需要管理/mtk/目录中的one.txt文件

MTK平台手机刷机工具分享

Deadly 提交于 2020-01-09 14:44:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这是一款专门为MTK平台量身打造的刷机工具—— 下载助手_V2.2.4(Mini_AD_MTK)。 软件主界面如下图所示 : 简单介绍一下这个软件: 下载助手_V2.2.4(Mini_AD_MTK )从属于 下载助手_V2.2.4系列烧录工具,该系列工具还包含有Whole_AD、 Mini_AD_Coolpad、 Mini_AD_EDL、 Mini_AD_Fastboot等 适用于 特定 范围的烧录软件。其中 Mini_AD_MTK是专门为MTK平台手机量身打造的便捷、安全、高速的烧录工具。 大家可以在这里下载 Mini_AD_MTK。 下载地址: http://www.morecomtech.com/community/tool/dload_V2.2.4_Mini_AD_MTK.php 在软件主界面的“帮助教程” 中 详细的使用说明 。 相信下载助手_V2.2.4会带给你愉悦的刷机体验。 ****************************************************************************************** 此外,把 下载助手系列的下载地址也分享给大家,有需要的朋友可在去下载: http://www.morecomtech.com/tool

SWT 重启案例分析(三)

a 夏天 提交于 2019-12-26 09:53:11
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、 高温触发 Kernel Exception 重启问题 二、解决方案 三、提高电池温度方案 一、 高温触发 Kernel Exception 重启问题 手机 电池温度 默认 60 度以上高温会触发手机安全机制,让手机管家或者重启。 由温度异常导致手机重启的部分 Log 如下: 二、解决方案 此问题 需要驱动同事修改底层 battery.c 文件中的一个地址,不让其写为 dead ,就不会重启。或者提高电池温度参数。 三、提高电池温度方案 提高电池温度的方案如下: 1.修改 mtk_battery_table.h /alps/kernel-4.4/drivers/misc/mediatek/include/mt-plat/mt6739/include/mach/mtk_battery_table.h * ============================================================ */ +//#define SPROCOMM_NTC //wang add +#ifdef SPROCOMM_NTC +#define NTC_COMP

MTK模拟器调试指南

梦想与她 提交于 2019-12-03 16:09:35
前篇文章介绍了手机调试的TRACE技巧,MTK手机调试是比较简单的,除了打TRACE,找ASSERT,分析DUMP外,剩下的就是经验了,有经验的人看到现象就能猜到问题出在什么地方,简单看一下TRACE只是为了确认自己的猜测.初涉此道的朋友往往需要时间,慢慢积累经验.要达到熟练,就需要有空的时候多读多研究代码.熟练的掌握了代码,解决问题就会熟能生巧. MTK的模拟器调试说没技巧也是对的,说有技巧也不错.因为模拟器的技术与其说是MTK经验,不如说是VC经验. 由于模拟器能在没有样机的情况做大量的UI方面的开发,同时模拟器具有快捷,所见即所改等优点,因此,受到很多开发老手的青睐.熟练掌握模拟器使用技巧,对于提高工作效率,节省资源具有很积极的意义. 工欲善其事,必先利其器.欲了解模拟器调试,就要先了解VC使用.VC调试过程中经常使用的快捷键如下: vc++断点的使用:按F9(设置断点),F5调试,F10单步调试,shift+F5退出调试F10单语句执行,F11单指令执行,Ctrl+F10执行至光标处;F9按行设置/取消断点, Alt+F9可按行,按数据或按消息设置断点;调试时,按Alt+3打开跟踪窗口,Alt+4打开变量窗口,Alt+5打开寄存器窗口,Alt+6打开内存窗口,Alt+7打开堆栈窗口,Alt+8打开汇编指令窗口; 1.只要你有源代码,拥有一个模拟器是一件很容易的事.当然