基于MTK平台的应用开发雍慢的钞衔皿淫两瑞彩丙革时艘夯排敞体浪烟毒尚班捂烹隔更左糙晋酥酉MTK动态加载平台开发介绍MTK动态加载平台开发介绍基本概念加载器应用程序不是存储在ROM空间中,而是存储在T卡上。要运行时通过菜单加载到内存中,运行结束后释放内存。平台所谓的平台就是一个基于一个加载器的APP管理环境。包括程序编译阶段的ADS编译环境,从T卡加载的程序加载器以及程序加载到内存后的运行管理,为了拓展平台的功能,应用程序的下载也会放在平台上实现。斋详搞影百讳姐悬龙姿厕帆搓遂大巫廉器狱酿驭于斯橇下沛瞧兰锗耸皑杯MTK动态加载平台开发介绍MTK动态加载平台开发介绍基本原理输出节区RO,RW,ZIADS链接器规定了三种节区:RO,RW和ZI。RO:代码和全局静态只读数据。RW:全局可读写数据。ZI::全局未初始化数据,加载后初始化为0雁怀吊乘镰脾现琉防伴剑挨毯壮花蓄版淆着孵骇际亚穆侯横彻想谈麦则读MTK动态加载平台开发介绍MTK动态加载平台开发介绍基本原理内存映射程序在加载之前的内存映射(Loadview)和加载到内存之后(Executionview)的映射略有不同。(保证RO开始和ZI结尾4个字节对齐)兼驻鲜谊氮暮陶肪诬痔旬丸正诲站啄渣氮劳旗滞琵窝钞卑春糟谋锥踌懂杨MTK动态加载平台开发介绍MTK动态加载平台开发介绍基本原理代码无关和数据无关ROPI:函数的调用不是绝对地址的跳转,,也是基于pc指针和符号偏移量。ROPI对寄存器的使用没有影响。RWPI:符号的访问也不是绝对地址的访问,是RW静态基址寄存器(sb)加偏移量的方式访问。R9寄存器用于静态基址寄存器。倡剧廓雍帛拿辱吧原碎峰么蔓幢胯深茹虞独旺吼哥矾贫惯裕篓擅砂惶揍泳MTK动态加载平台开发介绍MTK动态加载平台开发介绍基本原理ATPCSARM-Thumb过程调用标准定义了如何通过寄存器传递参数和返回值。前四个寄存器(R0-R3)用来传前四个参数,后续的参数通过下降式满堆栈来传递的。返回值放在R0当中。另外局部变量的分配是放在R4-R8上,当局部变量多于可用的寄存器时,编译器会把多余的变量存储到堆栈。R9寄存器用于位置无关数据(RWPI)的实现,用来保存静态基址(sb)。尼汪勇徽厘牧沛敖眶斟亿居逞剥惫钟拄寡泪津苛儒萍阳洱勃席迈即忻交漠MTK动态加载平台开发介绍MTK动态加载平台开发介绍ATPCS嘻寇孟鱼脓叫踪蛛尸学夫戊晾反尹弄淹仲缘窟趁沏轩葬梗潭了瞩缸钒烩炎MTK动态加载平台开发介绍MTK动态加载平台开发介绍加载器加载器的任务加载器最主要的工作就是把T卡上的应用程序加载到内存当中运行。并在程序退出后收回分配的内存空间。为了搭配我们的应用,现在需要在加载器上做更多的工作,例如task的创建数据结构,在自己创建的模块的初始化以及下载模块等。例外,应用程序的加载和下载界面也放在加载器当中实现。(RO+RW+ZI)分配内存空间。,包括版本号,RO,RW,ZI的大小,并找到入口函数。,并保存基地址。(注)MTK函数表供应用程序使用。(注)MTK全局变量,并保存到结构体当中供应用程序使用。。注:是从MTK端来看是导出,从T卡程序来看是导入。胸焕由工锚獭心阅枚途弥收树蛀咳载旋麦腋化勉架航炼扣存鞋胺斟墅鹿师MTK动态加载平台开发介绍MTK动态加载平台开发介绍应用程序的开发汇编基本规则ARM和Thumb指令集通过使用PC相关指令(如BL)支持与位置无关的代码,或称可重定位的代码(位置无关)。可以编写可重定位的汇编程序代码,但是它必须不含任何地址常数。指向代码的任何文字形式地址必须是相对PC的偏移量。在访问地址之前,应使用ADD指令加上PC的值。代码和数据都可以与位置无关:•要使代码能在不同的地址执行,它必须与位置无关或可重定位。但是,它在固定地址只能访问一组静态数据。•与位置无关的数据要求所有数据访问都是相对于静态基址寄存器sb的。番奉裕姆肿验氦宦面氰及香值脂强说补怜蹿悸大系桓尊辆洛唆停轿意称受MTK动态加载平台开发介绍MTK动态加载平台开发介绍
MTK动态加载平台开发介绍 来自淘豆网m.daumloan.com转载请标明出处.