作者andywhuang (伟少)
看板ASM
标题[问题]不同的bin档案如何互相呼叫其中函式
时间Tue Mar 22 18:23:38 2011
请教高手们
目前我正在撰写ARM的C code
针对目前的产品有一些需求如下:
因为必须将程式区分成system部分跟library部分
system被包在一个bin中
负责执行整个系统流程
包括透过usb与pc的应用程式互动
然後如果有需要必须去呼叫在另外一个bin档案内的其他functions
为什麽要分成两个bin是因为library部分要给其他人写
且因为不管是system 或是 library出错只要个别编译就好
如果包成1个bin 万一其中出错则都必须重新编译
library部分可能会有很多的bin档案 分别对应到不同的需求
system只要动态载入需要的library到sdram执行即可
我用的是iar EWARM CPU是ATMEL AT91SAM9G45
问题来了 现在我要怎麽样才能正确呼叫到在另一个bin中的function
我想过用1个办法 就是用固定位址的方式来作 在library中所有的function
都用@ 定义一个固定的位址 像这样 void a()@"FUNC"
然後在iar link配置档中定义func在固定的位址中
接着在system中利用h档预先定义所有包在另一个bin中的function中的固定位址
利用函式指标直接呼叫 可是我在想这样做真的可以作吗?
应该还得考虑到将stack定义到同一段位址中
想很久不知道能不这样做 请大家指点我一下 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.22.55
1F:推 PCIT:我的想法是建一个lookup table在library 03/22 22:04
2F:→ PCIT:system开始之後dynamic check lookup table,(looping) 03/22 22:05
3F:→ PCIT:然後把所有的functions都加到function pointer 03/22 22:05
4F:→ PCIT:system要用时,就直接call function pointer 03/22 22:06
5F:→ PCIT:另,如果function pointer = NULL,你就知道这个function 03/22 22:06
6F:→ PCIT:还没implement 03/22 22:07
7F:→ andywhuang:感谢1楼的回答 03/23 12:40
8F:推 fourier49:你写的方式是可行的 我有用过 但是回去要很小心 05/25 20:59