用过vxWorks的朋友来看下.

femalelover 2008-05-31 09:40:11
在vxWorks下用tornado编程, 问两个最初级的问题:
1, 默认情况下, tornado能编译C++代码, 但是在vim中装载.O文件时, 会失败, 怎么搞定?
2, 在windows下, tornado编出.O之后, 上载到到单板中, 单板运行vxWorks, 报错说 fit 24 bits ...., 怎么搞定?

THANK YOU!
...全文
118 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
femalelover 2008-06-01
  • 打赏
  • 举报
回复
maplewasp, 我的tornado是2.2, CPU是PPC.

顺便问你一下, 你上贴的帮助文档是哪里来的? 多谢.
chlaws 2008-06-01
  • 打赏
  • 举报
回复
UP
独孤过儿 2008-06-01
  • 打赏
  • 举报
回复
只听过,没用过的人飘过~~~
maplewasp 2008-06-01
  • 打赏
  • 举报
回复
先把你的Tornado 的版本和什么bsp说一下,要不然很难猜的。
对于问题
1: 可能你的vim中缺少C++的组建,加上相应的C++组建,然后重新编译一个vim并启动它(不用默认的vim),然后再下载你的.o
或者新建一个vim, 加上相应的C++组建的同时把你应用程序加到这个vim project中,如果能编译过去就OK啦!
2:

Dynamic loading of modules fails with 24-bit relocation error.

--------------------------------------------------------------------------------

SPR: N/A
Patch: N/A

--------------------------------------------------------------------------------

Host: N/A
Architecture: PowerPC
BSP: All
Product: VxWorks Version: N/A

--------------------------------------------------------------------------------

Problem Description
Dynamic loading of object modules fails with the following error:

Relocation value does not fit in 24 bits

--------------------------------------------------------------------------------

Problem Solution
PowerPC Embedded Application Binary Interface, Version 1.0 System V Application Binary Interface, PowerPC Processor Supplement (Sept. 1995)

Reproduced failure on mv1604 board 64MB of RAM while loading an object module with external function references.


The error message above is known to appear while loading modules with external function references on PowerPC targets having more than 32MB of RAM.

The limitation is due to how direct function calls are implemented for the EABI (Embedded Application Binary Interface). The EABI is a standard we follow for the PowerPC architecture and it may be downloaded from the IBM web page. The EABI is based upon the SVR4 ABI, which suggests that all direct function calls be made with the 'bl' instruction. Because the addressing range of the 'bl' instruction is /- 32MB, all direct function calls referencing functions defined more than 32MB away will fail with the above relocation error.

Calling functions indirectly (i.e. through a function pointer) removes the 32MB limitation as 32-bit absolute addressing is used in place of 26-bit PC relative addressing, thus giving you access to all routines in the 4GB address space. Asking people to rewrite their code to make all external function calls through pointers is not very practical and may not be necessary in all cases.


The following can be used to work around this problem.
1) Use the -mlongcall flag when compiling your code or use the "#pragma longcall" directive to suggest certain function calls be made through a function pointer.

If using versions of Tornado 1.0.x there is a patch to use this workaround. The patch is SPR 22767. Later versions of Tornado do not require any patch.

"#pragma longcall" gives a suggestion to the compiler to call a set of functions through a function pointer (using 32-bit absolute addresses). This should be used primarily for external functions, as local functions are less likely to reside far from your module.

2) If your code does not require constant loading and unloading of object modules at runtime, you can also set LOCAL_MEM_SIZE to 32MB and set aside the rest of memory as USER_RESERVED_MEM (i.e. user reserved memory) and use memAddToPool to add the rest after your object modules have been loaded. No further object modules should be loaded after the memAddToPool has been performed.

Note: Setting aside user reserved memory is outlined in detail in Wind Tech Note 41 (WTN41).


maplewasp 2008-06-01
  • 打赏
  • 举报
回复
http://www.windriver.com/support/resources/tornado22_bulletin.html
maplewasp 2008-06-01
  • 打赏
  • 举报
回复
我也是从网上找的,你这个问题以前看到过。不过我用的是for x86的,对ppc的不熟悉呀。
VxWorks 有一个SPR List,也就是官方出的关于Bugs和对应的解决方案(当然有的也可能是还没有解决的Bug)。
WindRiver主页上有得下!
Erorr 2008-05-31
  • 打赏
  • 举报
回复
下载前有没有选定目标服务器?
根据使用的操作不同可以分为基于windows平台和基于Linux/bsd平台开发的软件路由器,基于Windows平台的软件防火墙比较常见的有ISA Server、Winroute Firewall等,这些软件都是商业化的,通常根据授权用户数不同收费而不同,购买正版的软件防火墙的费用对许多中小型企业来说无疑是一笔不小的开支。有而基于Unix/Linux平台的软件防火墙大家一般接触较少,受益于开放源码运行,目前基于Unix/Linux平台的软件防火墙如雨后春笋般不断推出,这些软件防火墙大多是免费的,常见的有海蜘蛛、RouterOS、m0n0Wall、SmoothWall、Ipcop、CoyoteLinux 软件路由器 [1]等,这些系统共有的特点是一般对硬件要求较低,甚至只需要一台486电脑,一张软盘,两块网卡就可以安装出一台非常专业的软件防火墙,这对很多有淘汰下来的低档电脑的朋友来说,意味着拿一台淘汰的电脑,安装一套免费的防火墙软件,不花一分钱就DIY出一台专业的防火墙,而且这些系统自身也包含了NAT功能,同时可以实现宽带共享,这意味着这台免费的防火墙其实也是一台出色的宽带路由器,这是多么令人激动的事情。 三、软件路由器功能    软件路由器 [2]不同的软件路由器功能不一样,绝大部分基于Linux/bsd的免费软件路由器功能并不比商业的差,而且比商业的功能还要强大。 四、性能和稳定性   目前常见的硬件宽带路由器,绝大部分都是用软件来实现的,跟软件路由器是一样的,而且软件路由器一般 intel82575 软路由网卡 硬件配置要比硬件的宽带路由器配置高,所以某些情况下速度比几千上万元的硬件路由器稳定还要快。至于软件路由器的稳定性,受益于稳定的Linux和BSD内核,软件路由器的稳定性非常好,我见过最长时间不用重启的软件路由器,已经有一年多了。 五、所需配件   一台486以上,8M内存以上的普通PC,再加两块网卡就可以了,有些软件路由器如CoyoteLinux只需一张软盘就可以了,对于网卡没有特殊的要求,常见的Rtl8139 和530tx,3COM905B-TX,Intel82559 服务器网卡等都可以,不过根据我们的经验,一台工作良好的软件路由器,网卡一定要好,所以我们会推荐你使用iNTEL或3COM品牌的网卡,特别是Intel82559效果非常不错。如果经验条件许可,购买一个电子硬盘或CF-IDE转接卡再配上CF存储卡,是不错的选择,这样做出来的软件路由器,可以跟硬件的路由器相比了。 六、发展前景   软件路由器会逐渐占领更多的硬件路市场,软件路由器还不能淘汰硬件路由器,它们的市场定位不同,而且在高端只有硬件路由器才能胜任,但对于一般的应用像网吧、学校、机关等用软件路由器可以获得更高的经济效益。    软件路由器 [3]七、寻找软件路由器   1.Hi-Spider Router 海蜘蛛软路由目前国内最好的中文软路由免费版功能都相当的强大但是有广告,而没有广告的版本需要付费版   2.老牌中文软路由bbiagent,全中文,但需要注册购买   3.Coyote北美土狼,方便好用,负载能力强,一张软盘即可。免费   4.FreeSCO看名字就知道她的能力了,免费的类cisco路由软件。 intel82546 软路由网卡   5.Floppyfw最早的linux LRP项目之一的产物   6.SmoothWall和IPCOP之所以要放在一起,因为他们是用一个内核开发的,功能也不相上下   7.RouterOS这个软件有点争议,号称ISP级软路由,支持多路由协议,实际效果并不如意   8.Fli4l德国的一个软路由,对ADSL支持非常好   9.Clarkconnect偶的最爱,呵呵!功能无比强大。就是体积大了点,象个大胖子   10、红猫综合路由系统,国产,中文软路由系统 八、技术学习   目前比较流行的软件路由器都是国外的,国外软件路由器开发商的官方网站不错的学习地方。 九、是否违法   大部分软件路由器都是开放源码或是软件的,所以学会软件路由器后我们可以给别人安装收取一定的费用,只要心不要太黑就行,另外要心中常挂念教你会的网友,当然象RouteOS/SMOOthwall商业版是收费软件,D版的建议大家不要用,当然要用也可以,最好是自己用就行了,否则出问题后果自负了。 十、好处   软路由的好处有很多,如使用便宜的台式机,配合免费的Linux软件,软路由弹性较大,而且台式机处理器性能强大,所以处理效能不错,也较容易扩充。但对应地也要求技术人员许掌握更多的例如设置方法、参数设计等专业知识,同时设定也比较复杂,而且需技术人员具备一定应变技术能力。同时台式机的硬件配置如果选择不好或不合理,而且担任路由器的功能如果长期工作,

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧