关闭
关闭
首页 > 嵌入式软件 > vxworks

现在我们的工作中,应用程序一般都是和BSP联编,然后将vxworks_rom.bin烧到班子里。在BSP启动后,调用应用程序的函数的。

本文引用地址: http://embed.21ic.com/software/vxworks/201604/41164.html

但是这样有个问题,就是应用程序和BSP结合的太紧密了。BSP开发者得将BSP代码给应用程序开发者,或者应用程序开发者得将应用程序编译后的.a文件给BSP开发者,才能完成程序的升级!

那么下面的方法是我这两天弄出来的,可以将应用程序和BSP开发分离的一个办法。只要开始将接口约定好就可以了!还不是很成熟,我也还没有正式在项目中使用,但是我相信这是一个不错的选择!

首先,要建立一个文件系统,TFFS的文件系统就可以。磁盘大小只要可以放的下应用程序编译后的文件就好了。这步就不赘述了。

然后,在BSP工程的usrApp中添加下载应用程序模块和启动接口程序的代码。下面主要说明这步,代码如下:

#include "loadLib.h"

#include "stdio.h"

#include "taskLib.h"

#include "ioLib.h"

extern SYMTAB_ID sysSymTbl;

void usrAppInit (void)

{

#ifdef USER_APPL_INIT

USER_APPL_INIT; /* for backwards compatibility */

#endif

FUNCPTR taskEntry=NULL;

SYM_TYPE *pType;

intfd=open("/tffs0/appProj.out",O_RDONLY,0);

if(fd==NULL)

{

printf("/nopen project fail../n");

return;

}

if(loadModule(fd,LOAD_ALL_SYMBOLS)==ERROR)

{

printf("/nload module fail.../n");

return;

}

if(symFindByName(sysSymTbl,"appEntry",(char* *)&taskEntry,pType)==ERROR)

{

printf("/nfind symbol fail.../n");

return;

}

taskSpawn("entry",100,0,1024,taskEntry,0,0,0,0,0,0,0,0,0,0);

/* add application specific code here */

}

主要代码。只要应用程序将升级后的工程编译成.out文件,上传到磁盘/tffs0中,就可以了!当然,应用程序的入口函数appEntry不能变。

最后,这段代码如果之间运行,可能会遇到一些问题:

1.loadMoudle失败,报错Relocation value doesnot fit in 24 bits。这是因为函数在内存中的位置超出了跳转的最大距离(一般跳转指令是24bit,32M).为了解决这个问题,按如下步骤:

在应用程序的工程中选择"Builds"->"default"->"c/c++complier",在后边加入-mlongcall(GUN)或者-Xcode-absolute-far(diab),点击OK.

把这个编译出来的.out文件上传到文件系统。

2.symFindByName失败。这个原因可能是因为应用程序的工程是cpp文件,也就是c++文件。c++编译出来的文件,符号表的入口和C 不同,所以找不到。如,同样的entry(void,int)函数,C编译出来就是entry,而C++可能是entry_Fvi,这个由于不同的编译器而不同。解决这个问题,有两个办法:

(1).入口函数所在的文件,不要用cpp文件,全部改用c文件。

(2).cpp文件中的入口函数包含在external "C" {}中。

换一批

延伸阅读

[真心话] Nokia 6将榨干诺基亚最后的品牌价值

Nokia 6将榨干诺基亚最后的品牌价值

进入2017年以来,诺基亚复活的消息此起彼伏,关于诺基亚回归的报道也是铺天盖地,最终由京东商城一锤定音:诺基亚N6将于1月在京东首发收发机,定价1699元。......

关键字:Nokia 6 品牌 诺基亚

[新鲜事] 高通宣布推出全新 VR 头显参考设计

高通宣布推出全新 VR 头显参考设计

高通正在推出针对 VR 头显制造商的加速器程序,发布全新 VR 头显参考设计套件,并与手部追踪公司 Leap Motion 合作。这种参考设计,具有 Oculus Rift 或 HTC Vive 没有的功能,包括一体化无线设计,无需电缆或外......

关键字:高通 VR 头显

[新鲜事] 最多599元?诺基亚又一款新机曝光:配置太亮了

最多599元?诺基亚又一款新机曝光:配置太亮了

诺基亚已经多次预告,MWC 2017上他们会推出新品,除了大家期待的新旗舰外,似乎还有别的产品,比如下面这款。......

关键字:诺基亚 手机

[新鲜事] 话说,你想用智能音响打语音电话吗?

话说,你想用智能音响打语音电话吗?

微信、Skype 等即时通讯应用普遍支持的网络语音通话功能,可能会变成智能音响上的一个服务。......

关键字:智能音响 语音电话
条评论

我 要 评 论

网友评论

大家都爱看

  • 华为的优势,就是自家的各种自研芯片

    CPU即中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。

    2017-08-16
  • 你不知道Ryzen芯片有多火?来看看AMD的股票吧

    据外媒报道,美银美林认为,AMD最新的Ryzen芯片可能会引发一波销售浪潮,进而推动该股继续上涨。它认为AMD股票还有40%以上的上涨空间。

    2017-08-16
  • 国产芯片:厚积薄发,强势崛起

    关于国产芯片,是近几年才有崛起的势头,可是在几年之前,国产芯片还处于“沉睡”的状态,尤其是手机芯片,几乎大部分都依赖进口,而且国外的市场几乎被高通和联发科所垄断,也就展讯还在市场边…

    2017-08-16
  • 为了数据安全 大疆无人机增加隐私飞行功能

    大疆周一表示,在美国陆军因为“网络缺陷”而要求其成员停用大疆无人机后,这家中国无人机制造商将加强无人机的数据安全性。 大疆政策和法务副总裁布伦丹&middot…

    2017-08-15
  • Intel代工 展讯发布14nm SC9853I手机SoC

    SC9853I采用的Intel的14nm FinFET制程,架构为8核64位Airmont架构,主频1.8GHz,GPU为Mali-T820 MP2,号称面向799~1299元档次的手机。…

    2017-08-15