MTK 动态加载技术课件.ppt

MTK 动态加载技术课件.ppt

ID:57058369

大小:90.50 KB

页数:21页

时间:2020-07-30

MTK 动态加载技术课件.ppt_第1页
MTK 动态加载技术课件.ppt_第2页
MTK 动态加载技术课件.ppt_第3页
MTK 动态加载技术课件.ppt_第4页
MTK 动态加载技术课件.ppt_第5页
资源描述:

《MTK 动态加载技术课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MTK动态加载技术------Eric2008年3月目录动态链接技术从COM技术谈起brew核心思想我的思路思路的优缺点动态链接技术动态链接技术是一种lazymode(晚捆绑)技术,其目的就是便于接口模块化,方便管理更新,有利于节省程序运行空间.其典型的应用是Windows的DLL技术,开发人员使用DLL中的API接口时可以通过一种间接查表的方式从而定位到接口的函数地址,实现重定位.动态链接技术的的一个优点在于只有当接口被使用时才赋予空间地址,这样极大节省空间.动态链接技术因此成为组件式操作系统的根本.从COM技术

2、谈起COM是Windows平台上实现的一种跨语言的开发机制,目前在Windows平台的底层,许多功能都是通过COM机制来实现的。COM通过统一的、独立的接口定义语言(IDL:InterfaseDefinitionLanguage)来定义统一的接口,并规定了相应的接口二进制规范,这样就可以按照这个二进制规范,通过各种不同的开发语言来实现COM程序的开发,而实现这种接口与实现之间完全分离的技术就是虚拟函数表(VTBL)。COM技术的特点COM是接口和实现完全分离,为此专门规范了统一的接口定义语言,因此而接口的实现可以采

3、用任何一种开发语言,如C/C++和Java等.COM通过Windows注册表,使用文本的名字寻找相应的ClassID(这个ClassID需要通过注册程序进行注册),例如FastString接口可以通过传递字符串“FastString”最为参数从而创建FastString接口,实现这个功能的基础是运时的类型识别技术(RTTI,相关的内容可以参考VC的书籍).COM技术中实现对接口API函数重定位的关键在于VTBL虚拟函数表.brew核心思想brew技术简单来讲就是模仿COM技术,利用C语言及特定的arm编译器来实现程

4、序的动态加载,本质上brew就是一个简单的COM.brew核心思想也是通过VBTL(虚拟函数表)来实现对接口API中的函数进行重定位.Brew通过一种软件上的机制来实现接口与接口实现的二进制层次上分离,其目的就是ABI.brew特色brew采用虚拟函数表技术来规范接口API,因此所有的API中函数地址与接口类指针绑定在一起,也意味着其接口函数生存在接口类指针的地址空间.brew采用接口管理类Ishell来管理所有接口类,也就意味当你要使用某一接口时必须将Ishell接口类指针来创建你所使用的接口类.由于brew不支

5、持全局变量,因此你必须将接口管理类指针Ishell*ptr传递到应用程序App各个子函数中.Brew指定的arm编译选项为acps/-ropi生成的代码为加载与运行地址与位置无关,因此可以拷贝到ram任意处运行.Brew缺陷Brew不支持全局变量,所有编程的实现依赖于具体的接口类,使得实际编程比较困难.Brew这种动态加载技术,必须要有比较健全的消息机制的系统支持.我的思路前面谈了这么多COM技术以及BREW,目的就是介绍下我的程序动态加载的思路------既然brew可以仿COM技术,我们也可以仿brew,对于做

6、一个小型的支持动态加载的SDK是完全可行的.思路如下:(1)先走brew的方法,利用虚拟函数表技术实现接口的ABI,将接口与MTK平台绑定一起编译.应用程序单独编译成bin.(2)走不通则走通常的elfloader的方式,加载axf文件,对其中的sectionheader进行分析,装载并重定位.开发过程经过一阵子努力,很开心,我第一步走通了,不涉及全局变量的纯RO段应用程序代码动态加载实现成功.那接下来有两个选择:(1)完善MTK的消息机制,让其按键及绘制窗口均以消息驱动的方式替代其回调函数的方式.这样就可以做成一

7、个类似brew的系统.(2)增加对全局变量的支持.Arm平台全局变量定位问题要完善对全局变量支持,必须对全局变量重定位,方法有两个:(1)退回到axf文件,解析.text段也就是RO段(代码段),由于我们可以利用虚拟函数表对函数重定位,我们只需要将axf中此段数据拷贝进buf即可.根据sectionheader我们可以很快定位到.data及.bss段(数据段即RW+ZI段),我们只需要对此段的数据进行重定位即可.这样我们可以定位到全局变量的地址.(2)应用程序编译时指定rwpi选项,link生成读写与位置无关的可写

8、数据代码,ads手册里说明指定rwpi编译选项将生成RWPI段,程序对全局变量的应用将以间接的方式执行.通过sb寄存器来计算获取相应全局变量的偏移地址,这样的话我们就可以定位到全局变量.但必须在应用程序被装载前对RWPI段进行一次重定位.验证方法一可行性上面提到两个对全局变量定位的方法,我们逐一来验证其可行性:方法一要可行:(1)必须保证axf中.text与

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。