⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vxworks faq.txt

📁 VxWorks中文教程
💻 TXT
📖 第 1 页 / 共 5 页
字号:
VxWorks中文FAQ

前言(Surface):
    随着国内使用VxWorks的用户越来越多,为了方便VxWorkers少走一些弯路,特别推出了中文FAQ,其中
很多的FAQ来自comp.os.vxworks和原创。(很多FAQ都可以在该新闻组找到英文版)  
    文档的FAQ总共分为7大类:
	1.入门FAQ
	2.Tornado工具FAQ
	3.BSP FAQ
	4.文件系统 FAQ
	5.网络 FAQ
	6.VxWorks操作系统 FAQ
	7.其它 FAQ
    基本涵盖了Tornado/VxWorks使用中的主要方面。
    文档组织本身没有逻辑上的关联,经过分类,只是松散的组合在一起,可根据你的需要选择阅读某一部
分。
    为了保持本文档的开放性和可扩充性,欢迎大家把自己曾经碰到过的问题及其解决办法按分类加到文档
里来。在修改本文档时,请把修改记录加到历史记录里。
    欢迎任何人指出文档中的错误之处,请把错误之处发到附录B里的任一个EMAIL里,在此对那些问题的提
出者、回答者以及文档的维护者一并表示感谢!  

当前版本(Current Version):
version 0.1

历史(History):
2002-08-27 wys205  create 0.1 version

目录(Content):
1.入门FAQ
2.Tornado工具FAQ
2.1 编译器和链接器
2.2 调试器
2.3 FTP
2.4 主机工具
2.5 安装
2.6 MAKEFILE
2.7 工程
2.8 目标机服务器
2.9 Shell
2.10 Telnet
2.11 Tornado
2.12 版本控制
2.13 可视化集成
2.14 Windsh
2.15 WindView

3.BSP FAQ
3.1 不同BSP
3.2 处理器
3.2.1 Power PC
3.2.2 I960
3.2.3 MIPS
3.2.4 ARM
3.2.5 x86
3.3 Bootstrap
3.4 配置你的VxWorks
3.5 VME
3.6 VxWorks环境 environment
3.6.1 usrSerial.c
3.6.2 prj_vxworks.tcl
3.7 PCI

4.文件系统 FAQ
4.1 Dos文件系统
4.2 Flash文件系统
4.3 Floppy-disk文件系统
4.4 RAM-disk文件系统
4.5 基本文件系统问题

5.网络 FAQ
5.1 配置问题
5.2 ARP
5.3 DHCP
5.4 FTP和TFTP
5.5 PPP
5.5.1 PPP on Windows 95
5.5.2 PPP on Windows NT
5.5.3 PPP on Solaris
5.6 Sockets
5.7 Telnet
5.8 SNMP
5.9 其它网络相关问题


6.VxWorks操作系统 FAQ
6.1 C++ issues
6.2 Communication problems
6.3 Interrupts
6.4 LoadModule problems
6.5 pthreads
6.6 Reboot
6.7 Semaphores
6.8 Simulator (VxSim)
6.9 Task related items
6.10 Time/timer related items
6.11 Wind Web Server related items
6.12 Zinc/windML related items
6.13 Other items
6.14 VxWorks AE issues


7.其它 FAQ
7.1 Hard delay
7.2 Memory leaks
7.3 Corba engines
7.4 Web servers
7.5 NTP usage
7.6 Performace / Benchmarks
7.7 SNMP
7.8 Lint
7.9 Encryption
7.10 其它

附录A.一些有用的连接
附录B.维护


1.入门FAQ
1.1 概念
1.1.1 最近刚开始学习VXWORKS,越看越迷糊:
1)BSP,bootImage,VxWorksImage三者的关系是什么?BSP是BootImage的一部分还是VxWorksImage 的一部
分?对于可以自启动的系统是不是三者合在一起生成一个VxWorks Image?
2)应用程序代码是和VxWorks内核一起编译生成一个VxworksImage吗?
以上问题是针对于代码存放在rom介质上的系统(如flash)。希望各位大侠不吝赐教!谢谢。。。

A:BSP 是用来支持你的硬件的软件, 它包含在你的VxWorksImg里面.
对于ROM启动的系统来说, BootImg是ROM里代码的第一部分, 用来
在开机时首先运行. 如果你的所有代码都在ROM上, 则引导程序把
VxWorksImg拷贝到系统内存, 然后再跳转的系统内存去执行.

BSP的作用屏蔽不同的硬件结构(如CPU和外围芯片)向VxWorks的Kernel提供
它所需要的一个统一的接口调用(如时钟)
(by 泡泡)

bsp: 板级支持包,主要完成目标硬件的初始化工作,提供操作系统一个统一的接口,负责硬件操作,
如中断处理,启动,停止,等工作。Bootimage:引导镜像,我向如果把boot翻译成启动不是很是当的说法,
这是一个引导程序,负责把目标系统环境初始化,最小的程度,如启动了串口,或者网络接口,可以使用这
些接口现在程序,与主机通信,然后获取你需要的OS-vxworksimage vxworksimage-包含vxworks内核以及
各种组件的镜像,也就是object images,这是真正的操作系统,通常bootimage负责获取这个镜像,然后跳
到镜像所在的位置开始执行。(by hongwind )

1.1.2 如何学习VXWORK,PSOS入门?
A:初次上站,感觉大家水平一般,入门级选手较多,实时多任务操作系统和以前大家使用的低端产品,如51
机在原理上是不同的,因此大家最好先学习多任务操作系统的原理。否则无法深入学习。 
推荐一本书:坦尼博姆著:《操作系统》,各地都有的卖,主要是讲MINIX的原理,其实就是UNIX系列操作
系统的实现原理,由于VXWORKS和PSOS都是这个系列的操作系统,因此理解了这本书,也就理解了它们的工
作原理。必将事半功倍,而且对你理解WINDOWS的工作原理也很有好处。  (by bruin)


1.2 环境
1.2.1 斑竹tornado都是支持那些cpu??能列一下吗或哪里能找到
斑竹tornado都是支持那些cpu??能列一下吗或哪里能找到!!! 
A:开发平台: Windows NT, Sun Solaris, SunOS, HP-UX, Win95 
支持处理器: x86, 68k, PPC, CPU 32, i960, SPARC, SPARCLite, SH, ColdFire, R3000, R4000, 
C16X, ARM, MIPS ... 

1.3 编程
1.3.1 vxworks,bsp中有些定义怎么找不到用到的地方,还有些定义找不到在哪里定义过了,比如
MAMR_PTA_SHIFT,哪位大侠给解答一下。不胜感激! 
A:在h/drv/multi/ppc860Siu.h里。看代码还是用Source Insight
(by vxfree)


2.Tornado工具FAQ

2.1 编译器和链接器
2.1.1 当我把多个目标文件链接成一个时,出现了一个错误:
ldppc:built in linker script:43: syntax error 我怎么样才能消除这个错误?
A:请确定你的链接器使用了-r参数。
(From: weber.dirk@t-online.de)

2.1.2 我怎样使用新版本的编译器?
A:参看如下连接,有一个PPC的编译器
http://www.newgcc4vxworks4ppc.cjb.net/

2.1.3 当用另一个编译器编译代码时,得到更多的错误和警告,怎样才能让GCC生成更多的警告信息?
A:首先用-Wall参数打开所有警告开关;另一种生成更多报告的方法就是把文件看作是C++文件,参数为 
-x c++.(From: Claudio Ortega, cortega@sinfomed.org.ar)

-Wall不能真正打开所有的警告,我采用由Bruce Evans推荐的参数
 而且在FreeBSD环境下,BDECFLAGS变量比较固定。

# BDECFLAGS are a set of gcc warning settings that Bruce Evans has suggested
# for use in developing FreeBSD and testing changes.  They can be used by
# putting "CFLAGS+=${BDECFLAGS}" in /etc/make.conf.  -Wconversion is not
# included here due to compiler bugs, eg: mkdir()'s mode_t argument.
#
BDECFLAGS=      -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align \
                -Wcast-qual -Wchar-subscripts -Winline \
                -Wmissing-prototypes -Wnested-externs -Wpointer-arith \
                -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings

This set of flags is *much* pickier than -Wall alone. 
(From: W Gerald Hicks)

2.1.4 当编译我的模块时一切都是好的,但是当我试图下载时得到一个错误:missing symbol "__eabi"?
A:在你的模块里可能有个main函数,根据PPC "extended Application Binary Interface" (eabi)
标准,main函数必须调用__eabi函数,该函数为运行你的程序设置必要的运行环境。
    由于这个原因GNU编译器在main函数里插入 __eabi函数。
    Tornado不提供该函数,因为在实时环境下,你不必写main函数。VxWorks在应用程序运行前已经设置
好运行环境了,不再需要main函数了。
(From: Ilia, iliab@telegate.co.il)

2.1.5 我生成了2.95.2版本的编译器,一切正常,但当我开始链接我的映象时,出现了错误,下面是我
链接ctdt表时的错误:
ctdt.o(.data+0x3c):fake: undefined reference to `global constructors keyed to 
_constructor_name_
... 许多类似的错误,有谁见过这种错误吗?

A: 该问题是由gcc(ver2.7.2-2.95.2)试图改变它得到静态构造函数的方法引起的。它不再对每个构造静
态对象的模块消除函数,该方法是vxworks在编译链接过程中采用的方法。
你可以按如下修改gcc 2.95.2源代码后,恢复原先的操作。
in [source code dir]/gcc/config/arm/vxarm.h, at the very end, add:- 
/*     More DK patches: we undef these two in order to force the  */
/*  compiler to output our static constructors and destructors    */
/*  in the fashion to which it is accustomed....                  */

#undef ASM_OUTPUT_CONSTRUCTOR
#undef ASM_OUTPUT_DESTRUCTOR

/*     This one is so that GLOBAL_THING gets a $ in it's name     */
#undef NO_DOLLAR_IN_LABEL

现在更换到你的编译目录,敲入make clean命令,然后重新编译和安装编译器。我采用这种方法是可以的
,PPC版本的。它使得编译器使用老的方法来making munchable constructors。
希望对你也有帮助。
(From: Dave Korn)

2.1.6 在我编译时,我在编译窗口看到如下输出:
nm386 -g partialImage.o @B:\Sources\Components\Common\Common_Geni_Test\Src\prjObjs.lst | \
wtxtcl D:\Tornado\host\src\hutils\munch.tcl -asm 386 > ctdt.c
   ...
cc386 -nostdlib -r -Wl,-X  partialImage.o ctdt.o -o VxWorksGeniServerTestExe.out
最后一步(linking partialImage.o to ...out)花了很长时间(半个小时),谁有解决办法?
A: 这个可能是munching过程,而不是链接,花了半小时。有人曾贴了一个小窍门来加速。
在munch命令管道里使用"grep GLOBAL"如:

nm386 -g partialImage.o @B:\Sources\Components\Common\Common_Geni_Test\Src\prjObjs.lst 
| grep GLOBAL | \
wtxtcl D:\Tornado\host\src\hutils\munch.tcl -asm 386 > ctdt.c

(From: Dave Korn)


2.1.7 怎样定义一个没有空洞的结构。
Q: How do define a structure without holes in it?

A: 我在vxworks中使用GNU编译器
struct ex {
INT8  source;
INT32 txSize;
INT32 datSize;
INT16 cmd;
} __attribute__ ((packed));

typedef struct ex PackedStruct;
注意:如果可能,避免使用-fpack-struct编译器开关。我门最近移除了这个选项,使得我们的C++程序提
高了30%-100%的性能。这是因为每次存取结构或类里多字节值时,都是一个一个字节操作的。可以使用
__attribute__ ((packed)) 方法代替。
(From: Mark Fanara, mfanara@home.cNOSPAMMom, and Francisco Pataro, fpataro@dnaent.com)


2.1.8 我怎样在一个C程序文件里调用一个C++函数?

A: 如果你想在一个C程序文件里调用一个C++函数,C++函数必须用extern "C"声明;否则编译器将破坏函数
名,把参数类型说明加在函数名末尾,并返回该函数。
(From: Dave Korn)

2.1.9 -fvolatile开关真的需要吗?
A: WRS建议我们在编译kernel/BSP时,使用-fvolatile开关。它通常缺省打开某个target/h/make/目录下的
文件。
    我们也在我们的应用程序编译过程中使用-fvolatile开关,因为我们参考一些tornado的makefile。
当我们移除该开关后,就碰到一些微妙的BUG,如果你编写驱动程序应当小心。
    -fvolatile开关使编译器生成非常conservative的代码。通过指针使变量值增加(p->x++)不可能如你
想象的在一条指令里完成(68k example):

    addql #1,a0@(8)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -