日志分类:嵌入式

VxWorks 编码习惯

2009-03-19,星期四 | 分类:VxWorks, 转载 | 标签: | 2,086 views
Wind River的编码习惯 1.1 介绍 本文档详细说明了Wind River的C代码和包含在代码中的附加文档的编写习惯。 这些习惯是特意约定的,不全,但是能写出更高质量的代码。每一个源模块必须包含某些基本的文档,并且这些代码和文档必须具备一个好的格式以便于阅读和理解。这些习惯也用来在不同的程序员之间提供一个统一的编码标准,这样就能减少在别人的代码上工作时因为不同的代码风格所做的额外调整。同时,也能允许对代码的自动处理。比如,可以写一些程序来自动生成参考手册,模块摘要,更新说明等。 本文档所描述的编码习惯由以下两部分组成: l 文件标题:无论什么编程语言,在每一个源文件的头部都有一个统一的标题说明   l C代码习惯 1.2 文件标题 每一个包含C代码的文件,不管它是头文件,资源文件,或者是一个使用主机工具、库例程或应用程序的文件,都必须包含一个标准的文件标题。 文件标题由下面描述的几块组成,这些块由一个或几个空行分开,但是在每一个块里面不能有空行,以便于文件标题的自动处理。 l 名称:由一行注释组成,包含工具,库或应用程序的名字,以及一个简短的描述。名字必须跟文件名一样。这一行将变成自动处理后的参考条目和索引中的名称。 l 版权:由一行注释组成,包含适当的版权信息。 l 更改历史:包含一个注释块,就是C语言中的多行注释。更改历史中的每一个条目包含版本号、更改时间、更改人和有关更改内容的完整描述。 版本号由两个阿拉伯数字和一个字符组成(例如,03C)。字符的增加表示一个内部的改动(小的改动),数字的增加表示一个大的改动,特别是改变了模块的外部接口。 下面是一个标准的C源文件的文件标题的例子: ...

WindShell

2009-03-18,星期三 | 分类:VxWorks, 转载 | 标签:, | 305 views
1 简介 提供从宿主机到目标机之间的一个命令 shell。WindSh 是一种非常受欢迎的开发工具,它具有很强的交互性和可操作性,允许用户调用内存中的应用程序模块或是 VxWorks模块中的任何例程。它不但具有一般命令语言的功能,而且也具有 C 语言的设计特点,能够解释几乎任何 C 语言表达式, 执行大多数 C 语言算子,解析符号表数据。对初用者来说,WindSh学习起来比较简单,使用比较方便,对熟练用户而言,则有较为高级的手段可以应用。 WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。Tornado外壳还能解释常规的工具命令语言TCL。 WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。 2 启动和终止 启动:命令行方式为:windSh phobos(目标服务器名称);菜单Tool->Shell;工具条。 终止: 快捷键[Ctrl+D];命令exit() 或 quit()。 3 Shell特性 I/O重定向: 程序员常常调用例程从标准输入接收数据或在标准输出显示数据,缺省情况下,标准输入输出流被定向到 Tornado Shell。 使用Tcl过程 shConfig 修改WindSh 环境变量 SH_GET_TASK_IO,实现I/O复位向。 路径与符号补齐: 键入任何符号或存在的路径名的开始部分,然后键入[Ctrl+D], Shell会自动补齐命令或路径名。 并且可以继续键入若干字符后加上 [Ctrl+D] 知道命令或路径完整为止。 ...

Tornado2.2 for pcPentium的安装和使用流程

2009-03-18,星期三 | 分类:VxWorks, 转载 | 标签:, , | 328 views
Tornado2.2 for pcPentium的安装和使用流程 一、安装Tornado2.2 for PcPentium和BSP 1、安装时需要install key,:cAQ8i-qP2I&-g$vT6-3&gjw-bEk9g 2、在C盘建立一个flexlm文件夹,将license.dat拷贝进去 3、安装完毕后,如果从开始菜单直接运行tornado,会提示错误,这是因为安装还没有完成, 在C盘Tornado2.2文件夹下你会发现一个setup.log文件,用ultraedit或vim打开, 在最后一行你会发现一个注册表键值,进入注册表,找到这个键值,将其值修改为: c:\flexlm\license.dat,OK! 4、直接安装bsp,install key:A7KbB-Rd37p-hNFBE-kzgaT-b9gpC ...

VxWorks编程常用函数说明

2009-03-11,星期三 | 分类:VxWorks, 转载 | 标签: | 527 views
一、官方的Program Guide 位于安装目录下:\docs\vxworks\guide\index.html 二、常用的库: #include "taskLib.h" /* 任务 */ #include "msgQLib.h" /* 消息队列 */ #include "semLib.h" /* 信号量 */ #include "ioLib.h" /* IO */ #include "wdLib.h" /* Watch dog ...

VxWorks - 多任务消息机制

2009-03-11,星期三 | 分类:VxWorks, 原创 | 标签:, , | 163 views
以下是VxWorks中用消息机制实现的一个多任务通信的简单样例: /* VxWorks includes */ #include "vxWorks.h" #include "taskLib.h" #include "stdio.h" #include "msgQLib.h" int g_lTaskATid; int g_lTaskBTid; MSG_Q_ID g_MsgQ1id; MSG_Q_ID g_MsgQ2id; static void MultiTaskTestTaskA(void) { char cMsgToTaskB[100]; char cMsgFromTaskB[100]; sprintf(cMsgToTaskB,"To TaskB \n"); fprintf(stderr, " Hello from MultiTaskTestTaskA \n"); while(1) { ...

Vxworks中几种定时/延时方法的小结

2009-03-07,星期六 | 分类:VxWorks, 转载 | 标签:, | 507 views
编程过程中,出于需要,大家或多或少要用到定时/延时。VxWorks下提供了几种定时/延时机制,根据收集的一些资料和VxWorks相关文档,在学习和上机实验的基础上,对它们的使用以及我所遇到的问题做一个总结,希望对大家能有所帮助。 1 taskDelay taskdelay()提供了一个简单的任务睡眠机制,也常用于需要定时/延时机制的应用中。它的格式是:STATUS taskDelay(int ticks /* number of ticks to delay task */) 可以看出使用该函数实现延时的单位为tick(一般系统中一个tick都是ms级的)。在VxWorks下可以这样使用taskDelay()函数:taskDelay(sysClkRateGet()*1)。函数sysClkRateGet()返回系统的时钟速率,单位是tick数/每秒(利用函数sysClkRateSet()可以改变系统的时钟速率)。在POSIX中有一个与taskdelay()相对应的函数――nanosleep()(下文中有介绍)。这两个函数仅仅是延时单位不同,效果是相同的。 利用taskdelay(),可以将调用的任务移动到具有相同优先级的就绪队列尾部。特别的,可以通过调用taskdelay(0),将cpu交给系统中其他相同优先级的任务。延时为0的调用只能用于taskdelay()中,nanosleep()认为这种调用是错误的。 taskdelay()会导致调用的任务在指定的延时期间(以ticks计数)放弃cpu,使任务处于DELAY状态(因此,其不能用于中断服务程序中)。通常其受到任务调度的影响,但在等待一些与中断无关联的外部条件时,其是有用的。如果调用的任务受到一个信号,指出其没有被阻塞或被忽略,taskDelay()将返回ERROR,并在信号处理程序运行后设置errno为EINTR。

VxWorks下基于select的TCP服务器端设计

2009-03-07,星期六 | 分类:VxWorks, 转载 | 标签:, , | 364 views
#include #include #include #include #define DEFAULT_SERVER_PORT 6699 int server; SEM_ID Server_SM; /** * Start the function Server() as a task in AppInit() like this: * int ret = 0; * ret = taskSpawn("tServer", 165, 0x0002, 1024,(FUNCPTR) Server, * ...

[转]跟我一起写 Makefile(十三)

2008-09-25,星期四 | 分类:Linux, 嵌入式, 转载 | 标签:, , , , | 180 views
使用make更新函数库文件 ——————————— 函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。 一、函数库文件的成员 一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成:     archive(member) 这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了"ar"命令来服务的。如:     foolib(hack.o) : hack.o             ar cr foolib hack.o ...

[转]跟我一起写 Makefile(十二)

2008-09-25,星期四 | 分类:Linux, 嵌入式, 转载 | 标签:, , , , | 175 views
隐含规则 ———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。 “隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile中没有书写这样的规则。例如,把[.c]文件编译成[.o]文件这一规则,你根本就不用写出来,make会自动推导出这种规则,并生成我们需要的[.o]文件。 “隐含规则”会使用一些我们系统变量,我们可以改变这些系统变量的值来定制隐含规则的运行时的参数。如系统变量“CFLAGS”可以控制编译时的编译器参数。 我们还可以通过“模式规则”的方式写下自己的隐含规则。用“后缀规则”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保证我们Makefile的兼容性。 我们了解了“隐含规则”,可以让其为我们更好的服务,也会让我们知道一些“约定俗成”了的东西,而不至于使得我们在运行Makefile时出现一些我们觉得莫名其妙的东西。当然,任何事物都是矛盾的,水能载舟,亦可覆舟,所以,有时候“隐含规则”也会给我们造成不小的麻烦。只有了解了它,我们才能更好地使用它。
Pages: 1 2 3 Next