为什么MTKios的内存管理机制那么强大

博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)51CTO旗下网站
关于MTK启动过程详解
关于MTK启动过程详解是本文要介绍的内容,主要是来了解MTK在启动过程中的一些原理,具体内容的实现来看本文详解。
作者:佚名来源:互联网| 17:35
关于MTK启动过程详解是本文要介绍的内容,主要是来了解MTK在启动过程中的一些原理。MT6305上电给基带芯片供电,在一定时序条件后,给基带芯片复位信号,开始了ARM核的启动过程。要谈启动,我们必须熟悉Scatterfile、基带资料的Memorymapping章节。Scatterfile定义了loadregion和excecuteregion,我们要关心系统运行时代码、数据的地址分布。
Bootarm.s是一个重要的文件,与启动过程有关,其中的INT_Initialize函数是ARM启动开始执行的代码。BSP所做的事情主要包括:
1、配置PLL,配置基带芯片的EMI参数,以让系统能够以最大的速度读取外部存储设备数据,让CPU以最大速度运行,从而缩短启动过程。
2、做好runtime代码及数据的准备,确保excecuteregion的代码及数据到位。
3、配置好ARM七种异常模式的堆栈,进入RTOSnucleus的初始化。
4、nucleus留给客户的初始化函数Application_Initialize,做了平台该做的初始化工作,比如外部控制器的初始化等等。
在分析系统问题,开发跨线程应用时,必须熟悉RTOS。目前使用的RTOS是nucleus,尽管在BSP中看到了它对ThreadX的支持。不同的RTOS,实际上也是大同小异,但是具体的API或者参数会有不同,因此我们需要下载nucleus的API文档,在需要了解细节时,可以翻阅此文档。同时,TRACE32支持基于RTOS级别的调试,因此对RTOS的了解,有助于提高调试能力。
有点特殊的是,nucleus有LISR,HISR的概念,实际上它是一种给开发者的印象。它告诉开发者,中断处理函数LISR要尽量的耗时短,以确保其它中断能有机会及时响应。HISR再处理略为次要些的工作,但耗时也不能太长,因为HISR比任何TASK的优先级都高,我们应该让真正需要实时的工作获取CPU的机会。
Application_Initialize中的mainp函数,负责任务的创建。我们在代码中见不到任务创建的函数,只需要维护任务初始化参数数据结构。对于系统的那些task信息,都保存在sys_comp_config_tbl变量中,我们看不到。但是MTK提供给客户的custom_comp_config_tbl,客户是可以修改的,在这里用户可以定义自己的task。
关于任务,需要关心数据结构comptask_handler_struct。关于comptask_handler_struct成员的执行顺序,应该是:comp_init_func在系统还未schedule即在Application_Initialize中完成,然后taskschedule后执行comp_entry_func。comp_cfg_func、comp_reset_func、comp_end_func我认为无太多意义。
task和module有什么区别?可以肯定的是,task是操作系统层面的概念,module是软件平台设计者因为某种需要而设计的,可能大家比我更清楚,但这种概念在具体工作中可能还是需要弄清楚。
到此,基于RTOS的各个TASK应该都已经调度起来。首先毫无疑问,idletask必须是优先级最低的task。按照常理,系统会从最高优先级的任务开始调度,至于如何跑到MMI显示LOGO界面,在必要时,我们可以去研究。
至于MMIframewok,我未做太多了解,但任何GUI系统面对的都是最终的LCDbufffer。但不同的是,MTK的基带芯片搞了个LCD控制器,并加了layer的概念,从硬件上支持2Dfunction和加速LCD的刷屏。对于上层的GUI,要做的是选择哪个layer是active。
LCD控制器的刷屏机制。以6225为例,支持4layer。MTK资料对LCD控制器未做详细的描述,是其对LCD接口块图的描述。但通过LCD控制器驱动,我们可以对LCD控制器内部结构做更多的假设。图1中的Overlay,我们可以设想为一个专有的DMA控制器通道,目标地址为LCD,源地址是layerbuffer。系统通过配置要刷哪几层,配置alpha值来控制2D效果。这一目的的达到,硬件上有它的考虑,我们也没有必要做太多确定性的假想。
需要说明的是,仅仅是这样一张图,我们应该有更多的联想。Layerbuffer都是从外部RAM开辟的内存空间,LCD的访问时序完全决定于如何配置LCD控制器。对Layerbuffer的读写,需要占用系统总线,即使再做总线上的区域规划,外部RAM的数据总线是公共资源。对公共资源的访问,就意味着并发,意味着仲裁ARBITER。为什么在以前的项目中,出现一些关于LCD的莫名其妙的问题,不能说这里是根本原因,但我们应该从系统的角度去注意到这点。我对资源的占有,就意味着别人的失去。以往被掩盖的缺陷,可能会因为系统运行时的变化,暴露出来。这就是我认为,有些系统问题,不能从代码表面去分析,而要从ARM核的角度,从同cache,BUS,controller等外围设备之间的联系来系统的分析问题。
关注一下开机LOGO的显示,是在uem_poweron_timer_expiry_hdlr函数中,同时这里做了latchpower的动作。还有潜力,提前显示出LOGO。
内存分配机制
在MTK的资料中,介绍了它的内存管理机制,有3种:ADM、Controlbuffer、SystemMemory。后两个是系统使用的,与上层应用无关。但是我对kal_system_alloc也做了初步分析。
sys_mem_ptr,其估计应该指向的是System_Mem_Pool,debug_mem_ptr,其估计应该指向的是debug_Mem_Pool。经过初步分析,kal_system_alloc就是从System_Mem_Pool做简单的加法操作,sys_mem_left_size就是System_Mem_Pool还剩下多少。kal_system_alloc从sys_mem_ptr开始来计算要取的内存。ctrl_buf是通过kal_system_alloc的内存,然后再通过NU_Create_Partition_Pool创建POOL。系统的一些taskstack.等也都是通过kal_system_alloc来分配的。
也就是说,Controlbuffer、SystemMemory用的都是System_Mem_Pool的空间。而System_Mem_Pool可以查到,是在custom_configmem函数中配置。
ADM就完全没有使用操作系统提供的内存管理算法,是平台自创了一套。开发者,可以自己开辟一个POOL,自己在这个池用ADM提供的内存管理API完成内存的动态管理。具体的分配算法,就没有再细看,跟一些通用的内存分配算法应该一致。但是在以前调试一个问题的时候,应该是可以断定,ADM在每一个allocnode前后都加了GAP调试区,来判断是否被overwrite。
至于系统中,到底是用了多少块内存用于ADM,各块内存又是让哪些应用在共享,开发者可能更清楚。在系统中是否建立了对内存动态分配的监控机制,比如查询内存泄漏、动态内存使用效率等等。
文件系统用的是FAT格式,最关键的是如何MOUNT存储设备,如何匹配文件系统读写接口。MTK通过表格的形式来让客户选择支持的flash,真的是很方便,考虑太周到。
MTK的makefile,写的很复杂,有perl脚本,也有make脚本,但框架结构很好。虽然我对makefile结构通读了一遍,但没有仔细花时间对此形成文档。
MTK软件平台,接触了一年,总体感觉其底层代码写的很工整,结构很清晰。越到上层,代码就显的庞大凌乱,结构性和可读性都不强。如果把芯片设计也说上,我觉得MTK的基带芯片设计很智慧,针对特定的多媒体手机应用,设计出专门的控制器嵌入芯片内部。像uart控制virtrualfifo和camera的resizer以及lcdcontroller,用低成本控制器来快速完成逻辑,从而减轻CPU的负担,提高芯片的整体性能。在其他多媒体处理器中,都是不多见的。
与业界认为从事MTK平台开发的技术含量低恰恰相反,我认为MTK方案技术含量非常高。MTK软件平台的代码开放程度也不低,MTK的技术支持也非常有力而迅速,以MTK平台为基础的终端承载了最丰富多样的应用。MTK方案给希望对手机平台有深入而全面了解的同事提供了机会。
基于MTK平台的产品开发
有那么多的公司在做基于MTK平台的产品,竞争那么激烈,研发上如何在竞争中体现优势?硬件上,大家都一样。软件上,也是一样。你可以有,别人也可以有或者偷,别人可以有,我们也可以有或者偷。最多是差个把月,怎么办。一个中心两个基本点。以服务好客户为中心,保证两个基本点,一是要快,二是差异。
拉不到客户什么就不要做了。在大家都差不多的情况下,我们以客户为中心,快速的满足客户需求,提供产品。这样能拉住客户,让客户找不到离开的理由。第二是产品差异,是创新。如果有产品创新最好,要么降低了成本,要么吸引了消费者。但这两点中,还是快字最重要,这是可以通过团队专业实力和激情来保证的。但是创新,有运气的成分,需要研发同市场碰撞出火花。鼓励和激励创新,但不能只靠产品创新一定会出现。
关于MTK启动过程详解的内容介绍完了,希望通过本文的学习能对你有所帮助!【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条热点热点热点
24H热文一周话题本月最赞
讲师:160376人学习过
讲师:153655人学习过
讲师:12107人学习过
精选博文论坛热帖下载排行
本书作者结合自己多年实践经验,从Oracle开发应用中遇到的问题着手,全面系统地介绍Oracle的安装与卸载、数据字典、安全管理以及用PL/SQL开...
订阅51CTO邮刊当前位置: -> ->
为什么手机内存变小了
用过智能手机的朋友都会发现一个问题,为什么手机的内存会越来越小,甚至有时候还提示手机内存不足,无法运行程序的情况,那么我们今天就来简单的来说一下手机内存为什么变小和手机
& 用过智能手机的朋友都会发现一个问题,为什么手机的内存会越来越小,甚至有时候还提示手机内存不足,无法运行程序的情况,那么我们今天就来简单的来说一下手机内存为什么变小和手机RAM变小如何解决.
一,什么是手机RAM,RAM与的区别
&& RAM(Random access memory)是读写存储器的简称,它是程序运行时临时存放数据的地方,是动态存放的,每次开机,都会重新加载。所谓的内存管理,就是关闭不需要运行的程序,释放掉无需运行的程序占用的内存,相当于系统运行时的数据动态缓冲区。
& 手机RAM是指手机的运行内存,平常我们说的智能手机的RAM大小就是指手机的运行内存大小,内存的大小直接影响到手机的运行速度和流畅度,以及手机能够同时运行的程序数量。智能手机的内存与电脑的内存大同小异,如果把手机的RAM比做电脑的内存的话,那么ROM以及外置存储卡就相当于电脑的硬盘。 本文来自MTK手机网http://www.mtksj.com
&手机RAM的最大特点是随机存取,易失性,高访问速度,需要刷新,对静电敏感。祥细的特点描述我们以后再祥细讲解。
二,为什么手机运行内存变小了
& 我们以采用Android系统的智能手机为例,Android系统的手机都很耗内存,运行内存变小了会造成手机流畅度大大降低,很多观察仔细的朋友经常会发现Android系统的手机实际使用过程中的运行内存变小的情况,手机运行内存与之前手机厂商宣传中提到的运行内存(RAM大小)并不一样,下面网为您解答这个问题。
&&& Android系统手机运行内存变小的情况有两种:
& 第一种:系统将一小部分运行内存分配给独立的图形处理器(GPU)作为显示内存使用,就像在PC中将内存分给集成显卡增大显存的情况一样。因此我们在实际使用Android系统手机的过程中会发现运行内存变小的问题。拿为例,厂商标配1GB RAM,但是实际使用中可用运行内存约为700-800MB左右,大约有200MB分给了显卡等硬件运行。 本文来自MTK手机网http://www.mtksj.com
&&& 另一种情况则是手机固件对较大的运行内存识别错误,这种情况出现几率很小,但并不是完全无这种情况,一般这种情况出现在网友制作的第三方刷机包中。例如联想A750,厂商标配512 RAM,但刷完某些大神制作的第三方刷机包后,显示可用内存仅为几十MB,必须再刷运行内存补丁才能恢复至200-300MB大小的正常RAM值大小。
三,手机内存变小怎么解决
& 如何解决手机内存越变越小,手机RAM变小该怎么解决呢?MTK手机网总结了以下几点,让您的手机RAM不再消失不见。
1,不要装太多无用的应用。有此应用非常的吃内存,并且装完后还在后台自动运行,有些霸道的不提示您直接开机自启。所以防止手机RAM变小的第一步就是少装没有用处的应用和游戏。
2,用手机自带的任务管理器清理不需要后台运行的软件。Android系统都有自带一个任务管理器,只要我们经常打开它,并结束掉无用的进程和任务,RAM又会变大了。 本文来自MTK手机网http://www.mtksj.com
3,用第三方软件,比如ES任务管理器,LBE安全大师等,个人推荐LBE安全大师自带的一键清理应用,很简单并且实用,而已LBE安全大师占用内存小,功能又强大。 本文来自MTK手机网http://www.mtksj.com
转载MTK手机网原创文章请保留链接:
(整理:admin)
------分隔线----------------------------
乐蛙OS是目前MTK机型ROM开发最多的,同时乐蛙ROM的界面很美观,...
本次使用到的中文recovery来自592ZN论坛,为全网首发JY-G3专用的中...
MTK手机网:网友原创的MTK6575刷机教程,适合小白参考,教你如何对...
从整体表现来看,四核手机领先双核手机的幅度并不大,但是在...
可能很多人都认为MTK芯片便是山寨,其实我们需要看清楚事情的...
联发科(MediaTek)是台湾著名的手机芯片生产厂商,曾经在功能时代...完美解决MTKLogger自启动,降低内存占用,解决因MTKLOG的造成的续航等问题_360社区
绑定手机号
应国家法规对于账号实名的要求,请您在进行下一步操作前,需要先完成手机绑定 (若绑定失败,请重新登录绑定)。
不绑定绑定手机号
应国家法规对于账号实名的要求,如不绑定手机号,则只能浏览论坛,无法进行发帖、评论、回复、点赞等相关操作 (若绑定失败,请重新登录绑定)。
确定绑定手机号
反馈360产品问题,
本帖最后由 SUPERWT 于
15:25 编辑
祝大家玩机愉快
如果您感觉电量续航明显很低,系统总是感觉卡卡的,360卫士清理总是会发现MTKLOG缓存有上1G的大小,那就可能是MTKLogger.apk出现了问题,如果没出现可以直接按冻结步骤做预防,没有任何损害可随时恢复操作前的样子,只是把MTKLogger.apk冻结了,像把应用扔到冷藏室里一样,可以解冻
彻底解决MTKLogger自启动问题废话不多说,直入正题
本教程虽然长,其实很简单,就是因为步骤比较详细才显得长
1、清除MTKLogger缓存(可以跳过此步骤,但更加彻底的话还是做一遍比较好)
& && && && &打开设置,点应用管理,点全部,找到MTKlogger,点里面的清除数据,如果是灰色按钮,可以跳过此步骤
2、打开360卫士进行清理(可以跳过此步骤,但更加彻底的话还是做一遍比较好)
& && && && &打开360卫士,点清理加速,点深度空间清理,缓存文件,手动查找MTKLogger的缓存文件,勾选,让360卫士清理一下,如果没有找到,那就跳过此步骤
3、打开手机的USB调试
tfbe).png (54.6 KB)
10:12 上传
再设置里面找到关于手机,点击“版本号”5次,截图用的奇酷青春的,但360OS设置都一样
t01530ceb.png (75.64 KB)
10:07 上传
在设置里面找到开发者选项,打开USB调试,如图(当做完本教程最后一步,可以再回来把USB调试关了,这个是用的时候打开,不用的时候关掉,不然手机不安全)
4、打开刷机精灵
刷机精灵.jpg (58.5 KB)
10:14 上传
USB调试保持开启并允许连接电脑和授权,手机用USB数据线插到电脑上,打开刷机精灵,手机出现提示一定允许调试,其他的360手机助手自动弹出的话,请关闭他们,只保留刷机精灵,点刷机精灵的实用工具,点快捷工具里面的ADB命令行按钮
5、使用ADB命令行
QQ截图41.jpg (47.11 KB)
10:16 上传
直接粘贴输入“adb shell pm hide com.mediatek.mtklogger”,如图,然后直接按回车
QQ截图50.jpg (52.67 KB)
10:16 上传
显示“Package com.mediatek.mtklogger new hidden state: true”就是成功了
6、检查是否冻结成功
t012dbe05b8acaa3435.png (66.86 KB)
10:18 上传
打开拨号盘,输入*#,他会自动打开工程模式
tdece789e3c.png (115.71 KB)
10:21 上传
拉到最后,点击MTK工程模式
t1e6d29c1.png (66.33 KB)
10:21 上传
横着滑动屏幕,停在Log and Debugging选择卡,如果MTKLogger变成如图的灰色不能点击,就是冻结成功,大功告吉,有问题请直接回复,还卡可能别的原因,总有解决方法。其实ROOT直接把MTKLogger删了很干脆很强势,可是不好ROOT,这个也比ROOT简单
解冻MTKLogger的方法就是第5步把代码换成“adb shell pm unhide com.mediatek.mtklogger”即可解冻,要解冻的情况就是需要抓取日志,提取BUG的等等需要解冻,普通情况无需解冻,也不影响以后的卡刷升级系统,如果感觉影响到OTA了,可以解冻
如果解决了问题,可以回个帖供大家参考参
360手机N4官方群3
有问题可以加群,私聊WT
这样算正常吗?
Screenshot_-18-37-14.png (143.97 KB)
18:37 上传
Screenshot_-18-37-11.png (120.27 KB)
18:37 上传
来自360手机N4(全网通)(360社区3.2.4版)
来自360手机N4(全网通)(360社区3.0.9版)
成功了,冻结完后重启运存已用1.28G,貌似好一些了。
来自360社区WAP端
刚重启系统看了,开机运存1.08,杆杆的
来自360社区WAP端
手机以是root了的,俺是自接钛备份冻结,一键捣定,这就root的好处
挺麻烦的吧,不想用刷机精灵之类的东西。
来自360手机N4(360社区3.0.4版)
谢谢楼主分享
来自360手机N4(全网通)(360社区3.0.4版)
来自360手机N4(全网通)(360社区3.0.4版)
问题去了售后刷了新系统也白搭了,还是会有重启,好吓人。。。
来自360手机N4(全网通)(360社区3.0.4版)
感谢楼主,待测试中
楼主!我手机里完全没有mtk logger
来自360手机N4(360社区3.0.4版)
我试了很好用,谢谢
这算正常吗
Screenshot_-22-54-28.png (120.35 KB)
22:55 上传
来自360手机N4(全网通)(360社区3.0.4版)
完全没必要,可以关掉
来自360手机N4(全网通)(360社区3.0.4版)
来自360手机N4(360社区3.0.4版)
谢谢楼主分享问题解决了
来自360手机f4(360社区3.0.4版)
来自360手机N4(全网通)(360社区3.0.4版)
N4还没到手,先学习学习。谢谢分享。我也是
那么麻烦干直接用root删了就好了
来自360手机N4(360社区3.0.4版)
N4还没到手,先学习学习。谢谢分享。
已经root怎么删
来自360手机N4(全网通)(360社区3.0.4版)
lihai& && && && &
来自360手机N4(360社区3.0.4版)
<font color="#0fans 发表于
我是移动版050系统,应该是最新的吧最新是057
来自360手机N4(360社区3.0.4版)
确实有效 现在深度清理那里 缓存数据都看不到 MTKLogger 了
请问这个现象是在哪个版本上出现呢。哪个版本又不会出现呢。 说出来让我们选择刷机版本啊 ...早期的版本,现在的移动版57和全网通33官方已经进行了一些处理,如果没问题就不用管了
学着用了 不错&&谢谢
请问这个现象是在哪个版本上出现呢。哪个版本又不会出现呢。 说出来让我们选择刷机版本啊
热门推荐最新主帖
360社区客户端下载MTK内存_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
&&该资料是关于mtk开发过程中内存的详细处理过程的文档,对于mtk内存管理作了详细介绍。
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
&#xe64e;加入VIP
还剩7页未读,
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 linux的内存管理机制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信