首页 > 嵌入式软件 > 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" {}中。

换一批

延伸阅读

[猎聘集] 在阿里,你知道的年薪百万,是这样熬出来的…

在阿里,你知道的年薪百万,是这样熬出来的…

在阿里上班,月入过万,成为众多人眼中羡慕的对象。如今的阿里,有员工4万多人,从开始建立到今天18年里,有6万多人离职,而这些人就撑起了半个中国的互联网,阿里给员工提供的薪酬和福利都是相当不错的,这其中还包括股票和期权,但是,即使这样,还是阻......

关键字:阿里巴巴 工作

[猎聘集] 招不到电子工程师,这锅谁来背?

招不到电子工程师,这锅谁来背?

无独有偶,前一阵,一位某公司招聘负责人表示:“现在硬件工程师很稀罕啊,招了很久都没招到。”话题引发了不少同行的共鸣。......

关键字:电子工程师 硬件工程师

[猎聘集] 西方程序员眼中的东方程序员

西方程序员眼中的东方程序员

你对这些来自东方的程序员有没有一些总结性的看法和观点(比如:他们是否合作,是否能按时提交代码,写出的程序是否有质量?)。依据是什么?......

关键字:程序员

[疯狂史] 我被震撼到了,古法制作CPU !

我被震撼到了,古法制作CPU !

无到有(make something from scratch)一直是工程师的浪漫,例如自行调配出操作系统、自己写系统核心等(如 Linux)。然而在家从无到有打造出“一颗”CPU 就没听过了吧?最近有一位 YouTuber 就在免焊万用电......

关键字:古法 CPU制作
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14