5568|10

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

下装.out文件后能否自动运行函数? [复制链接]

求下装.out文件后能否自动运行函数的方法?
  如:HelloWorld.out中有一个函数名为void Hello(),功能就是打印Hello World!
  我想执行Download 'HelloWorld.out'下装操作后,就自动运行Hello()函数,并打印出Hello World!,而不需要在Shell中运行中输入法sp Hello 才运行函数。
  请问有没有什么方法,如TCL脚本之类的,有请大侠不吝赐教!

最新回复

结贴...  详情 回复 发表于 2008-12-1 09:11
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
哦,不是吧怎么没大侠来啊.
我找到一种替找方案,就是利用TCL脚本或者是WTX协议中的所提供的C函数接口,来运行Hello()函数,等同于Shell中输入法sp Hello().
不知道有没有其它可行方案.....
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
可以把下载和运行写在一个脚本里

例如:run.txt里内容如下
ld(0, 0, "Hello.out")
Hello()

然后在shell下输入




 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
我试一下.....
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
代码可以这么写,再给你解释下,当下载以后会自动加载该符号表到系统中,然后可以通过symFindByName用函数名找到该函数的指针地址,就可以执行了。记得如果你的函数没有加extern "C"编译,会变名字的,会找不到,需找下该函数编译后具体名字。

给分吧,呵呵~~

int fd = ERROR ;
MODULE_ID hModule ;
FUNCPTR taskEntry = NULL ;
SYM_TYPE * pType ;

fd = open("存储路径\test.0",O_RDONLY,0) ;

if (fd==ERROR)
{
  return ERROR ;
}

if ((hModule=loadModule(fd,LOAD_ALL_SYMBOLS))==NULL)
{
return ERROR;
}

close(fd) ;

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

if (status != ERROR)
{
   taskSpawn("test",100,0,30000,taskEntry,
     0,0,0,0,0,0,0,0,0,0) ;
}
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

6
 
symFindByName函数也是需要手动去触发的.
我问得是如何在下装的过程中,就把Hello()函数就运行起来,就像是硬件一加电,软件环境就运行起来啦,不需要手动运行软件环境.
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
这说的就是在程序中自动运行的,是可以的,我用过
把test改成你的Hello函数名字

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

 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
To tech_leopard:
我有几个疑问:
1.这部分代码怎么组织,是在某一个函数里,还是在别的地方?
2.关于"打开文件部分"的代码,看起来与"close(fd)"后面部分代码没有关联.
3.关于"close(fd)"后面部分代码,如果能找到函数地址入口,毋庸置疑肯定是能运行起来的,关键是这部分代码如何被触发.
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
通过脚本进行下载.out和运行试成功了吗

vxWorks有shell startup script,指定一个脚本,启动时就会自动运行该脚本
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
To thomascatlee:
成功,肯定有分。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 
结贴...
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表