当前位置:文档之家› VxWorks中文FAQ

VxWorks中文FAQ

VxWorks中文FAQ
VxWorks中文FAQ

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 V ersion):

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的编译器

https://www.doczj.com/doc/3410213710.html,/

2.1.3 当用另一个编译器编译代码时,得到更多的错误和警告,怎样才能让GCC生成更多的警告信息?

A:首先用-Wall参数打开所有警告开关;另一种生成更多报告的方法就是把文件看作是C++文件,参数为

-x c++.(From: Claudio Ortega, cortega@https://www.doczj.com/doc/3410213710.html,.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@https://www.doczj.com/doc/3410213710.html,OSPAMMom, and Francisco Pataro, fpataro@https://www.doczj.com/doc/3410213710.html,)

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)

如果采用-fvolatile 开关你会得到:

movel a0@(8),d0

addql #1,d0

movel d0,a0@(8)

movel a0@(8),d0

You can imagine what a C++ application using the "this" pointer everywhere gets compiled into! (From: Chris Varlese, cv@https://www.doczj.com/doc/3410213710.html,)

2.1.10 我链接了许多档案文件,现在链接器在解析文件之间的交叉参考时出现了问题?

A: 试试下面的方法

1、把$(LIBS)替换成$(LD_PARTIAL) -o vxWorks.tmp $(MACH_DEP) usrConfig.o version.o $(LIBS) (在target/h/rules.bsp文件中)。Now LD_PARTIAL is ccxxx, so you need to specify -Wl, --group-start to get cc to pass the argument to ld.

2、Try adding a -Usymbol for each symbol that has to be pulled in early.

3、如果办法2 make ld行太笨拙,生成一个.s文件,包含每个没定义的符号和加到链接里的。

4、如果你工作UNIX下,它应该可能得到ld生成没有定义的所要求的列表。你需要加一个循环,就象下面一

样:

/*这是原文,我翻译不好。

1、$(LIBS) is substituted into: $(LD_PARTIAL) -o vxWorks.tmp $(MACH_DEP) usrConfig.o version.o

$(LIBS) (in target/h/rules.bsp for a non-project build). Now LD_PARTIAL is ccxxx, so you need to specify -Wl,--group-start to get cc to pass the argument to ld.

2、Try adding a -Usymbol for each symbol that has to be pulled in early.

3、If (2) make the ld line too unwieldy, generate a .s file that contains: .extern symbol for

each undefined symbol and include that into the link before the libraries

4、If your building on unix, it ought to be possible get ld to generate the required list of undefines! You need to add a loop! Something like this might work:

*/

[ ! -f undefs.s ] && echo "#" >undefs.s

while

$(CC) -c $(CFLAGS) undefs.s

$(LD_PARTIAL) -o vxWorks.tmp $(MACH_DEP) usrConfig.o version.o \

undefs.o $(LIBS)

$(NM) vxWorks.tmp | grep ' __' | $(MUNCH) > ctdt.c

$(MAKE) CC_COMPILER="-fdollars-in-identifiers" ctdt.o

do

$(LD) $(LDFLAGS) -e $(SYS_ENTRY) $(LD_LOW_FLAGS) -o vxWorks \

dataSegPad.o vxWorks.tmp ctdt.o tad_hook_list.o 2>&1 | tee ld.errs |

while read file undef ref to symbol

do

[ "$undef" = "undefined" ] || continue

[ "$ref" = "reference" ] || continue

[ "$to" = "to" ] || continue

oifs="$IFS"

IFS="'/`"

symbol="`echo $symbol`"

IFS="$oifs"

echo "\t.extern\t$symbol"

done | sort -u - undefs.s >undefs.new

cmp -s undefs.s undefs.new && break

mv undefs.new undefs.s

done

cat ld.errs

当然它需要另一系列的ESC和; \在每一行,以使得可以在make下运行。

(我也重新构造了原始的rules.bsp内容,我的可能与vxWorks原来的有些不同。) (From: David Laight, dsl@https://www.doczj.com/doc/3410213710.html,)

2.1.11 警告"trigraphs occured"是什么意思?

A: 对Tornado或Vxoworks没什么要做的。

你可能在你代码(也可能在注释里)中有三字符序列--参看K&R (Kernighan & Ritchie; A12.1 - 这是

ANSI 新引进的。-- 但是GNU手册里提示"You don't want to know about this brain-damage..." 使用-ansi或-trigraphs开关,或更好的办法消除任何包含三字符序列'??X'的注释。(参看K&R 书中对X

的定义)。

(From: Michael.Ben-Ari@https://www.doczj.com/doc/3410213710.html,)

2.1.12 为什么编译的最后步骤时间这么长?

生成.out步骤如下:

1) 链接应用程序和库到partialImage.o

2) 使用partialImage.o解析出所有静态类(munch)

3) 编译上面发现的(ctdt.o)

4) 用ctdt.o链接第一个obj文件partialImage.o

我们的应用程序.out文件有10M,但是多数是调试信息,size386返回只有1M。

我们的下载文件生成需要超过5分钟,Step #1-3正常需要35秒!但是step #4 需要很多时间,整个过程需

要5分30秒。

A: 我不知道为什么这样?但是我们在step #4不重新使用partialImage.o 而是重新生成它,整个过程45s.

(是ld386没有对符号过滤进行优化的原因吗?)

我只是修改了tornado\target\h\make\rules.vxApp文件,它包含制作应用程序的规则。我修改了上面

提到的step $4代码如下:

把$(LD_PARTIAL) $(LD_PARTIAL_LAST_FLAGS) partialImage.o ctdt.o -o $@

替换成$(LD_PARTIAL) $(PRJ_OBJS_FOR_LD_PARTIAL) $(PRJ_LIBS) ctdt.o -o $@ (From: Ole Asbjorn Fadum, OleAsbjornF@scanmar.no)

Some more information.

For a variety of reasons I've had to do a few build on a slow system. One bit that seemed exceptionally slow is the 'binToAsm' call (just after the 'deflate' generating vxWorks.Z.s).

This is done by

od -bv $infile |

sed -e "s/^[0-9]*[ ]*//;

s/ /, 0/g;

/^[0-9a-fA-F][0-9a-fA-F]/s/^/ .byte 0/"

(ie use od to generate a list of octal bytes, remove the offset, change the spaces to comma,

add the directive - an extra 0 is added to each number to ensure they are octal).

The above is terribly slow... Slightly faster (under solaris) is:

od -An -v -tu1 $infile | tr ' ' ',' |

sed -e 's/,00*\([0-9]\)/,\1/g;s/^,/ .byte /'

However it is clear that a C program would be even faster... It was still sluggish using

printf, so...

char map[256][4];

for (count = 0; count <= 256; count++)

sprintf( map[ count ], "%d", count );

for (;;) {

count = read( input_fd, buf, BLK_SZ );

if (count <= 0)

break;

for (off = 0; off < count; off++) {

if (off & 15)

putchar( ',' );

else

fputs( "\n .byte ", stdout );

fputs( map[ buf[ off ] ], stdout );

}

}

now the system is spending very little of its time doing this bit (it was a lot slower

than the deflate!). If you are using gcc/gas you can pipe EXTRACT_BIN, COMPRESS, BINTOASM

directly into AS - saving that massive intermediate file...

Build (compiling one small object) just took 6m50 - was over 10 minutes before I played

with binToAsm!

Ages ago I sped up 'munch' - by grepping out most of the symbols it isn't interested in...

nmarm vxWorks.tmp | tee vxWorks.nm | grep " __" | munch > ctdt.c

(I use the symbol table from this stage for a variety of things...)

(From: David Laight, https://www.doczj.com/doc/3410213710.html,ight@https://www.doczj.com/doc/3410213710.html,)

2.1.13 怎样把一个段装载到特定的绝对地址?

A: 我曾包含一个脚本做这些工作,最方便得到这个脚本的方法是使用--verbose开关运行你的链接器,例

如:

"ldarm --verbose". 编辑这个文件加入类似如下的段落,

.text 0x8000 : {

[omit]

. = ALIGN(0x8000);

/* Create a 8k section of all 0xffff, first value is jump. */

FILL(0xffff);

LONG(0xeb000004);

. = ALIGN(0x2000);

[...]

这将把数据放到任何你想放的地方,在程序被链接时新的链接器脚本必须使用-T参数。(From: Bill Pringlemeir, bpringlemeir@https://www.doczj.com/doc/3410213710.html,)

2.1.14 我在使用C++类型的注释时,出现错误,怎样改变它?

A: 一种方法是移除-ansi开关。然而,你可能希望保留你的源代码与ANSI兼容;所以我更喜欢代码能在每

个地方都能编译。传递"-Wp,-lang-c"参数只能使CPP的注释方法可以使用。下面来自预编译器文档

`-lang-c', `-lang-c89', `-lang-c++'

`-lang-objc', `-lang-objc++'

Specify the source language. `-lang-c' is the default; it allows recognition of C++

comments (comments that begin with `//' and end at end of line), since this is a common

feature and it will most likely be in the next C standard. `-lang-c89' disables recognition

of C++ comments. `-lang-c++' handles C++ comment syntax and includes extra default include directories for C++. `-lang-objc' enables the Objective C `#import' directive. `-lang-objc++' enables both C++ and Objective C extensions. These options are generated by the compiler

driver gcc, but not passed from the `gcc' command line unless you use the driver's `-Wp'

option .

(From: Bill Pringlemeir, bpringlemeir@https://www.doczj.com/doc/3410213710.html,)

2.1.15 我在编译时碰到了关于cc1参数/选项的错误?

A: 这个可能是由于安装了Cygwin 或DJGPP引起的。当该版本的编译器在路径里先于Tornado版本Cygwin的

GCC被调用时,这个版本不知道这些参数或选项。这个问题可以通过卸载该软件或确定Tornado版本的编译器

在路径环境变量里是头一个后解决。

2.2 调试器

2.2.1 我怎么使用GDB的plain版本去调试我的目标机,而不用Tornado?

A:gdb compiles 'out of the box' for vxworks.

去cygnus(https://www.doczj.com/doc/3410213710.html,)下载最新的'insight'软件,该软件是gdb + cygnus的UI(译者:可能是用

户接口)运行"configure --target=mips-wrs-vxworks". 把mips改成你的处理器,然后运行make.

这样就可以在安装了cygwin的win32平台上运行了,在UNIX系统平台上也类似。

RDB是windriver以前的调试协议,现在变成WDB了。好象没公布wdb的比特,尽管Tornado 使用了gdb。你可能

不得不配置RDB。包含RDB组件(INCLUDE_RDB) ,并移除WDB组件(remove INCLUDE_WDB),以使得调试可以进

行。(From: Don Bowman, don@https://www.doczj.com/doc/3410213710.html,)

2.2.2 我怎么在创建一个任务后停止它,以使得我能从开始对它进行调试?

A: 菜单tools->options,选择debugger页,选择always halt after attaching a task和Auto Attach to

task -> Always

现在输入一个全局断点(Shift F9),在它碰到断点后,它将从mainTask中分离。

(From: Chacha Hindustani, Gurudev@https://www.doczj.com/doc/3410213710.html,)

2.2.3 为什么当我使用SHELL检查内存时,看不到断点?

A: shell是一个不可中断的任务,所以任何时间它都在运行在无断点的环境。当任务切换引起一个中断的任

务运行时,断点将被重新安装。所以如果查看内存中的断点,只是简单使用d()或l()命令,它在一个中断任

务中可以运行,你将看到一个magic code插入并引起异常。

The shell is an unbreakable task, so all the time it is running the breakpoints are not

installed. When a context switch causes a breakable task to run, the breakpoints will be resinstated.

So, to see the breakpoint in memory simply spawn the d() command or l() command. That will then run in a breakable task, and you should see the magic code inserted to cause

an exception.

(From: John, john_94501@https://www.doczj.com/doc/3410213710.html,)

2.3 FTP

参看5.4

2.4 主机工具

2.4.1 我制作了一个基于rom的VxWorks(vxWorks_rom),但是当我试图用elftobin把它转换成bin格式的

(vxworks_rom.bin),得到了如下错误:

C:\project\Project3\default\elftobin vxWorks_rom.bin

seg1 : Expected load address 0xfff00100 but file address is 0x00111670

我怎样才能把这个文件转成二进制格式?

A: 这个问题只在PPC版本中出现过,问题编号为SPR#8845. 已经有个更新版本的elftobin 解决了这个问题。

请联系你的销售代理或服务工程师。

2.4.2 我怎样写一个WTX工具?

A: 我曾经在Tornado 1.0.1 和Windows NT 4.0环境下写过一个WTX工具,按下面的例子和Tornado API参考

开始,甚至不用关闭build.让它独自按我的步骤工作。就是我使用VC++6编译,但仍有许多东西丢掉了,不

论编译器是什么版本。我知道我能更熟练的使用路径里的环境变量。但有时你只需要它工作,所以下面澄清

一下:

原代码放在$(WIND_BASE)\host\src\wtxtest下,我的安装目录或任何其它人的安装目录里没有例子源码。

按手册源代码按如下修改(大多是信号处理代码修改和增加includes,其它修改在我的程序里说明)

把下面的设置加到工程设置、C/C++, Preprocessor:

include目录(路径按实际情况修改):

C:\Tornado_03\share\src\wtx,C:\Tornado_03\host\include

预处理定义:HOST

把下面的设置加到工程设置,Link,General:

C:\Tornado_03\host\x86-win32\lib\wtxapidll-d.lib

增加环境变量WIND_REGISTRY,设为我的注册位置。

许多痛苦就在发现这个。手册里参考wtxEnvironSet()调用,Windsurf说它是不存在的,但手册为这个不存

在的函数使用提供了许多参考。我的机器上没设置WIND_REGISTRY,所有的Tornado工具都可以不使用它而正

常工作。我的工具不能发现注册,设置它并关闭它(Set it and poof)!注册发现了,工具可以工作。

确信起调用了wtxProbe()去检查注册(并且变量被设置),它可以避免许多痛苦。

我也修改那个工具例子代码。代码在此#代码连接

#http://www.xs4all.nl/~borkhuis/vxworks/wtxSample.c

(From: Christopher A Leddy, caleddy@https://www.doczj.com/doc/3410213710.html,)

2.4.3 当我执行wtxwish时,碰到了一个关于init.tcl文件的错误?

A: 不要忘记把TCL_LIBRARY和TK_LIBRARY环境变量设置为$(WIND_BASE)/host/tcl/tcl and

$(WIND_BASE)/host/tcl/tk. init.tcl文件位于TCL_LIBRARY路径。tk.tcl文件位于目录。

不要使用$(WIND_BASE) 变量,而是实际路径。然后从你的TCL/TK目录执行:wtxwish

(From: DrDiags, drdiags@https://www.doczj.com/doc/3410213710.html,)

2.4.4 我试图在windows NT4.0 SP5环境下运行Tornado2.0带的vxsys程序,碰到一个错误:"the system

try to access directly to the disk, this is not possible ....."

A: vxsys是DOS程序,不能工作windows环境下,你应该从DOS窗口下运行它。(From: Andray Kaganovsky, andreyk@https://www.doczj.com/doc/3410213710.html,)

2.4.5 怎样创建加密密码?

A: 你可以使用Tornado自带的创建密码程序vxencrypt,但是它功能很弱。

sum( p[i] * i ^ i )) * 0x1e3a1d5将HEX字符集转化成ASCII(假定认为你有超过2^32加密密码)。我能

用钢笔和纸来把它做反变换。

你也可以使用loginEncryptInstall()安装自己的加密算法,对一个强密码[1],加密知道使用密码作为KEY。

UNIX传统使用DES,但需要适当的代码。我使用TEA参看https://www.doczj.com/doc/3410213710.html,,因为它是不受妨碍的。

[1] problematical since you have difficulty protecting the password file as none of the

vxWorks filesystems support user-ids.

(From: David Laight)

2.5 安装

2.5.1 当我试图安装GNU源光盘时,出现了一个关于文件aux.h的错误:permission denied。但该文件并不

存在,是怎么回事?

A:在微软SW环境下存在这个问题,"AUX"是保留字,所以任何以"AUX."开头的都不能存在。任何以设备名

开始的文件名也是不能存在的,例如你不能打开一个叫"LPT1.TXT"的文件。

2.5.2 在我安装完Tornado或它的补丁后,我所有的C文件类型都被移除了,而使用Tornado 作为打开该文件

的工具。我怎样能恢复到原来的编辑器?

A:Tornado覆盖注册表中的实体。你可以用下面的.reg恢复。

警告:在使用这个文件前必须小心!首先读一下该文件,如果你不理解它就不要使用它。警告:我在windows95和NT下测试过,如果有时间我会在别的的平台测试的。如果你在98、2000下使用后可

以工作,请告诉我。

首先下载该文件,仔细阅读它,修改它,使她执行你需要的编辑器,然后执行它。你怎么修改它?

一个方法是执行这个文件,然后去浏览器View->Options->File Types.这里你可搜索"C源文件"和"C头文件"。

修改打开命令为你想要的。现在编辑文件c-files.reg,并移除20行后的部分,第一行以[HKEY_CLASSES_ROOT\c_source_file]开始。再次执行,、将把所有文件类型恢复成你选择的。

另一种方法:在你的文件类型里找到你的确省编辑器,把这行COPY到文件c-files.reg中vim 行(BTW:vim

是非常好的编辑器,你可以到https://www.doczj.com/doc/3410213710.html,查询更多信息)。

文件: c-files.reg#文件连接#http://www.xs4all.nl/~borkhuis/vxworks/c-files.reg

2.5.3 当我每次双击一个文件,都打开一个Tornado.我想所有的文件都用一个Tornado打开,怎么做?

A:是的,这是可能。下面的注册文件将完成这个工作。

警告:在使用这个文件前必须小心!首先读一下该文件,如果你不理解它就不要使用它。编辑该文件,修改Tornado的安装路径为你机器上的安装路径。

文件: TornadoFileTypes.reg#文件连接#http://www.xs4all.nl/~borkhuis/vxworks/TornadoFileTypes.reg

2.5.4 能把多个CPU平台安装到一个目录下吗?

A:可以,但是需要注意几点:

只能把同一版本的安装到同一目录下。这意味着Tornado 2.0.1 for ARM不能同其它版本安装到同一个目录。

也不能把2.0和2.0.2混合在一起。我发现的唯一不兼容的是MIPS。在安装了idts134 BSP 后,下面的文件会

带来问题:

1)host\resource\tcl\wtxcore.tcl

在最后的函数里设置tool为sfgnu替换为gnu.在if结构里增加设置tool为sfgnu.现在只有MIPS这个工具变量

被改变。这样更让人满意,如果你只使用MIPS版本它是可以工作的。

2)host\resource\tcl\app-config\Browser:

在line 138 有个目录为obj...sfgnuvx,对其它CPU来说它是obj...gnuvx. 问题可以通过把这行替换为如

下行解决:

This problem can be solved by replacing this line with the follwoing lines:

if { $cpuType($cpuId) == "RC32364" } {

set name [wtxPath target lib obj$cpuType($cpuId)sfgnuvx]spyLib.o

} else {

set name [wtxPath target lib obj$cpuType($cpuId)gnuvx]spyLib.o

}

然后替换RC32364为你处理器类型的名称。

2.6 MAKEFILE

2.6.1 Make不能发现我自己的INCLUDE目录?

A:在C/C++编译选项里,使用-I

选项增加目录,现在在build属性里包含如下内容:宏名称:VPATH

值:$(filter-out -I.,$(filter -I%,$(CFLAGS)))

在修改了include目录后需要更新编译器选项,VPA TH自动被上面规则更新。

在选项改变保存到工作区并确认改变生效后,重新生成依赖关系和开始编译器。

Bob Baker (Bob@https://www.doczj.com/doc/3410213710.html,)曾写过他关于这个问题的经验:

我们在使用Tornado 2编译一个应用程序时碰到了很多问题,如'No rule to make target'。尝试了所有有

用的办法。如:使用":"替代空格作为VPATH的分隔符。使用" :"或": "或" : "改变宏的顺序。"\","/","\\"

(原文:E.G. using ':' for VPATH separators instead of spaces. Using 'space :' or ': space' or

'space : space', changing the order of the macro's, forward slashes, back slashes, double slashes, pointing the PC screen south at dawn etc the problem turned out to be incompatibility between tornado 2 and win95/98. )证明在Tornado2和WIN95/98上是不兼容的。

简单拷贝包含整个应用和工程的整个目录结构到NT,可以解决问题,并生成一个完整的build。拷贝到另一

个win95和win98上,则建立失败。失败的原因是build过程试图存取一个网络驱动器的共享库文件。我尝试了

所有的在VPATH里的分隔符组合,他们都可以在NT下工作。

2.6.2 为什么make没有在我修改了BSP目录里的文件(比如sysSerial.c)后重新生成我的工程? A: 在Tornado里你能定义不必扫描的include目录。其中缺省的目录之一是BSP目录(target\config)。如果

你从不包含列表里移除它,BSP文件将出现在依赖列表里。在你选择生成依赖关系后选择"高级"按扭,会弹

出一个窗口,包含一个选项"Read-only dependency path"从列表中移除.....\target\config。关闭窗口,

重新生成所有的依赖关系。下次BSP文件被修改后就会正确生成了。

(From: gerard.kerkhofs@nicolet.NOSPAM.nl)

另一个解决办法是不要删除该项,但是用.....\target\config\comps替换它。现在你得到所有的BSP目录里

的文件,而不是comps目录里的,该目录里放置了许多标准文件。

2.6.3 我怎样在我的工程里生成一个连接器列表(linker list)?

A: 在build属性里的缺省连接器命令不被make采用。未了使用额外的连接选项make,把如下内容加入到build

属性里:

Macros: Name: LD_PARTIAL_FLAGS_FOR_PARTIALIMAGE

Value: -Wl,-Map,$(basename $(notdir $(PRJ_FILE))).link

然后修改$(PROJECT_OUT)文件rules.vxApp里的连结器命令行的LD_PARTIAL:

$(LD_PARTIAL) $(LD_PARTIAL_FLAGS_FOR_PARTIALIMAGE) \

$(PRJ_OBJS_FOR_LD_PARTIAL) $(PRJ_LIBS) -o partialImage.o

这会在输出目录里生成一个linker输出文件--.link。在这个文件名字映射为原始.o 文件而不是

partialImage.o。如果文件使用最终的连接命令生成,它会生成partialImage.o文件的。

2.6.4 怎样生成C和汇编混合文件?

A: 在你makefile文件添加如下规则:

%.out: %.o

@objdump$(TOOLENV) -S $< < $@

This will generate a file called .out containing C and assembly code. You need to have

the -g flag for the compiler to get debug informtion in the output file. This information is needed by objdump.

But this is probably not enough. By default VxWorks puts a name in the object file. This name consists of the absolute path of the project directory with the complete path of the file name appended to it. (This can be seen with the command "objdump$(TOOLENV) --debugging

", in the first few lines the filename is given.) This is caused by the fact that

the compiler is called with the complete path of the sourcefile. This can be changed to ".." in

the Makefile. But the Makefile is generated each time the configuration is changed.

To correct this the file prj_vxApp.tcl can be changed to write ".." to the Makefile istead of

the complete path. This is done in the function makeGen. The original line in this function is:

puts $fd "PRJ_DIR = [file dir [prjInfoGet $hProj fileName]]"

This should be changed to:

puts $fd "PRJ_DIR = .."

(With assistance from Bill Pringlemeir, bpringlemeir@https://www.doczj.com/doc/3410213710.html,)

2.6.5 怎样把额外的.o文件加入到我的工程里?

A: 把文件加到宏EXTRA_MODULES。文件名用空格分开。确定在同一目录有目标文件。它也可能把文件放到你

的源文件目录里。在宏里你应该使用../格式。这样做的优点是你能make

clean或

rebuild所有文件而没有松散你的目标文件。

2.6.6 我想使用make man在我的BSP里生成额外的文档,但只有sysLib.c的文档被更新了。我把我的文件加

到BSP Makefile里DOC_FILES行?

A:在make环境下DOC_FILES变量没被使用。应该做如下改变:

1) 把你的文件和makefile里的文件加到DOC_FILES里,应该类似下面的行:

DOC_FILES = sysLib.c sysTffs.c tycoDrv.c myFile.c

2) 修改rules.x86-win32文件包含DOC_FILES变量的使用,修改如下:

from:

docs:

@echo Processing

@for %f in (sysLib sysTffs tyCoDrv) do @if exist %f.c @echo %f.c & \

$(CPP) $(CASFLAGS) -C $(DOCFLAGS) %f.c > %f.i & \

to:

docs:

@echo Processing

@for %f in ($(basename $(DOC_FILES))) do @if exist %f.c @echo %f.c & \

$(CPP) $(CASFLAGS) -C $(DOCFLAGS) %f.c > %f.i & \

到现在,我看到该问题只发生在windows平台,unix平台并没有这种情况。

2.6.100 MAKEFIEL文件里的疑问?

有谁知道在$(WIND_BASE)/host/include/make/generic2.mh文件里,[! -d ./$(HOST) ]代码的含义。

请大虾指点。

.....

objdircre:

if [! -d ./$(HOST) ]; then \

mkdir ./$(HOST); \

fi

....

备注:

HOST=x86-win32

A:该makefile是在编译tornado的host工具时用到的,这个判断是在cygwin的shell中执行,意思是如果

该目录不存在着创建该目录。注意:tornado的host工具很多是用cygwin的工具编译的,所以其风格是unix

的。

(by bestracer)

2.7 工程

2.7.1 当我修改了usrConfig.c后,我的应用程序并没改变,怎样能把改变编译到应用程序里?A:Tornado 2.0的工程不使用usrConfig.c,它使用配置面板,文件可以在target/config/comps 下发现,如

果你喜欢用usrConfig.c,make target/config/yourBsp目录下的Makefile文件,就可以了。(From: Roie Geron, roie@https://www.doczj.com/doc/3410213710.html,)

2.7.2 怎样不用Tornado重新生成工程文件?

A: 使用如下命令重新生成那些bootable工程文件:

wtxtcl /host/src/hutils/configGen.tcl .wpj

这个命令也可以被Tornado使用。当配置改变时,这个命令可以作为build的第一个执行命令。

对downloadable工程,没有标准命令。一个修改过的configGen也可以被使用,文件名为makeGen.tcl

(连接#http://www.xs4all.nl/~borkhuis/vxworks/makeGen.tcl#),把这个文件拷贝到../host/src/hutils

目录。Makefile文件可用如下命令生成:

wtxtcl /host/src/hutils/makeGen.tcl .wpj

请确认你使用了.wpj的完整路径。

2.7.3 当我生成依赖关系时,一些依赖关系丢失了。它们不在Tornado树中,但include目录用-I包含和使用

VPA TH宏?

A:我们以前也碰到同样的问题,你可以把#include "xxx\xxx\xxx.h"改成#include "xxx/xxx/xxx.h",

然后在试试。(From: ellin_lin@https://www.doczj.com/doc/3410213710.html,)

2.8 目标机服务器

2.8.1 怎样不用Tornado启动target server?

A:首先创建一个DOS窗口的快捷方式,然后在Tornado里配置你的target server,使得它能正常启动,并把

配置窗口里的配置文本拷贝到DOS快捷方式的属性里。即可。

(From: John Finley, john@https://www.doczj.com/doc/3410213710.html,)

2.8.2 我的程序正常装载需要几秒钟,但现在装载一个小的应用程序却需要很长时间。我怎样加速下载过程?

A:增加你target server的Cache容量,缺省是1M,增加容量将减少下载时间。

(From: Wade Oram, oram_w_t@https://www.doczj.com/doc/3410213710.html,)

2.8.3 当我启动target server时,碰到WTX错误,告诉同步停止,我怎么修正它?

A:一个解决问题的办法是使用远程registry,即使你在你本机上运行target server,这可以通过

设置远程registry解决。

基本上"localhost"得到存储在Windows registry中的运行registry的机器名。主机上的WTX 工具把

localhost解析成127.0.0.1,并把它传给目标机,然后目标机尝试与127.0.0.1通信,以便符号表的同步和结

束只与自己联系而不与主机联系。很好的特性。

如果你的Windows主机有多个网口,并且目标机连在一个次要接口上,这还不足够。机器名被解析成IP地

址,否则目标机不知道。在连接目标机进行符号表同步前,你需要在目标机上使用routeNetAdd命令。

(From: Markus Mitterer, markus.mitterer@https://www.doczj.com/doc/3410213710.html, and lori@https://www.doczj.com/doc/3410213710.html,)

2.8.4 当我在SHELL里输入一个命令时,出现"The target system is not initialized yet. Can't roceed."

A:当你在目标机配置项里的"Core filea"指定一个"vxWorks"文件作为核心文件(core file),该问题将解决。

我指定了"vxWorks_rom"文件,并选择了"synchronize host/target symbol table"项,它工作的很好。

2.9 Target Shell

2.9.1 当我从我的工程里移除shell组件时,我碰到一个dosFsDevInit执行错误,怎样能不包含shell而包含

DOSFS组件?

A:首先它看起来可能是wierd,后来我想起来老的dosFsLib使用在RAM中的文件名数据库(使用HASH表),

所以如果你移除任何可能连接到hashLib中的符号表,就可能不能初始化。

一个可能的原因就是没有人注意到它,因为通常都包含INCLUDE_STAT_SYM_TBL (也是一种符号表)。所以

你应该增加INCLUDE_STAT_SYM_TBL 或简单的在dosFsInit前调用hashLibInit() 。(From: Leonid Rosenboim, leonid@https://www.doczj.com/doc/3410213710.html,)

2.9.2 在启动windshell时,一般是通过执行windsh.tcl来实现的,我在.wind目录下创建了这个文件,但它

没执行,我什么地方做错了?

A:没有,这是windshell的一个bug,它不去搜索Tornado的安装目录,只搜索C:上的,所以你应该把你的

windsh.tcl移动到c:\.wind目录下,它将执行。

2.9.3 当我ping 我的"myHost"时,shell好象丢掉许多内存,为什么?

A:目标机上的shell为字符串分配内存(字符串的地址被传送给函数)。shell不能决定何时可以安全的释放

内存,所以它就把它留在那里,那块内存也不能重新使用。所以下次ping的时候,它又会

新训骨干集训讲话稿

发言稿 同志们: 2013年度新兵骨干集训今天正式开始了,能和在座的各位一起共事,我表示非常荣幸,对你们即将担负光荣的新兵训练任务,表示热烈的祝贺!你们是各级组织严格挑选出来的素质全面过硬的基层建设骨干,肩负新兵军事启蒙、培养引导新兵完成由地方青年向合格士兵转变的重任,为了更好的完成新训任务,在骨干开训之际,我讲三点: 一、集训的目的和意义 这次集训各级首长都十分重视,直属党委为此事召开多次会议,对集训工作也提出了许多要求,为此组织了这次集训,其目的是可以更好地提高新兵班长的素质和各方面能力。更适合于新兵班长的岗位,更符合训练新兵的要求,常言道“强将手下无弱兵”。一个班长素质不过硬就很难带出精兵来,就很难再未来高科技局部战争中立于不败之地。所以说大家要珍惜集训的每时每刻,切实在集训过程中取长补短,完成“三能、四会”的要求。 今年新兵连的构成与以往不同,由各个单位出干部骨干分别担任自己单位的新兵干部骨干。在坐的有些同志带过新兵,有些没带过。新兵大都带着美好的憧憬和遐想来到部队,随着新生活的开始,每名新兵都不可避免的感受到军营不像他们想象的那样富有诗意、激动人心,有的甚至会心灰意懒,

歪曲了自己人生观、价值观。这就要求我们这些将新兵领进门的师傅们从这个新兵连开始为他们树立正确的人生观、价值观,培养他们吃苦耐劳、不怕牺牲、勇于奉献的精神,通过新训帮助他们提高政治思想素质、军事业务素质、身体素质和心理素质。 二、注意事项 新兵骨干要当好启蒙老师,严抓细管精训。 1、依据训练大纲,科学实施训练。 2、抓好安全教育,严防事故发生。 3、廉洁文明带兵,严禁吃拿卡要、打骂体罚。 三、部署集训工作

VxWorks常用命令汇总

VxWorks常用的命令 1.与任务相关的命令 sp function,[arg1],...,[arg9] -启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节 period n,function,[arg1],...,[arg8] -创建一个周期调用function的任务,周期为n秒,最多接受8个参数 repeat m,function,[arg1],...,[arg8] -创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数 ts tidX -挂起任务 tr tidX -恢复挂起的任务 td tidX -删除任务 i tidX -显示任务基本信息,参数为0时显示全部任务 ti tidX -显示任务详细信息,包括寄存器、堆栈等 tt tidX -显示任务的函数调用关系 checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务 [其中tidX可以为任务ID 也可以为任务名] 2、系统信息 lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数: 0,给出符号表统计;""(空字符串),列出全部符号 lkAddr addr -显示addr地址附近的符号表 l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令 h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目 d [addr,[number],[width]] -显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8 m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等 printErrno value -打印系统定义的错误码的宏 3、与网络相关的命令 ifShow ["ifname"] - show info about network interfaces inetstatShow - show all Internet protocol sockets tcpstatShow - show statistics for TCP udpstatShow - show statistics for UDP ipstatShow - show statistics for IP icmpstatShow - show statistics for ICMP arpShow - show a list of known ARP entries

村干部培训课讲稿新时期如何当好一名村干部

村干部培训课讲稿新时期如何当好一名村干部 一、当前农村的特点 要想当好新形势下的农村干部,就必须了解农村基层组织特点,目前,正处于社会主义新农村建设的大好的时期,伴随着新农村的建设和发展,也出现了一些新情况、新问题。主要表现以下四个特点: (一)农民思想活跃,教育引导难。现在的村民与集体没有了明显的利益关系,他们行动存在随意性。这种现象的出现,必然带来一些无政府主义、无集体主义思想,也同样会激发出一些新的矛盾,给我们村干部带来困难和阻碍,以致于出现“老办法不适用,新办法不会用,硬办法不能用,软办法不管用”的现象。有人风趣地说:有吃有喝不用你,出了问题就找你,解决不了就告你。可见农民教育引导难,教育引导的迫切性。这就需要我们有新型的思想政治工作方式,来应对这些新出现的问题。 就拿我们这几个月一直在进行的精准扶贫事件来说吧,在座的各位肯定都曾经遇到过,有部分村民不服评分评议,听信旁人煽动精准识别评分不公平,与我们村干辩解,村干部解释无用后,他们再到乡镇府寻求答复,甚至写匿名信诬告村干部利用私人关系和村干权利推举身边的亲戚朋友为贫困户,致使评分有失公平。类似的事情还有社保取消评议、日常的山地、林地纠纷等。从这些事我们就可以看到,现在的农民群众较之之前思想上有很大的差别,说明我们的群众现在

思维的活跃性和自主性随着时代发展、文化普及和信息流通都在不断的提高。 这个现象积极的一面说明了我们农民有文化了,也说明农村的发展日益迅速,与城市靠拢的速度日益加快。另一方面我们也从中看到我们作为村干部,对村民的教育引导问题的难度也在加大。因此,这就对我们村干部的工作方法与工作要求提出了新的挑战。 (二)农村基础薄弱,发展经济缓慢。我县多数的村基础差,没有集体收入。在我县有41个贫困村,几乎所有的贫困村都无集体经济。制约农村经济发展的因素很多,如农业生产方式落后、产业结构不科学、经营方式不合理等等,但总的来说,没有集体经济或集体经济低是影响农村发展的一个重要因素。 但是我们西林有独特气候和优越的地理条件,我们每个村都有各自优势,这些优势都是我们的财富,要因地制宜,打造一村一品,利用本村的优势大力发展经济。比如足别瑶族苗族乡央龙村的茶叶品牌,普合苗族乡大河村的烟叶种植,八达坡皿村的养猪产业,西平木顶的沙糖桔种植等等,我们村干可以带领群众利用环境优势打造油茶、砂糖橘、草莓、甘蔗、蔬菜、葡萄等等特色农业,创造一村一品,多找路子解决农村集体经济问题。 (三)旧的管理模式不相适应,规范管理难。税费改革以后,基层组织与村民、村民与村民之间的关系已经发生了变化,如何实现管理是一个重要的问题。具体表现在农村党组织设置与城乡统筹发展趋势

内存读取错误的原因

该内存读取错误,不能read 或written 2010年06月15日星期二 4:57 P.M. 该内存不能read 或written的常见原因: 使用Windows操作系统的人有时会遇到这样的错误信息:“0X????????指令引用的 0x00000000内存,该内存不能written”,然后应用程序被关闭。如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。 一、应用程序没有检查内存分配失败 程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。 内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。 若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。 内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。 二、应用程序由于自身BUG引用了不正常的内存指针 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其他随机数字。 如果系统经常有所提到的错误提示,下面的建议可能会有帮助: 1.查看系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。 2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系

Tornado_VxWorks官方培训教程1

嵌入式培训专题 微迪软件培训中心Tornado &VxWorks 培训 深圳市微迪软件技术有限公司 培训中心

嵌入式培训专题 微迪软件培训中心实时系统概念 ?实时系统是对外来事件在限定时间内能做出反应的系统。 ?指标 –响应时间Response Time –生存时间Survival Time –吞吐量Throughput

嵌入式培训专题 微迪软件培训中心实时系统与普通系统 ? 在实时计算中,系统的正确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间?对于实时系统来说最重要的要求就是实时操作系统必须有满足在一个事先定义好的时间限制中对外部或内部的事件进行响应和处理的能力 ? 此外作为实时操作系统还需要有效的中断处理能力来处理异步事件和高效的I /O 能力来处理有严格时间限制的数据收发应用

嵌入式培训专题 微迪软件培训中心实时系统分类 ?根据不同的分类方法可以分为几种。 –方法一是分为周期性的和非周期性的(p e r i o d i c 和 a p e r i o d i c ) –方法二是分为硬实时和软实时(h a r d r e a l _t i m e 和s o f t r e a l _t i m e ) –专用系统和开放系统 –集中式系统和分布式系统

嵌入式培训专题 微迪软件培训中心实时多任务操作系统与分时多任务操作系统? 分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。?实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时限内作出响应(系统响应时间),即使是在尖峰负荷下,也应如此,系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出精确的估计。

vxWorks开发环境构建步骤及开发资源

vxWorks开发环境构建步骤及开发资源 技创科技(Technique Innovator Inc.) https://www.doczj.com/doc/3410213710.html, 一、Tornado集成开发环境构成 Tornado是集成开发环境的名称,主要由帮助及参考文档、操作系统vxWorks、开发工具(编译器、调试器、编辑器、target server等,据统计,挂接在Tornado下的可选工具和第三方有数百个)等三部分构成,分别对应三个目录: i.docs/ 所有文档都集中在该目录中, books.html是根索引,入门级开发请务必查看 以下文档: ●如果要熟悉使用界面及Tornado使用、创建工程,请参考:Tornado用户手册 及Tornado集成开发环境的HELP->content调出来的联机帮助文档; ●vxWorks的编译是使用标准GNU Makefile来编译连接的,要了解Makefile语 法请参考”GNU Make”;具体的Make rules存放在target/h/make/目录下。 ●如何调试?请参考“Debugging with GDB” ●vxWorks构成、特点及kernel,编程等:请参考:VxWorks Programmer's Guide, 系统调用、库函数接口标准等,请参考:VxWorks Reference Manual ●有关BSP(board support package)的构成、初始化、底层驱动等,请参考“BSP Reference” ●网络应用编程指南(socket编程): “VxWorks Network Programmer's Guide” ii.host/ 该部分存放主机端(开发机)的工具,如Tornado.exe,make.exe,编译器、调试器及TCL命令解释器等等,开发中要用到的工具都存放在目录 host\x86-win32\bin 下,部分命令是.exe文件,部分是.bat的,其中有torvars.bat文 件,是设置Tornado集成开发环境的环境变量用的,在使用其他工具前,要运行它 设置正确的环境变量及可执行文件搜索路径。 iii.target/ vxWorks操作系统、源码、BSP、设备驱动、头文件、配置文件等config/ BSP的存放地方,底层开发者绝大部分时间在该目录下度过,该目录下除了all/和comps/外,其他每个目录对应一种硬件板的BSP,开发者在 做BSP开发时,原则上除了对应BSP目录能修改外,target/目录下的其他 所有目录都不应该作出改动,否则会影响到其他BSP,常用BSP有: pid7t/ →ARM公司推出的pid7 ARM7TDMI评估板的BSP integratorX/ →ARM公司推出的integratorXXX评估板的BSP tk4510a/ →我们要使用的S3C4510B板的BSP SNDS100/ →三星公司推出的SNDS100(KS3C50100/S3C4510B)板的 BSP h/ 头文件存放地点,包括vxWorks的及所有其他组件的 arch/arm/ ARM体系结构相关头文件 make/ 编译连接时要用到的规则都存放在这里 vxWorks.h wind Kernel(vxWorks的核心”Wind Kernel”的API及常量说明) lib/ vxWorks是一个商用操作系统,其不开放源码部分的.o文件及.a(库文件)文件存放在这里(当然,除了config/目录外,所有其他目录下的*.c源码在编

在青年干部培训班上的发言稿

在青年干部培训班上的发言 尊敬的各位领导、同学们: 大家好! 今天,能够参加此次青年干部培训班,是组织上和上级领导对我的一种信任与肯定,对此,我感到十分荣幸和万分感谢。 面对艰巨繁重的改革发展稳定任务中来自各方面的困难、风险与挑战,基层工作能不能围绕党中央“四个全面”战略布局,推动“两个一百年”奋斗目标与中华民族伟大复兴中国梦的实现,关键看我们普通基层工作者有没有克服它们、战胜它们、驾驭它们的本领。这次青年干部培训班为我们提供了这样一个难得的“充电”机会,因此,我将坚持“博学之、审问之、慎思之、明辨之、笃行之”的学习态度,牢牢把握这个可以学习各方面知识,加快知识更新,优化知识结构,拓宽眼界思维,掌握工作本领的重要机会。 为此,作为一名学员,我决心做到以下三点: 一是提高思想认识,坚决完成学习任务。充分认清加强学习的重要性,加倍珍惜这次来之不易的学习机会,刻苦努力,完成学业。 二是严格组织纪律,服从组织管理。在学习过程中,我决心做到“四要三不”,即:要尊敬老师,团结同学;要专心听课,做好笔记;要积极交流,灵活运用;要互相帮助,共同进步;不迟到、不早退、不无故旷课。在日常学习中,坚决服从党校和班委的管理,积极参加班委组织的各项活动。 三是学好每一门课,顺利通过各项考核。作为一名基层公务员,我将在学习中把所学知识与工作实际相结合,把工作中遇到过的,以及可能遇

到的实际问题,带入到理论学习中去思考,并将学习到的理论知识,运用到以后的实际工作当中,以检验自己所学知识成果。同时,我将认真完成老师安排的各项考核,向组织交上一份满意的答卷。 青干班是一次难得的学习、锻炼、交流、提高的机会,我将以此次培训为契机,强化学习、锤炼品格、与时俱进、开拓创新,做到“心中有党、心中有民、心中有责、心中有戒”,并将年轻人的蓬勃朝气和满腔热情融入到本职工作上,做到理论与实际、学习与运用、言论与行动相统一,为构建灵璧和谐美好的明天贡献自己的青春和力量。

0X000000该内存不能为read written的解决方法

0X000000该内存不能为read written的解决方法 【文章一】 使用Windows操作系统的人有时会遇到这样的错误信息: 「“0X????????”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。 如果去请教一些「高手」,得到的回答往往是「Windows就是这样不稳定」之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的一般原因。 一、应用程序没有检查内存分配失败 程序需要一块内存用以储存数据时,就需要使用操作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是「动态内存分配」,内存地址也就是编程中的「光标」。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新启用的游标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的「健壮性」。若应用程序没有检查这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的「中断描述符表」,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的「写内存」错误,并指出被引用的内存地址为「0x00000000」。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中「安装」的病毒程序),更改了大量的系统参数和系统档案之后。 二、应用程序由于自身BUG引用了不正常的内存光标 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试突读写一块「应该可用」的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是「忘记了」向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而「没有留意」等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图「违法」的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一

Vxworks任务创建编程学习代码

任务创建编程学习代码一 此代码主要的是创建若干的任务,来学习任务的创建和删除. 程序的结构是: start函数:任务创建函数 stop函数:任务删除函数 其它为任务 请大家仔细分析代码,理解任务内务的创建和删除.本代码是在tornado2.0版本调试成功. 如有疑问联系作者jdvxworks 邮箱:foxqs@https://www.doczj.com/doc/3410213710.html, /********************************* * date:2006.7.10 time:16.08 * maker: jdvxworks * aim: create 4 task * list: task0 task1 task2 task3 * change:_____________________ *********************************/ #include "stdio.h" #include "taskLib.h" #include "vxWorks.h" //#include "semBLib.h" int taskid0; int taskid1; int taskid2; int taskid3; int loopid; SEM_ID sem_id; STATUS Err; void start(void); void test0(void); void test1(void); void test2(void); void test3(void); void stop(void); void taskloop(void); //start init task void start(void) { int i,o; long p=9999999+100000;

2015年村干部培训班培训讲课稿

认清形势明确目标凝心聚力 做促进农村发展、带领农民致富的“领头羊” ——2015年镇、村干部岗位能力培训班讲课稿 各位镇街领导,各位村干部,大家上午好: 农忙刚刚结束,区委在这里专门召开镇、村干部岗位能力培训班,主要目的是帮助大家进一步认清农村发展形势,加深对党在农村各项方针政策的理解,提高政治素养和组织领导能力,将党的十八大精神贯彻到农村基层,为推动全区农村经济跨越式发展、确保农村各项工作顺利进行提供坚实的组织保障。 大家都清楚,随着农村改革的不断深入和社会主义市场经济的发展,尤其是中央、省、市、区各项惠农政策的落实和各项活动的开展,对农村工作都产生了深远影响。对于广大农村干部尤其是处在农村工作第一线的村干部来说,如何适应新形势,增强新本领,应对新挑战,成为摆在大家面前亟需解决的重大课题。作为组织战线上的一名新兵,我的农村工作经验远没有在座各位丰富,今天在这儿就是和大家互相交流、互相探讨,把省、市、区对农村党建工作的一些新要求、新想法向大家传达一下,咱们共同学习,共同提高。下面,我就围绕农村党建工作着重讲两个方面的容。

一、认清农村党建新形势,打造一批党性强、能力强、改革意识强、服务意识强的村干部队伍。 党的建设富有鲜明的时代特征,党建工作要与时代同步。农村党建是党的基层组织建设的重要组成部分,认识分析当前农村党建工作面临的新形势,对于我们把握农村党建工作主题,创新农村党建工作方法,提高农村党建工作水平极为重要。 (一)影响新时期农村党建工作的主要因素 1、农村社会权力结构变化。在实行村民自治制度以后,我国农村形成了“乡政村治”的基本政治格局。“乡政”,是指以乡镇这一级作为国家基层政权单位,代表国家,负责执行国家政务;“村治”,是指以村这一级作为社会自治单位,代表农民,负责治理农村部事务。村民自治后的农村权力结构发生了明显变化。第一,乡镇政府同村委会的关系不再是领导与被领导的上下级关系,而是指导与被指导的协助合作关系。第二,村党支部与村委会之间虽然还是属于领导与被领导的关系,但是农村基层权力结构已经从一元化领导向二元权力模式转变。按照宪法和法律规定,村党支部处于领导核心地位,享有对村民自治的政治领导权;村委会作为村民自治的组织机构,直接行使村务管理权。第三,在村党支部和村委会之外的其他社会组织,例如,大量出现的专业协会、农村社团组织、团

解决XXXX指令引用的XXXX内存,该内存不能为read 的方法

解决"XXXX指令引用的XXXX内存,该内存不能为read" 的方法 出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。 一:先说说硬件: 一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。 二、如果都没有,那就从软件方面排除故障了。 先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。 首先建议: 1、检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。 2、更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。 3、尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。 4、删除然后重新创建 Winnt\System32\Wbem\Repository 文件夹中的文件:在桌面上右击我的电脑,然后单击管理。在"服务和应用程序"下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。删除 Winnt\System32\Wbem\Repository 文件夹中的所有文件。(在删除前请创建这些文件的备份副本。)打开"服务和应用程序",单击服

vxWorks学习笔记

vxWorks学习笔记 vxWorks学习笔记 2006-07-20 11:141.VxWorks开发方式:交叉开发,即将开发分为主机(host)和目标机(target)两部分。 类似于dos下C语言程序的开发。 合并开发的优点:简单 缺点:资源消耗量大,CPU支持,非标准体系的支持 host (Tornado) target(vxWork) 小程序模块 vxWorks实际采用开发模式 Tornado提供:编辑,编译,调试,性能分析工具,是vxWorks 的开发工具 vxWorks:面向对象可以剪裁的实际运行操作系统 2.vxWorks启动方式 Rom方式(vxWork_rom) vxWorks直接烧入rom Rom引导方式(bootrom+vxWorks) 其中bootrom烧入rom,vxWorks可以通过从串口,网口,硬盘,flash等下载!这里的bootrom不是开发环境中的bootable,在开发环境里bootable指的是vxWorks,downloadable指application 3.调试

attach 用来在多任务调试时将调试对象绑定到某个任务 任务级调试(attach taskName) 单个任务的调试不会影响到其他任务的运行,主要用来调用户的应用程序。 全局断点:在调另一任务或本任务时,系统运行本任务断点,则停下。各任务要配合使用。 任务断点:调本任务时,系统运行到本任务断点,则停下。如果没有attach到本任务,不起作用。 一次性断点:跑到一次之后自动删除。 系统级调试(attach system) 把所有task和系统core、中断看成一个整体,可用于调试系统和中断。对中断调试,如果不是系统级调试,无论是那种断点都不起作用 !wdbAgent不在调试范围内,当任务级调试时工作在中断方式,系统级调试工作在轮询方式。 !可是使用命令行方式的调试,参看crossWind教程。 4.调度 优先级调度(无条件) 时间片:同优先级,如果时间片没有打开,任务采取先到先运行,运行完毕在交出cpu,如果打开,则轮流使用cpu。!死循环使比它优先级低的任务都不能运行。

EPON常用命令讲解

EPON常用命令讲解 ?数据业务基本排查 ?语音业务基本排查 ?930软件脚本简介 ?其他常用命令 ?典型案例分析 数据业务基本排查 基本思路: 在PON系统内GSWC、EC2、ONU各业务环节上应保证: 配置正确 配置生效 MAC地址正确转发 ?FTTH型ONU ?FTTB型ONU 配置核查 Onu switch目录: show vlan all显示所有端口vlan; show vlan 查看交换芯片单个vlan及其所属端口的信息,如果此端口配置为出口剥离vlan,相应端口显示为UN;反之显示为VF show vlan default 显示所有端口的untag属性的vlanid; Onu Debug下相关命令: ddd show port [|all] vlan config显示系统QinQ不使能下的Fe端口vlan的配置信息show port [|all] vlan service显示系统QinQ使能下的Fe端口vlan的配置信息show port [|all] vlan translation table显示端口的软件vlan转换表 EC2 Pon目录: show qinq_config <1-2> <1-24> 查询qinq模式下ONU端口业务信息 端口检查 show port status查看交换芯片端口的状态,可以查看用户端口是否接了终端,工作模式是否正确等 查看地址转发表

ONU swtich目录 show arl查看mac地址转发表,会显示学习到的端口、vlanid和mac地址,如果用户的vlan id同时上下行数据中学到,其中26端口( CPU端口)表示下行数据正常,用户端口1-24表示上行数据正常; OLT fdb目录 show fdb slot <1-8,11-18>查看上行数据时,查看业务卡(EC2)fdb表 show fdb slot 29查看下行数据时,查看上联口fdb表 主控盘学的地址的VID应该是最外层VLAN的VID。 如果,上下行fdb表都正确,但是拨号拨不上去,可以在OL T的上连口抓包,查看进出的包内容。如果有出去的包而无回来的包,则可以判断出是上游设备出问题。 如果fdb表学习不正确,则VLAN配置有问题,可以根据fdb表的情况,先判断问题出现在哪一个设备上,再查看VLAN配置有无问题。 其他处理方式: 如时延大、丢包、组播业务等问题,可分别在EPON系统与其他系统的接口处利用抓包工具查看定位,由于上联口只能封装单层vlan,Qinq和单层vlan方式会略有差别。 FTTN型ONU 与其他ONU差异 FTTN型ONU相对其他类型ONU比较独立,对于普通的数据、语音业务,OLT相当于“透传”的通道。 配置核查: FSWB Profile目录下 创建/修改/查看ADSL2+端口模板参数: add xaplus profile ; set dsl-profile ; show dsl-profile ; 主要查看4个方面: 1.编码类型(lineCoding) 一般编码类型在开通的下行速率低于8Mb/s时采用G .dmt,大于8M时采用adsl2plusauto。 2.线路类型(channelMode) 线路类型采用interleaved更为稳定 3.训练速率(dnFastMaxTxRate,dnIntlMaxTxRate,upFastMaxTxRate,upIntlMaxTxRate) ADSL 一般最大上行可达速率为800Kb/s,下行可达速率为8Mb/s ADSL2+一般最大上行可达速率为1Mb/s,下行可达速率为28Mb/s 配置时上行速率不要超过1Mb/s,推荐640Kb/s

2020年基层干部培训会议主持词范文合集

【篇一】 同志们: 大家上午好: 今天,我们在这里举办基层工会干部培训班,其目的就是加强全县工会干部队伍建设,提升基层工会干部素质、强化服务和*意识,更好地为实现我县争先晋位、富民强县目标和加快推进创建服务。在此,我代表县总工会向参加学习培训的全体学员表示热烈的欢迎!向辛勤授课的老师表示诚挚的敬意。首先,我为大家介绍今天到会的领导和培训授课老师:市总工会常务副主席同志,县委副书记同志,县委党校副校长同志,县委党校老师。 让我们用热烈的掌声欢迎县委副书记同志做重要讲话。…… XXX的讲话振奋人心,催人奋进,阐述了举办这次培训班的重要性和必要性,提出了三点希望和要求,这既是对各位学员的要求,也是对今后全县工会工作的要求,更是今后全县工会工作的中心和重点,希望各位学员认真领会曹书记的讲话精神,谨记领导希望,全身心投入此次培训,真正做到学有所进、学有所成、学以致用。 这次培训时间不长,三天时间,希望各位学员集中精神、认真听课。在正式开课之前,给大家提几点要求,一是在学习培训期间,要自觉遵守学习纪律,认真做好笔记。二是在上课期间,请大家关闭通讯工具,或调整为静音状态。三是培训期间不得随意外出,有事必须请假。 今天启动仪式到此结束,紧接着正式培训授课。下面,我们有请市总工会常务副主席张景良同志为大家讲课,大家欢迎! 【篇二】 同志们: 经过精心筹备,新一届村级班子主要干部培训班今天正式开班了。这次培训,是根据年初区委工作计划,由区纪委、区委组织部、区委党校、区民政局、区财政局等单位共同组织举办,对于全面提高新一届农村基层干部的综合素质,加快推进社会主义新农村建设,促进全区经济社会持续快速发展具有十分重要的意义。 参加这期培训的有区委副书记同志,区委党校校长同志和全区各村的支部书记/村委会主任/村监委会主任及各镇、街道党(工)委书记、副书记,/各镇镇长、办事处主任,组织干部,有关涉农部门主要领导,/各镇、街道纪(工)委书记,共约500人//。 区委非常重视这次农村基层干部集中培训,专题召开会议研究培训方案,决定聘请区委、区政府、区纪委主要领导,有丰富基层工作经验、长期担任涉农部门主要职务的领导干部和部分专家学者担任培

关于电脑内存读写错误的解决方法

出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。 一:先说说硬件: 一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。 二、如果都没有,那就从软件方面排除故障了。 先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。 在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。 首先建议: 1、检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。 2、更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。

Dos引导VxWorks

CF卡上引导VxWorks的三种方法 方法一. 直接引导: 引导扇区 >> bootrom.sys >> VxWorks 这种方法最快,但要求bootrom.sys保持连续性(可用chkdsk检查)。 方法二. FreeDOS引导: 引导扇区 >> FreeDOS >> https://www.doczj.com/doc/3410213710.html, >> bootrom.sys >> VxWorks 这种方法牺牲少量启动时间换取灵活性,因为你可以为FreeDOS增加菜单实现选择性启动,而且许多维护性工作也可在DOS下进行。 方法三. GRUB引导: 引导扇区 >> GRUB >> FreeDOS启动盘映像 >> FreeDOS >> https://www.doczj.com/doc/3410213710.html, >> bootrom.sys >> VxWorks 这种方法比上一种更进一步,你可以利用GRUB的强大功能实现多系统引导,不过不是所有的主板都支持GRUB。 grub> kernel --type=netbsd /vxWorks 一共两个分区,都是主分区。C盘为Fat32格式,设为活动分区。D盘为Fat格式,设为非活动分区。C盘装的Winxp,用XP引导Grub4DOS。把DOS的系统文件(IO.sys,MSDOS.sys,https://www.doczj.com/doc/3410213710.html,)拷贝到D盘根目录。 修改menu.lst如下: title DOS6.22 root (hd0,1) chainloader (hd0,1)/IO.SYS title DOSDOS find --set-root (hd0,1)/io.sys chainloader (hd0,1)/io.sys title FINDDOSACT find --set-root (hd0,1)/io.sys

VxWorks操作系统MakeFile

VxWorks操作系统MakeFile(一) 时间:2008-8-24 夜 版权申明:本文为水煮鱼为水煮鱼@博客园撰写,不得用于商业用途,如需摘用,请与水煮鱼联系。 1、介绍 本文将介绍为什么要将你的C源代码分离成几个合理的独立文档,什么时候需要拆分,那又怎么拆分呢? 然后再介绍如何使用GUN Make使你的编译和链接步骤自动化。可能你使用的是其他的make工具,但是其实道理都差不多。当然如果你对自己的编程工具有怀疑的话,可以不妨实际的试试。 2、多文件项目介绍 a. why? 为什么使用多文件项目?他们有什么好处呢? 从表面上看,多文件项目是够复杂的了,又要头文件,又需要extern申明,并且如果你要查找一个文件的话,还需要在更多的文件里搜索。 但是如果把其考虑成一个项目,那一个项目根据功能划分为小的模块,那就不难理解了。 想想如果是一个一万行代码,如果你把其放到一个文件里,则在编译的时候,则需要对一万行代码进行重新编译。不过如果你如果把其放到不同的文件里,那修改一行,则只需要编译一个文件就可以了。可能你会说,一万行代码,就算全部编译,那点时间也基本可以忽略不计,但是实际情况是,在一个大的系统里,可能代码达到几十万甚至上百万,千万行代码的规模。以我们的项目为例,目前代码规模已经达到了上千万行的级别,如果全部重新编译,则将耗费几个小时甚至半天的时间。如果将其划分多多个文件,则修改一行所引入的编译代码,将不会随着你代码规模的增大而增大。所以多个文件的优点不言自明了。 不过对于不便于搜索的问题,其实只要文件划分得当,也并不会造成多大的困难。其实,从多个目标文件生成一个程序包比从一个单一文件生成程序包要好的多。当然,实际上这是不是一个优势还与你所使用的系统有关。但是当使用gcc/ld(一个GUN C编译器/连接器)把一个程序包连接到一个程序时,在连接的过程中,它会尝试不去连接没有使用到的部分,但它每次只能从程序包中把一个完整的目标文件排除在外。因此,如果你修改了一个程序包中某一个目标文档中任何一个符号的话,那么这个目标文件整个都会被连接进来。要是一个程序包被非常充分的分解的话,那么经过链接后,得到的可执行文件会比从一个大目标文件组成的程序包连接得到的文件小的多。 并且常常我们的程序是模块化的,高内聚,低耦合,使得文件之间共享部分被减少到了最少,因此采用多文件的方式,可以比较容易的找到代码中的bug。 b.when? 那什么时候分解你的项目? 如果你开发的是一个大项目,在开始前,应该好好考虑一下你将如何实现,并且将生成几个文件来存放你的代码。当然,在项目的开发过程中,你可以建立新的我文件,但是这将打乱你的整体布局,可能造成你整体结构的调整。因此特别建

文本预览