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

换一批

延伸阅读

[新鲜事] 苹果将与印度政府官员商讨在当地生产iPhone

苹果将与印度政府官员商讨在当地生产iPhone

据印度媒体报道,苹果公司高管将于1月25日会见印度政府各部部长,商讨在当地生产iPhone事宜,并寻求相关优惠政策。......

关键字:苹果 印度 iPhone

[真心话] 一年巨亏5亿的罗永浩,还能翻身吗?

一年巨亏5亿的罗永浩,还能翻身吗?

老罗已经尽力了,但创业从来都不是有付出就必有回报。根据成都尼毕鲁科技9月19日的披露,其投资3000万元占股1.13%的锤子科技2015年净亏损4.6亿元,2016年上半年亏损1.9亿元。老罗交出的这份成绩单,投资人看了肯定会......

关键字:罗永浩 锤子科技

[新鲜事] 因拖欠FF91 VR视频制作费用 法拉第未来坐上被告席

因拖欠FF91 VR视频制作费用 法拉第未来坐上被告席

本月早些时候召开的CES大展上,由乐视投资的法拉第未来(Faraday Future)向公众展示了首款量产车FF91。......

关键字:法拉第 VR视频

[真心话] 人体是最安全的能量源,那么如何利用人体来供电?

人体是最安全的能量源,那么如何利用人体来供电?

用电池作为电源的设备是目前最多的方式,但它是一种低效、昂贵、占体积的方法,而人体本身具有可用的“取之不尽”的能量源,是一种最安全、最方便的能源。......

关键字:能源 人体供电

[新鲜事] 三星第四季度盈利大涨,半导体和显示屏产业居功至伟

三星第四季度盈利大涨,半导体和显示屏产业居功至伟

1月11日消息,据国外媒体报道,三星称2016年第四季度营业利润大涨17%,这可能意味着三星与苹果在盈利能力方面的差距缩小到有史以来最低水平。据BusinessKorea 1月8日报道称,韩国业界人士称2016年第四季度三星营收和......

关键字:三星 半导体 显示屏

[新鲜事] 工程师睡着了?福特汽车决定将跳过Level 3 转向完全自动驾驶

工程师睡着了?福特汽车决定将跳过Level 3 转向完全自动驾驶

福特汽车将跳过 Level 3 ,直接转向 Level 4 完全自动驾驶,原因是它的工程师在 Level 3 测试时睡着了。......

关键字:福特 自动驾驶

[真心话] 从诺基亚3310看手机业价值观的碰撞,总有一种力量让我们不忘初心

从诺基亚3310看手机业价值观的碰撞,总有一种力量让我们不忘初心

这2017年2月最后一天,手机业两种价值观无意中交错、碰撞。Nokia 3310与一帮高价新品,尤其巴展上不断炫耀的东西,形成了一种错落。......

关键字:手机 诺基亚3310
条评论

我 要 评 论

网友评论

大家都爱看

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

    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