MTK动态加载平台开发介绍.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MTK动态加载平台开发介绍

基于MTK平台的应用开发 基本概念 加载器 应用程序不是存储在ROM空间中,而是存储在T卡上。要运行时通过菜单加载到内存中,运行结束后释放内存。 平台 所谓的平台就是一个基于一个加载器的APP管理环境。包括程序编译阶段的ADS编译环境,从T卡加载的程序加载器以及程序加载到内存后的运行管理,为了拓展平台的功能,应用程序的下载也会放在平台上实现。 基本原理 输出节区 RO,RW,ZI ADS链接器规定了三种节区:RO,RW和ZI。 RO:代码和全局静态只读数据。 RW:全局可读写数据。 ZI:: 全局未初始化数据,加载后初始化为0 基本原理 内存映射 程序在加载之前的内存映射(Load view)和加载到内存之后(Execution view)的映射略有不同。(保证RO开始和ZI结尾4个字节对齐) 基本原理 代码无关和数据无关 ROPI:函数的调用不是绝对地址的跳转,而是当前pc指针 加上函数地址偏移量的相对跳转.符号的访问,也 是基于pc指针和符号偏移量。ROPI对寄存器的使 用没有影响。 RWPI:符号的访问也不是绝对地址的访问,是RW静态基 址寄存器(sb)加偏移量的方式访问。R9寄存器 用于静态基址寄存器。 基本原理 ATPCS ARM-Thumb过程调用标准定义了如何通过寄存器传递参数和返回值。前四个寄存器(R0-R3)用来传前四个参数,后续的参数通过下降式满堆栈来传递的。返回值放在R0当中。另外局部变量的分配是放在R4-R8上,当局部变量多于可用的寄存器时,编译器会把多余的变量存储到堆栈。R9寄存器用于位置无关数据(RWPI)的实现,用来保存静态基址(sb)。 ATPCS 加载器 加载器的任务 加载器最主要的工作就是把T卡上的应用程序加载到内存当中运行。并在程序退出后收回分配的内存空间。为了搭配我们的应用,现在需要在加载器上做更多的工作,例如task的创建数据结构,在自己创建的模块的初始化以及下载模块等。例外,应用程序的加载和下载界面也放在加载器当中实现。 应用程序的加载 1. 根据应用程序的大小(RO+RW+ZI)分 配内存空间。 2. 解析应用程序的头,包括版本号,RO, RW, ZI的大小,并找到入口函数。 3. 获取RW的基地址,并保存基地址。 4. 导出(注)MTK函数表供应用程序使用。 5. 导出(注)MTK全局变量,并保存到结构体当中供应用程序使用。 6. 应用程序退出后释放内存。 注:是从MTK端来看是导出,从T卡程序来看是导入。 应用程序的开发 汇编基本规则 ARM和 Thumb指令集通过使用 PC 相关指令(如 BL)支持与位置无关的代码,或称可重定位的代码(位置无关)。 可以编写可重定位的汇编程序代码,但是它必须不含任何地址常数。 指向代码的任何文字形式地址必须是相对 PC 的偏移量。 在访问地址之前,应使用 ADD 指令加上 PC 的值。 代码和数据都可以与位置无关: ? 要使代码能在不同的地址执行,它必须与位置无关或 可重定位。 但是,它在固定地址只能访问一组静态 数据。 ? 与位置无关的数据要求所有数据访问都是相对于静态 基址寄存器 sb 的。 应用程序的开发 C语言基本规则 编写 ROPI 的 C 和汇编程序代码时: ? ROPI 段中的代码对同一个 ROPI 段中的符号的每个引用 必须是PC 相对的。 ATPCS 不为只读段定义任何其他基址寄存器。 一个 ROPI 段中的项的地址不能分配给其他 ROPI 段中的项。 ? ROPI 段中的代码对不同 ROPI 段中的符号的每个引用必须是PC 相 对的。 这两个段必须是相对固定的。 ? ROPI 段中的任何其他引用必须是: — 绝对地址 — 对可写数据的相对于 sb 的引用 ? 每当 ROPI 段移动时,寻址 ROPI 段中符号的读写字必须进行调整。 应用程序和MTK的交互调用 从T卡程序调用MTK程序,需要通过加载器引入MTK的函数地址,访问方式以绝对地址的方式。 从MTK端调用T卡程序中的函数,必须通过加载导出T卡中的函数。导出的函数地址也

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档