推广 热搜: page  考试  小红  数据  论文  关键词  红书  数据分析  搜索  哪些 

第一期 前言 《手机就是开发板》手机开发「第一期 前言 《手机就是开发板》」

   日期:2025-02-20     移动:https://sicmodule.kub2b.com/mobile/quote/19836.html

https://blog.csdn.net/aggresss/article/details/53364324#commentBox

  前几天翻抽屉发现了一堆旧手机,不禁感慨,从2009年开始使用android系统的手机到现在,平均每十个月就换一个手机,因为工作原因很熟悉nand和eMMC存储器的工作原理,知道手机内的个人信息即使被删掉也是可以轻易恢复的,所以出于隐私保护的因素每一个旧手机我都妥善的收藏着。手机已经逐渐成为我们的一个器官,每天和他打交道的时间是最多的,同时它也是一个消耗品,一个手机陪伴我们的时间也就是一到两年的时间。面对一堆旧手机我突然来了一个灵感,既然它们已经不再是保存个人信息的载体,何不折腾一下,把手机当作开发板,细细的研究一下它的工作原理。当然把一个已经是产品的手机当作开发板还是有点挑战性的,毕竟略微有一点逆向工程的意思。
        还记得第一次给手机刷机是2012年的事了,手机的型号是HTC_G11,当时手机信号不好,泡在论坛上有人说刷一下基带就好了,于是找了篇刷机的帖子按照上面说的一部一部的操作:解锁bootloader,刷recovery,刷booting,刷system,刷userdata,刷cache,刷基带。刷了一个通宵,刷完特有成就感,虽然今天看了没有什么技术含量,但毕竟大体了解了一下手机的系统构成。当然刷机后问题解决了也就没有再去研究过,因为工作上的事情太操心了。
        说干就干,对于一个开发板,我觉得只要有Datasheet文档和JTAG调试接口这两种输出其他的就都不是问题了。因为Jtag是基于SOC底层的控制方式,所以只要手机可以通过Jtag方式调试,也就可以作为开发板来使用啦。各种论坛潜水后,我在一个维修手机的论坛发现了HTC_G11手机Jtag的接法

        

        于是,迅速连接焊点,将对应信号接入Jlink调试器,然后使用OpenOCD进行scan_chain,如下图这样,使用开关电源调到4v给手机供电,这里说一下手机电池电量的原理,电池的电量就是通过电压表现出来的从3.7v到4.2v对应0%到100%的电量,所以如果手机不用电池供电,只要通过对接3.7v到4.2v之间的直流电就能开机,还有一些手机有电池类型检测端子和温度反馈检测端子,再根据定义将相应端子对地接一定阻值的电阻就能开机。

        结果很悲剧,OpenOCD没有任何反馈,我想这里面一定是有某些黑科技在,比如开机要按某些特定键激活JTAG接口之类的,最后发现手机的JTAG调试有专门的设备,比如riff box(当面三星的字库门很多都是用它就砖的)还有国产的 东海智能天骄王,这些厂商已经将手机JTAG研究的很透彻,而且支持的手机型号也在不断的更新中。Jlink和OpenOCD的组合可能不太支持,也可能理论上支持但需要基于源码做一些修改,所以对于Jtag的尝试就先到这里了,如果想研究Jtag刷手机的话可以考虑入手一个支持手机芯片的Jtag调试器。
        放弃Jtag调试手机最大的影响就是对手机Bootloader的调试会遇到很大的屏障,因为bootloader的调试需要更底层的Jtag作为保障,不过经过我一番研究发现,手机内要研究的东西还挺多,android在设计的时候加入了recovery的概念,这样就弱化了bootloader的重要性,而且bootloader都是有手机芯片生产商提供基础源码,这些都是不公开的,也就是说先去研究其他的问题,暂且放弃bootloader的研究。
        总要给一个想法找一个方向,定一个目标。经过1个星期的不断摸索,最终确定了《手机就是开发板》的研究方向
        1.Android Kernel 驱动移植
        2.Android HAL 移植
        3.Andorid JNI 和 APP 初级掌握
        4.Andorid ROM 移植和定制

        通过将手机作为实验对象,实践动手操作来对以上提到的研究方向进行学习就是我想出《手机就是开发板》这个命题的核心思想。因为这几年我越来越体会到,没有输出的学习是徒劳的,所以我提倡找到实践途径再去学习的方式。
手机的选择也是很关键的,现在手机的芯片方案大体就这几家
        高通 Qualcomm MSM系列
        联发科 MediaTek MT系列
        三星 sumsung Exynos系列
        英伟达 Nvidia Tegra系列
        海思 Hisilicon kylin系列
        还有一些小众的品牌 intel、全志、展讯、Mstar、TI等等。

        每一系列的芯片都有自己的特点,这里我选择普及量最高的两款作为实践对象,分别是高通的MSM8974(骁龙800),联发科的MT6582。这两种芯片对应的手机很多,我这里有两款旧手机正好对应,分别是小米3和联想A850,下面是它们的照片。

下面制定一下学习路线。
        第一步,学习AOSP(Android Open Source Project)相关的内容,通过google官方文档,和google提供的模拟器学习android源码的编译流程,学习编译系统,在模拟器上对上面提到的四个研究方向做一遍实践
        第二步,因为CyanogenMod对小米3提供官方支持,所以在小米3上对上面提到的四个研究方向再进行一遍实机操作
        第三步,因为联发科将开源这部分任务留给了手机供应商,所以AOSP和CyanogenMod对MTK的手机都不提供官方支持,所以我们可以通过MT6582的手机来进行系统移植的实践,最终自己动手将android的系统移植到MTK方案的手机上
        第四步,在自己定制的android系统上,选择一些硬件模块,比如GPS,sensor,camera,NFC,在这些方面从底层做一些修改并做出可以实现特殊功能的APP。

本文地址:https://sicmodule.kub2b.com/quote/19836.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


0相关评论
相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号