找回密码
 注册
搜索
查看: 1647|回复: 8

[资料] 请问如何动态加载一个T卡中的LIB,并运行LIB中的程序?

[复制链接]
发表于 2008-2-2 10:54:26 | 显示全部楼层 |阅读模式
MTK烧在ROM里的都是死的,有什么办法可以动态加上T卡上的程序吗?
发表于 2008-2-2 11:32:31 | 显示全部楼层
原则上是不可能的.

要满足运行T卡的LIB必须符合下面的条件

1)LIB中如果要调用外部程序,必须支持动态定位.操作系统必须提供相应的机制

2)数据中不能存在全局变量.如果有全局变量也必须是动态定位的.

3)要调用外部的全局变量,也必须支持动态定位.

由于MTK的操作系统不是开放的操作系统,不能象linux一样,能加载程度.如果要做必
须在加载中,运用各种动态定位的技术才有可能实现.而这部分的工作,工程量非常大.
点评回复

使用道具 举报

 楼主| 发表于 2008-2-2 11:58:55 | 显示全部楼层
感谢wayoqi的回复,但我觉得是有可能的:
1、做一个引导程序,这个引导程序是烧在ROM中的,MTK中先启动这个引导程序。
2、引导程序分配好内存
3、自己做一个C语言的解析器

我知道大概是这样,但还是没有头绪怎么来实现
点评回复

使用道具 举报

发表于 2008-2-3 10:32:41 | 显示全部楼层
赞一个,牛人来了
点评回复

使用道具 举报

发表于 2008-2-18 14:00:30 | 显示全部楼层
要支持动态定位芯片要具有MMU功能,ARM7是不具有的
点评回复

使用道具 举报

发表于 2008-2-23 22:23:41 | 显示全部楼层
我靠牛人们这些是从什么地方了解的?我连一点加载lib的需要什么都没有概念!
点评回复

使用道具 举报

发表于 2008-3-8 08:45:34 | 显示全部楼层
前面的回复.我是从把LIB当做一个未知的程序来理解.即这个程序不是与整个工程一起编译的.
如果能和整个工程一起编译,就可以将整个(RO,RW,ZI)打成一个bin包,注意要有scatter 文件中定义.不需要MMU就可以实现动态运行.
点评回复

使用道具 举报

发表于 2009-11-19 15:27:05 | 显示全部楼层
在ARM端的ADS里面生成一个二进制文件
点评回复

使用道具 举报

发表于 2010-3-30 01:27:27 | 显示全部楼层
只要看懂下面的汇编就可以实现了.我已经做好了动态加载了.

CODE32
AREA |aOUR_ENGINE_AS|, CODE, READONLY
IMPORT dl_main
EXPORT aOUR_extern_main_demo1
IMPORT dl_main
IMPORT |Image$$RO$$Limit|
aOUR_extern_main_demo1
        stmfd    r13!,{r14}
        sub r14,pc,#12
        ldr r2,=|Image$$RO$$Limit|
        add r2, r2,r14
        str r2,sp_bf
        blx dl_main
        ldmfd    r13!,{lr}
        bx r14
        bx r14
EXPORT sp_bf
sp_bf       
        bx r0
        bx r0
        bx r14
EXPORT R9_bf
R9_bf       
        bx r14
        bx r14
        bx r14
EXPORT KEEP_SP
KEEP_SP
        str r9, R9_bf
        ldr r9,sp_bf
        bx lr
EXPORT        LOAD_SP
LOAD_SP
        ldr r9,sp_bf
        bx lr       
EXPORT        REAL_SP
REAL_SP
        ldr r9,R9_bf
        bx lr
EXPORT        GET_SP
GET_SP
        ldr r0,sp_bf
        bx lr
END
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-1-24 11:04 , Processed in 0.047371 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表