这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 求助怎样动态加载目标模块

共10条 1/1 1 跳转至

求助怎样动态加载目标模块

菜鸟
2006-04-13 01:06:34     打赏

我有一个应用程序模块sample.out。要是将它和VxWorks做在一起,在ursAppInit.c中添加一个taskSpawn函数,就可以实现vxWorks启动之后,自动发起一个任务,运行sample.out。但这样做生成的VxWorks会很大,我听说可以在usrAppInit.c中调用别的函数,可以将vxWorks和sample.out分开,vxworks启动之后,手动输入sample.out,系统会到c盘根目录下找sample.out,然后运行,请问这个怎么实现?




关键词: 求助     怎样     动态     加载     目标     模块    

菜鸟
2006-04-13 01:20:00     打赏
2楼

去查查loadLib,里面的函数可以实现你的需求。


菜鸟
2006-04-13 01:25:00     打赏
3楼

谢谢!我去试试

[align=right][color=#000066][此贴子已经被作者于2006-4-12 17:26:29编辑过][/color][/align]

菜鸟
2006-04-17 17:05:00     打赏
4楼
弱弱问一下,怎么查loadlib,msdn好像没有啊

菜鸟
2006-04-24 19:18:00     打赏
5楼

我用urAtaConfig搭接硬盘,想找一个文件,然后用loadmodule()添加这个文件,但是找不到,怎么办?


菜鸟
2006-04-25 19:28:00     打赏
6楼
还有可以使用脚本,vxworks启动后运行脚本。

菜鸟
2006-04-25 19:38:00     打赏
7楼

无限电波,我不知道怎么使用脚本


菜鸟
2006-04-28 21:44:00     打赏
8楼

>我用urAtaConfig搭接硬盘,想找一个文件,然后用loadmodule()添加这个文件,但是找不到,怎么办?

希望你说的这个文件是vxworks目标文件, 而不是其他类型的文件


菜鸟
2006-04-29 00:16:00     打赏
9楼
vxWorks文件和其他类型的文件有什么不同,.out文件呢?

菜鸟
2006-04-29 00:57:00     打赏
10楼

试试这个代码,应该可以load 吧!

#include <vxWorks.h>
#include <stdio.h>
#include <ioLib.h>
#include <loadLib.h>
#include <symLib.h>
#include <taskLib.h>
#include <moduleLib.h>
#include <nfsLib.h>
#include <nfsDrv.h>
#include <netDrv.h>


extern SYMTAB_ID sysSymTbl;

int loadTest()
{
int fd = ERROR;
int status = ERROR ;
MODULE_ID hModule;
FUNCPTR taskEntry = NULL;
SYM_TYPE * pType;


fd = open("/tffs/project0.out",O_RDONLY,0644);

if (fd==ERROR)
{
printf("can not open file.\n");
return ERROR;
}
else
{
printf(" file opened.\n");
}


printf("before loadModule\n");
if ((hModule=loadModule( fd,LOAD_GLOBAL_SYMBOLS))==NULL)
{
printf("loadModule error = 0x%x.\n",errno);
return ERROR;
}

close(fd);


status = symFindByName(sysSymTbl,"hello",(char **)&taskEntry,pType);

if (status==ERROR)
{
printf("symFindByName error=%d\n", errno);
return ERROR;
}
else
{

printf("taskEntryr=0x%x, type=%d\n.",(int)taskEntry,(int)*pType);
}

status = taskSpawn("test",100,0,30000,taskEntry,0,0,0,0,0,0,0,0,0,0);

if (status==ERROR)
{
printf("taskSpawn error=%d\n",errno);
return ERROR;
}
return OK;
}


共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]