VxWorks应用开发基本步骤和函数taskPriorityGet()

来源:互联网 发布:志鸿优化网答案下载 编辑:程序博客网 时间:2024/05/18 03:52

假设BSP部分已经做好,下面说一下开发应用程序的基本步骤:

1.首先从Tornado中建立一个新的Project可以看出,有两种映像可以选择:Bootable和Downloadable,在开发初期通常是先建立一个不包含应用层模块的bootable project,编译出一个包含基本组件的VxWorks映像,将系统启动起来;其实这一步编译出的就是包含基本组建的一个VxWorks内核,并没有我们的应用代码。

2.在和上面的Bootable工程相同的Workspace中建立一个Downloadable project,在这个工程中编写、编译应用层的模块,然后动态下载到目标机中去调试;

3.应用层模块调试完毕可以发布之后,可以将应用层模块和第一步中的Bootable的VxWorks映像编译到一起;这时候可以向Boottable Project中加入应用层代码文件,加入方式是Add from project,然后把包含应用层代码的Downloadable project中的文件导入Bootable project,重新编译Bootable Project得到的就是包含应用层的可启动的VxWorks影像。

4.把最终的映象放到软盘、硬盘或者Ftp服务器相应的目录下,这需要根据BootRom中bootline的启动方式来决定。

=================================

taskPriorityGet( ) - 读取任务优先级

"Most VxWorks task routines take a task ID as the argument specifying
a task. VxWorks uses a convention that a task ID of 0 (zero) always
implies the calling task."

“绝大多数与任务相关的VxWorks例程使用“task ID”参数来指定某一任务。
按照惯例VxWorks,task ID为0总是用来指定调用任务。”

int priority;

通过调用 taskPriorityGet(taskIdOfOne, &priority ) ; 获取taskOne的优先级,其中,taskIdOfOne为taskOne的id值。

如果为:taskPriorityGet(0, &priority ) ; 则获取调用任务的优先级。

e.g.

extern STATUS    taskPriorityGet (int tid, int *pPriority);
假设有任务A、B、C,任务ID分别是0x10000、0x20000、0x30000
对应的优先级分别是100、200、300,则int tidOfTaskC = 0x30000;
void test_taskPriorityGet()
{
    int pri;
    taskPriorityGet (tidOfTaskC, &pri);
    printtf("Priority of task C is %d.\n", pri);
    taskPriorityGet (0, &pri);
    printtf("Priority of the calling task is %d.\n", pri);
}
如果上面函数在任务A的上下文中执行,则会打印
Priority of task C is 300.
Priority of the calling task is 100.
如果上面函数在任务B的上下文中执行,则会打印
Priority of task C is 300.
Priority of the calling task is 200.


原创粉丝点击