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

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

但是这样有个问题,就是应用程序和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" {}中。

换一批

延伸阅读

[新鲜事] 自动结账、打包,松下的这个机器人收银员已经实装了

自动结账、打包,松下的这个机器人收银员已经实装了

不少科幻作品中都描绘了机器人代替人类劳作的画面,而在现实当中,日本也在不断努力让机器人为人们生活的方方面面提供方便。近日,松下在一家罗森(Lawson)连锁便利店装备了一台最新的收银机器人——Reji R......

关键字:机器人 松下 电子

[新鲜事] 三星掌门人李在镕被批捕,三星回应:确保在未来的庭审中还原真相

三星掌门人李在镕被批捕,三星回应:确保在未来的庭审中还原真相

据韩国媒体报道,由于卷入了韩国总统朴槿惠及其亲信的腐败丑闻,并遭到韩国检方的行贿指控,三星集团实际掌门人李在镕(LeeJae-yong)在周五正式被批捕。......

关键字:三星 李在镕

[真心话] 中国缺少什么样的电子工程师?工程师的出路在哪里?

中国缺少什么样的电子工程师?工程师的出路在哪里?

电子工程师们,你还在座位上埋头苦干,跟与一堆数据跟程序打交道吗?这样下去不行,现在生活想过得有滋有味,靠工资不如靠收入,做技术是吃脑力饭,压力大,头发大把大把掉,工资永远那个数,跳来跳去无法突破自我。......

关键字:中国 电子工程师

[新鲜事] 欠联通8000万 虚拟运营商或是改革试验品

欠联通8000万 虚拟运营商或是改革试验品

日前,虚商分享通信被曝出拖欠工资,随后有消息称,该公司因欠债8000万已无法支撑。......

关键字:联通 虚拟运营商 分享通信

[新鲜事] 从刷脸吃饭开始,你身边的场景都智商在线了

从刷脸吃饭开始,你身边的场景都智商在线了

技术进步的速度甚至连段子手都跟不上了,“明明可以刷脸吃饭,却偏偏要靠才华”,生物识别技术在人工智能和大数据的支持下飞速进化,刷脸作为常见的生活场景越来越成熟了,刷脸如刷卡几乎已经是一种趋势。......

关键字:人脸识别 人工智能

[新鲜事] 意法半导体晶圆厂发生火灾!拖累iPhone 8

意法半导体晶圆厂发生火灾!拖累iPhone 8

上周意法半导体(STMicroelectronics)晶圆厂失火,最新款iPhone的生产进度恐怕将受连累。......

关键字:意法半导体 iPhone 8 3D传感器

[新鲜事] 索尼EXTRA BASS无线音响和耳机公布发售信息,三月份上市

索尼EXTRA BASS无线音响和耳机公布发售信息,三月份上市

近日索尼官方公布了EXTRA BASS无线音响的发售信息,同时公布的还有一些 EXTRA BASS 无线耳机。......

关键字:索尼 EXTRA BASS 无线 耳机
条评论

我 要 评 论

网友评论

大家都爱看

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

    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