MTK8.0 9.0 驱动部分升级解析

MTK Camera技术栈深度解析:从驱动移植到图像质量调试实战 在移动设备开发中,Camera子系统是连接硬件传感器与上层应用的核心模块,其稳定性和性能直接影响用户体验。其技术原理基于分层架构,从应用层通过标准API发起请求,经由框架层调度,最终由硬件抽象层(HAL)和内核驱动与图像传感器、ISP等硬件交互。这一过程实现了对自动对焦、自动曝光、自动白平衡等3A算法的集成与图像信号处理。其技术价值在于为拍照、录像、视频通话等核心场景提供了稳定高效的图像采集能力,并支撑了双摄、AI场景识别等高级功能。在联发科(MTK)平台上,Camera技术栈进行了深度定制,涉及Senso 阅读详情

1、涉及文件

2、流程解析

3、问题所在

4、问题优化

 

1、编译涉及主要文件:

2、流程解析

MTK驱动部分分区的升级在编译阶段只由两个文件执行并完成

build/make/core/Makefile  

在make otapackage 生成中间包时执行mt_ota_preprocess.py文件

mt_ota_preprocess.py
1、生成ota_update_list.txt文件
2、将out下在list中的文件拷贝到obj/PACKAGING/
target_files_intermediates/full_k63v2_64_bsp-target_files-1536389495/IMAGES/
以用作整包和差分包生成时使用

mt_ota_preprocess.py具体流程,首先main方法,最主要的两个步骤
执行generate_updatelist 生成update_list列表,注意传入的参数是scatter_file,也就是我们刷机用的分区表

执行copy_files方法将img文件拷贝到对应的路径,而拷贝的规则是这些文件必须是在partition{} 这个集合中

流程解析generate_updatelist方法

先介绍几个文件中的参数
//包含在列表中的
upgrade_list_include = ["tee1","tee2"]
//不包含在列表中的,这部分是会进行差分的文件
upgrade_list_exclude = ["boot","system","android","recovery","bootimg"]
//特殊文件 preloader,只有preloader 一个挂载点
upgrade_list_specific_sequence = {"preloader", "preloader2"}
//分区中存在两个,在生成差分包的时候会在update-scrypt中进行switch选择升级
upgrade_list_mount_map = {"lk" : "bootloader", "lk2" : "bootloader2", "uboot" : "bootloader", "uboot
//全局变量,partition集合
partition_map = {}

def generate_updatelist(scatter_file, update_list):  大致方法

1、从scatter_file中检索出需要的字段,也就是分区表中的参数,这部分的输出可以在make otapackage的 编译log中查询到

2、通过字段进行判断,是否会走到addPartMap方法中,也就是添加到partition_map集合中,

3、根据partition_map集合生成update_list列表

 走到这里我们可以看出来,首先是在分区表中检索到了,该文件需要升级,会放在list中,然后才会   根据生成的集合进行了拷贝,所以如果有文件没有加在list中,问题的关键是在分区表和判断条件中

3、问题所在

编译软件后发现,lk,preloder都在list中,但是logo并没有

按上述分析,如果有驱动文件,会走进for循环,按分区表和判断条件,加入list 分区表

文件partition_table_MT6763.xls     MT6763_Android_scatter.txt 

可以看出logo 的OTA_Update 是 N,最后体现在scatter文件中is_upgradable: false
所以在之前的判断条件中if is_update.group(1) == "true" 判断不做升级
这样看似很合理,但是重新再看之前的判断条件
判断is_update 是不是为空,如果为空,走到else方法,我们把logo加到 upgrade_list_include 集合中即可,但是测试后发现并未生效,因为else的打印没有出现,这是为什么呢
if is_update is not None:
if is_update.group(1) == "true" and not part_name.lower() in upgrade_list_exclude and file_name != "NONE":
if fs_type != "EXT4_IMG" and fs_type != "UBI_IMG":
print("===========not in upgrade_list_exclude:==========")
#print("is_update" + str(is_update))
print("part_name=" + part_name)
print("file_name=" + file_name)
print("storage_type=" + storage_type)
print("fs_type=" + fs_type)
#print("===========not in upgrade_list_exclude:==========")
addPartMap(partition_map, part_name, file_name, storage_type)
else:
print "[OTA Preprocess] %s is an %s, can not be upgraded by this method" % (part_name, fs_type)
else:
if part_name.lower() in upgrade_list_include and file_name != "NONE":
print("===========in upgrade_list_include:==========")
先看下is_update的取值
is_update = re.search(r'is_upgradable: (.*?)\n', item) 这样按正则着表达式取到的其实并不是 true 或者 false ,相当于取到的是 is_upgradable: false,这个字段不可能为空
所以无论我们怎么修改都不会走到else方法中,而isupdate.group(1)才是取到的才是Boolean值

4、问题优化

按上述分析我们修改方法一如下:

isupdate.group(1) 以该值作为判断条件,也就是 is_upgradable 的取值
分区表中OTA_Update 是 Y,直接进入if ,OTA_Update 为N进入else
我们把logo放在upgrade_list_include,upgrade_list_include = ["logo"] 这样验证问题解决
编译后验证,logo加入列表,IMAGES/ 也可以打包,整包中也可以加入升级的脚本
ui_print("start to update general image");
package_extract_file("logo.bin", "/dev/block/platform/bootdevice/by-name/logo");

修改方法二,如果我们想更为严谨一些,

修改方法三,如果我们像更为简单一些,

在update-scrypt 脚本中加入 package_extract_file("logo.bin", "/dev/block/platform/bootdevice/by-name/logo");

差分包中放入logo.bin文件,

并对差分包进行重新签名 

java -Djava.library.path=out/host/linux-x86/lib64 -jar  ./out/host/linux-x86/framework/signapk.jar  -w build/target/product/security/testkey.x509.pem  build/target/product/security/testkey.pk8  update.zip update_sign.zip 

注意: /dev/block/platform/bootdevice/by-name/logo 这一句来自于fstb文件 out/target/product/k63v2_64_bsp/recovery/root/etc/recovery.fstab 或者FOTA包中 ota_target_file.zip//RECOVERY/RAMDISK/etc/recovery.fstab

机械革命无界15X MT7922在Debian12下蓝牙驱动问题的深度解析与替代方案 本文深度解析了机械革命无界15X笔记本在Debian12系统下MT7922蓝牙芯片无法使用的根本原因:系统内核版本过旧,缺乏对新硬件的驱动支持。文章提供了两种核心解决方案:一是升级系统至Debian13测试版或Ubuntu 24.04 LTS以获取新内核;二是在Debian12上通过官方backports仓库原地升级内核。同时,文章探讨了MTK芯片与Linux开源生态的兼容性现状,并提供了实用的命令行故障排查技巧。 阅读详情

相关推荐

MTK芯片玩机进阶:从分区表解析到自定义线刷包制作全攻略

本文详细解析MTK芯片分区表结构,提供从分区表提取到自定义线刷包制作的全流程指南。涵盖MTK芯片分区表解析、线刷包引导文件改造、分区读写操作及常见问题排查,帮助开发者掌握MTK设备刷机核心技术,实现系统升级与定制化需求。

carrot的博客 315

MTK修改动态切换开机logo,恢复出厂设置不还原

MTK修改动态切换开机logo,恢复出厂设置不还原

xuyewen288的博客 2723

告别手机外放‘破音’:深入拆解SmartPA技术如何拯救MTK平台的音频体验

本文深入解析了SmartPA技术如何解决MTK平台手机外放音频的常见问题,如破音和低音不足。通过Boost升压电路、Triple-Level AGC算法和喇叭状态反馈系统,SmartPA显著提升了音频质量和输出功率。文章还探讨了硬件改造的可行性和软件适配步骤,为开发者和用户提供了实用指南。

weixin_30730053的博客 457

MTK APP实现动态修改logo和开机动画

MTK APP实现动态修改logo和开机动画

xuyewen288的博客 2094

MTK刷机三剑客:深度解析flash_tool.exe中Format-Download、Firmware-Upgrade与Download的核心差异与实战选型

本文深度解析MTK刷机工具flash_tool.exe中Format-Download、Firmware-Upgrade与Download三种模式的核心差异与适用场景。通过底层原理拆解和实战案例,帮助用户根据设备状态(如救砖、系统升级等)选择最佳刷机方案,避免数据丢失与硬件损坏风险,提升刷机效率与成功率。

weixin_30394669的博客 297

电容屏驱动技术

文章是我博客园的原创文章,由于那边账号忘记,所以搬迁到csdn ,此文章介绍:电容屏幕概念介绍,input子系统,MTK平台CTP软件控制流程,mtk平台调试ctp技巧展开。

u014243620的博客 255

深度记录360T7刷机历程,帮小白的你避坑

360T7是我去年6月份购买的,主要是为了刷OpenWrt。结果买回来之后一直忙,没有时间折腾。最近终于有时间了,但没想到折腾了一天半,遇到了不少问题。不过还好,最终完美解决。接下来我将分享一下自己在刷机过程中的遭遇,大神们可以略过!

u014193285的博客 1万+

MTK安卓设备临时高权限获取实战:ADB、Shizuku与LD_PRELOAD方案详解

在安卓系统开发与深度定制领域,获取设备Root权限是实现系统级控制的关键技术。其核心原理在于突破安卓的沙箱限制,通过引导加载程序解锁或运行时提权,访问底层Linux内核。这一技术对于应用冻结、性能调优、系统备份等高级功能具有重要价值,尤其在自定义ROM开发和系统调试场景中不可或缺。针对联发科(MTK)平台设备因Bootloader锁定和社区支持薄弱导致的Root难题,本文聚焦于**临时高权限获取**的工程实践,详细解析如何利用**ADB调试接口**和**Shizuku授权框架**,在无需永久修改系统分区的情

weixin_33906657的博客 400

MTK线刷升级操作指引书新

线刷升级操作指引书 注意事项: 1、 此操作指引仅限机型:V9、V11、V12、W1、W2、W3; 2、 升级前请先对照手机型号,选择升级的版本号必须高于“关于手机”里面的版本号.查看路径:设置→关于手机→版本号;操作升级前,请先对手机数据进行备份,避免数据丢失; 3、 操作一到四步都不需数据线连接手机;第五步时关闭手机并重新安装电池; 4、 升级操作步骤中的图片内容

qq_39902554的博客 589

安卓驱动揭秘:厂商实现还是谷歌提供? —— 深入解析 Android 驱动生态与产业协作

安卓手机的硬件驱动主要由芯片厂商或设备厂商自行实现,而非安卓操作系统提供。AOSP仅集成少量通用驱动(如USB、网络协议栈),而特定硬件的驱动(摄像头、指纹等)由厂商根据自身硬件规格开发。Google仅定义标准接口(HAL),驱动开发维护由厂商负责。例如高通提供BSP驱动包,三星开发专属硬件驱动。因此,安卓系统本身不包含具体硬件驱动,厂商需自行适配。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 2万+

MTK UPGRADE

SD卡升级 MTK 6577 MTK6575 文档

MTK设备解锁技术指南:基于mtkclient-gui的bootloader破解与系统修复实践

MTK设备解锁是联发科芯片设备进行系统定制与修复的关键步骤,本文将详细介绍如何使用mtkclient-gui工具实现联发科芯片破解,涵盖环境配置、操作流程、技术原理及高级应用场景。通过本指南,技术人员可掌握bootloader解锁工具的核心使用方法,为设备维护与定制提供专业解决方案。 ## 一、技术原理简析 ### 1.1 MTK芯片安全架构 联发科芯片采用分层安全架构,主要包括BL1(Boo

gitblog_00078的博客 648

MT6755_Android_scatter.txt

联发科刷机所需的存储地址文件

保姆级教程:为你的MTK设备添加外置Smart PA(以RT5509为例)的Audio与Mic配置全解析

本文提供MTK平台外置Smart PA(以RT5509为例)的Audio与Mic配置全解析,涵盖硬件原理、软件配置及调试技巧。详细讲解I2S接口、GPIO控制及电源管理,帮助开发者实现高品质音频系统升级,解决常见故障如无音频输出和音频失真问题。

weixin_30872499的博客 212

Innovus快捷键大全:从入门到精通的效率提升指南

本文是Innovus快捷键从入门到精通的效率提升指南,旨在帮助芯片后端设计工程师通过掌握核心快捷键,将重复性鼠标操作转化为高效的肌肉记忆,从而显著提升版图设计、编辑和分析的工作流速度。文章系统讲解了视图导航、对象选择编辑、流程管理等关键快捷键组合,并提供了个性化配置与实战策略,助力工程师突破效率瓶颈,实现人机合一的流畅设计体验。

silver的专栏 797

进阶数据结构——链式前向星

链式前向星是一种进阶的数据结构,主要用于图的存储。我希望大家先看这个视频(蓝色字体点进去) 不然你很难理解的。在图论中,图的存储方式主要有邻接矩阵和邻接表两种。邻接矩阵虽然建图简单方便,但占内存较大,节点数量稍微大点的题目就难以使用(适合稠密图);而邻接表虽然节省空间,但其指针形式难写易错,且vector形式的读取速度较慢,易导致大数据下的超时(TLE)。针对上述问题,链式前向星作为一种折中的方式应运而生。链式前向星本质上是一种静态链表,它将数据以链表形式连接在一起。

ycs66的博客 2137

mtkclient-gui:联发科设备解锁与系统修复完全指南

### 认识mtkclient-gui mtkclient-gui是一款针对联发科(MTK)芯片设备的图形化工具,专注于bootloader解锁、系统修复及固件管理功能。作为开源解决方案,它为技术人员提供了绕过设备安全限制的专业工具,适用于设备维护、系统定制及救砖操作等场景。 ### 核心功能解析 - **bootloader解锁**:解除设备对非官方固件的限制 - **分区管理**:备份、恢复

gitblog_00939的博客 554

ArcGIS实战:用栅格数据为偏远山区规划一条最省钱的公路(附完整数据与操作步骤)

本文详细介绍了如何利用ArcGIS进行栅格数据分析,为偏远山区规划一条最省钱的公路。通过DEM高程数据处理、成本权重设定和最佳路径计算,结合真实案例展示了从数据准备到工程方案转化的完整流程,帮助工程师在复杂地形中做出经济高效的路线决策。

weixin_32136203的博客 357

ROG WiFi7电竞路由器深度解析:9口2.5G与AI芯片如何重塑高端网络体验

在家庭与企业网络升级的浪潮中,WiFi 7(802.11be)与2.5G多千兆以太网正成为构建高性能内网的核心技术。WiFi 7通过引入MLO(多链路操作)、320MHz频宽等新特性,在原理上实现了更高的并发吞吐量与更低的传输延迟。其技术价值在于为高带宽、低时延应用场景提供了无线基础,例如8K流媒体、VR/AR与云端协作。而有线侧的2.5G/5G/10G多千兆以太网,则通过提升物理链路带宽,解决了NAS备份、视频剪辑等大数据量传输的瓶颈。这些技术共同指向了**电竞游戏、内容创作与智能家居**等对网络品质要求

weixin_34210740的博客 485

关于小样本学习综述论文的总结

对小样本学习综述的个人总结

qq_46176086的博客 5456

【OS】AUTOSAR架构下MCAL Modules软件分区问题分析

AUTOSAR架构下MCAL Modules软件分区问题分析

qq_36056498的博客 939

联发科Day-0支持Qwen3.8-27B:端侧大模型部署实战指南

端侧AI部署是将人工智能模型直接运行在手机、平板等终端设备上的关键技术,其核心挑战在于如何克服硬件资源限制与性能损耗。通过芯片级优化与模型量化技术,可以大幅降低模型推理的延迟与功耗,从而在本地实现高效、低成本的智能处理。这一技术为移动应用带来了隐私保护、实时响应和离线可用等核心价值,广泛应用于智能助手、实时翻译、文档处理等场景。本文以联发科对Qwen3.8-27B模型的Day-0支持为例,深入解析了芯片厂商如何通过前置协同优化与即开即用的工具链,为开发者提供预优化模型包与NeuroPilot SDK,从而显

weixin_33933118的博客 444

深度学习驱动的股票波动率预测:LSTM和Transformer模型的实战解析

股票市场的波动率一直是金融领域关注的焦点之一。波动率预测对于风险管理、期权定价和资产配置至关重要。深度学习模型,如长短时记忆网络(LSTM)和Transformer,已经在时间序列数据分析领域取得了显著的成就。本博客将向您展示如何使用这两种深度学习模型来进行股票波动率预测,提供清晰的思路和相应的Python代码,以帮助您理解和应用这一重要任务。

斌擎科技 974

联发科设备修复与解锁实战指南:从问题到解决方案

### 1.1 移动设备修复的常见困境 在智能手机与物联网设备维护过程中,技术人员常面临以下挑战:设备变砖无法启动、官方工具功能受限、商业软件成本高昂、数据恢复困难等问题。特别是联发科(MTK)芯片设备,由于其特有的安全启动机制,普通用户往往难以进行深度系统修复。 ### 1.2 mtkclient-gui:开源解决方案的优势 mtkclient-gui作为一款专注于MTK芯片设备的开源图形

gitblog_00426的博客 519

电阻基础知识及应用电路仿真(Multisim)

本文围绕硬件工程师必备的电阻知识,从基础知识、实操、应用仿真三方面做系统讲解:基础上明确电阻的核心参数、分类、串并联计算及核心特性;实操中详解贴片/色环电阻的阻值读取、贴片封装换算,重点区分0Ω电阻(贴装跳线,实现功能选通/调试等)与磁珠(高频吸噪)的差异及选型;应用上介绍限流、分压、上拉/下拉、阻抗匹配、过压/过流保护五大典型电路的设计公式、选型原则和实操要点,同时给出电阻通用的选型、测量和布线设计规范,形成完整的电阻应用知识体系。

XU157303764的博客 2775

大数据安全 | 期末复习(上)| 补档

大数据定义:无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

知识库搭建ing 2589
上一篇: MTK Recovery image的OTA升级过程
下一篇: LowmemoryKiller流程简图
李标标
博客等级 码龄11年 124粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值