打印

关于arm平台动态加载技术的讨论

[复制链接]
3677|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxyhome|  楼主 | 2008-3-11 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请求各位arm达人,我现在有一种方法实现对应用程序的代码进行重定位,如果不涉及到全局变量,可以将App程序独立编译成bin拷贝进内存加载.

关于全局变量这块,如果指定为rwpi,那么将生成RWPI段,那么程序对全局变量的访问将以间接的方式来进行.将以sb寄存器来存储base.运行时对sb进行重定位,sb寻址全局变量时以基地址+偏移地址.

问题如下:
  假如我申请一个buffer将axf中.text段(相当于RO)拷贝进来,那么接下来将指定rwpi生成的.data段拷贝进来.我查了一些资料,要实现对全局变量的访问,必须在进入app程序前对sb赋一个初值.因为本人不熟悉arm,不知道这个初值为多少?要实现全局变量定位,该如何操作,欢迎大家讨论.如果有能够实现者,可以加我Q私聊,有偿!

相关帖子

沙发
jxyhome|  楼主 | 2008-3-13 10:48 | 只看该作者

自己顶上去

使用特权

评论回复
板凳
农民讲习所| | 2008-3-13 11:01 | 只看该作者

这个问题复杂,主要是编译器编译时对RW绝对定位了。

可以在外部程序中将API的RW单独划出来,绝对定位的。比如外部是0x31000000的话,那么API将使用0x31000000+0x20000开始的RAM。同时可能需要修改BOOT中堆栈的位置。

使用特权

评论回复
地板
samuelyu| | 2008-3-13 14:20 | 只看该作者

所长的方法可行,可以避开 OVERLAP 的问题;

使用特权

评论回复
5
mydatai| | 2011-4-11 16:38 | 只看该作者
等等等等等等等等等等等等等等等等等等等等等等

使用特权

评论回复
6
xinzha| | 2011-4-11 17:41 | 只看该作者
实现起来有很多种方式,不知道lz是什么环境以及目的。如果没有操作系统(指非实时系统)的话曾经用过如下方法实现。
动态加载的image首地址既整个image跟主image的接口,通过这个接口主image获取所需的动态image的函数指针列表,以及将双方共享的buffer指针传递给动态image,动态image尽量少调用主image函数,如果一定要做也通过指针传递方式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

74

帖子

0

粉丝