arm 体系下的动态加载

xuan9932 2007-09-01 11:22:46
小弟在一个项目下需要做自动升级,苦于该项目的开发模式是native的方式,需要把自己的代码和OS的代码一起编译成BIN文件烧入手机。所以这种模式,自动升级无法实现。现在想做一个类似DLL动态加载的方式。主要思路是把程序编译成ELF格式的文件,然后在OS中写一个加载的代码将其动态载入。现在遇到了一些问题,看看有没有相关经验的兄弟帮忙下:
1. DLL是放在二级存储器中的,程序可以通过读取文件的方式读入,但是这是ELF格式,如何能将代码区和现有程序的进程空间进行关联。
2. 如果找到DLL的首指针,然后将其赋值给程序的入口函数。


...全文
811 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
WebPlA 2010-07-30
  • 打赏
  • 举报
回复
就是“ARM动态链接”嘛,我知道国内有一个开源的VRE项目,其中有一个动态链接内核,就是基于ELF做的。原理很简单,加载的是可重定位的ELF文件,通过动态链接器将其符号重定位后输出Image Bin,然后执行。

整个架构分为ROM层与动态连接层。楼主所说的OS层就是动态链接中的ROM层,ROM层与动态连接层的交互,API的调用通过一个映射表实现的。相关细节可以看一下突壳开源的VRE项目。
http://www.tok.cc/?p=35
或者直接联系作者:QQ 66970490
pandera 2010-06-12
  • 打赏
  • 举报
回复
楼主,你的问题解决了吗?我也碰到相同的问题,怎样把DLL加载到内存中并调用函数,能否交流一下经验:christie8208@yahoo.com.cn
hoping03417212 2010-02-08
  • 打赏
  • 举报
回复
学习一下
wskyo 2009-02-09
  • 打赏
  • 举报
回复
我想了解,怎么联系你。
xuan9932 2008-09-20
  • 打赏
  • 举报
回复
没想到刚刚百度的时候,居然搜到了去年的帖子。
动态加载的东西已经搞定,谢谢各位支持!
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
支持搂主,收藏
wangxangyang 2007-10-20
  • 打赏
  • 举报
回复
要看是什么操作系统。
好像去年的时候vxworks才能支持动态加载程序。
如果是windows系列的都做好了。
uclinux应该也可以了。
CedarDiao 2007-10-15
  • 打赏
  • 举报
回复
补充一点:如果你是用winCE的话,这个功能已经有了,不用你做了。
CedarDiao 2007-10-15
  • 打赏
  • 举报
回复
其实你的问题就是如何做一个elf loader的问题。。。。
需要你去看一份资料:ELF文件格式。
可以用google搜索,或者在ADS12自带的说明中也有(英文的)。
wxf0204 2007-10-08
  • 打赏
  • 举报
回复
呵呵,顶一下
ningxin 2007-09-30
  • 打赏
  • 举报
回复
关键不在ARM体系,而是OS是什么。
如果你的自动升级允许重新启动,问题就很简单,直接从文件系统里面执行自己的代码就可以了,不管是Linux,vxworks,还是ucosii 。升级的时候覆盖原来的代码就行。
如果你的自动升级不允许重新启动,就要麻烦一些。需要在自己的代码里面,用函数指针方式实现。

3,849

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧