本文介绍了VxWorks Workbench开发环境相关的快速教程

1. 启动Wind River Workbench

可以按照如下步骤来启动Wind River Workbench IDE(Integrated Develoment Environment),从菜单选择,Applications men -> Development -> Wind River Workbenche, 或者从命令行运行/opt/WindRiver/workbench-4/startWorkbench.sh,下面的窗口将会询问并让我们选择工作空间workspace。

WRS Workspace How To

这儿的Workspace是你的项目存放的地方,建议将workspace放置到你的Home目录下(/home.nfs/)。

2. 创建新项目

为了创建一个新的项目,可以依次选择File -> New -> Project,并选择 VxWorks -> VxWorks Downloadable Kernel Module Project。(后面你也会和Real-Time Process Projects打交道),一个对话窗口将会打开,你可以指定一个项目名称,可选地,你可以改变项目的保存目录,继续点击Next按钮。

WRS Workspace How To

在下一个窗口,选择我们项目基于的类型,因为我们将在模拟器中运行程序,选择image projectvip_vxsim_linux_llvm (prebuild),然后点击Finish。

WRS Workspace How To

现在你可以在Project Explore选项卡下看到刚新建的项目,这个项目包含了一个简单的C语言模板dkm.c。

WRS Workspace How To

2.1 示例代码

用下面的代码代换dkm.c中的代码。

 


#include "taskLib.h"
#include "stdio.h"
#include "kernelLib.h"

int task_run[] = {100, 450, 200};
int task_stop[] = {18, 25, 30};

void task(int n)
{
        long int x;

        printf("Task %i has been started\n", n);

        while (1)
        {
                printf("task %d: running\n", n);
                x = 1000000 * task_run[n];
                while (x > 0) x--;
                printf("task %d: delayed\n", n);
                taskDelay(task_stop[n]);
        }
}

void CreateTasks(void)
{
        TASK_ID id1, id2, id3;

        /*  kernelTimeSlice(1); */

        cpuset_t affinity;
        CPUSET_ZERO(affinity);
        CPUSET_SET(affinity, 0);
        taskCpuAffinitySet(taskIdSelf(), affinity);

        id1 = taskSpawn("Task0", 210, 0, 4096, (FUNCPTR) task, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
        id2 = taskSpawn("Task1", 210, 0, 4096, (FUNCPTR) task, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
        id3 = taskSpawn("Task2", 210, 0, 4096, (FUNCPTR) task, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0);
}

 

 

3 编译应用程序

就像很多现代IDE一样,通过一个单一的点击动作就可实现编译和运行一个应用程序,但是,理解这个场景背后究竟发生什么也是非常有帮助的。我们将会看看运行一个VxWorks应用程序所需要的每一个步骤,然后我们将会展示如何通过一个点击动作来实现。

编译一个项目,右键点击测试项目名称并选择Build(或者按Ctrl + B,或者按Ctrl + P)。

WRS Workspace How To

第一次编译的时候会询问头文件搜索的目录,这儿,你可以点击Continue继续。

WRS Workspace How To

编译的控制台将会自动打开并显示编译过程的输出内容。

WRS Workspace How To

如果你看到编译结束(Build Finished)的黑体字,表示编译是成功的,否则,你需要修正报告的错误(和警告)。

4. 启动模拟器

因为我们将要在模拟器中运行程序,我们必须要先设置,从Workbench的工具栏,从下拉列表中选择New Connection

WRS Workspace How To

在这个新连接的对话框中,输入一个Connection Name并选择:

  • Target Type: VxWorks Simulator
  • Connection Mode: Application Mode

WRS Workspace How To

选择Finished,然后模拟器就会启动,两个选项卡将会打开:

  • Simulator选项卡将会显示Connection details
  • Terminal选项卡将会显示模拟系统的控制台

尝试在控制台里的VxWorks控制台提示行输入命令i:

WRS Workspace How To

这个命令将会系统里面正在运行的所有任务。

相似的信息也可以从系统监控(System Monitor)选项卡中获取。

WRS Workspace How To

5. 运行应用程序

现在通过右键点击项目并选择Run/Debug Kernel Task来运行程序

WRS Workspace How To

在Run Kernel Task对话框中,指定Entry Point,就是将要运行的函数的名称,输入CreateTasks或者通过Browse...按钮来选择。

WRS Workspace How To

从可用的entry points中选择CreateTasks

WRS Workspace How To

在按了OK按钮后,应用程序将会在模拟器中运行并且输出内容将会在Terminal选项卡中显示出来。

WRS Workspace How To

如果你想再次运行程序程序,按组合建Ctrl + Shift + F11就足够了,或者从Target actions菜单中选择Run Kernel Task

WRS Workspace How To

6. 终止程序

有多种方法来终止应用程序:

  • 点击红色的图标来停止整个模拟器
  • 从System Monitor选项卡,通过右键菜单点击单个应用任务来终止它

WRS Workspace How To

7. 调试

你可以在运行某个应用程序的时候,通过选择Attach Debugger选项来调试一个应用程序。

WRS Workspace How To

Workbench会在entry point或者任何其他手动添加的断点处停止应用程序,现在你可以像别的IDE一样step并调试代码。

WRS Workspace How To

8. 帮助和文档

有两种类型的文档是可用的:

  • 参考手册
  • 指南,教程

指南文档在/opt/WindRiver/vxworks/22.06/docs目录下,对大家来说最重要的文档将是Kernel_Application_Development/VxWorks_Application_Programmer_s_Guide_22.06.pdf

参考手册可以在IDE自身的环境中获得,Help->Show Context Help,帮助窗口将会在编辑器里面鼠标的位置显示文档的链接。

WRS Workspace How To

系统Viewer

系统Viewer是你可以记录系统活动的轨迹然后通过图形的方式进行显示的工具。

系统Viewer可以被配置来记录不同数量的信息,我们将通过选择Additional Instrumentation来选择中等数量,如下所述。

WRS Workspace How To

下面你就可以开始从运行的系统中记录运行轨迹。

WRS Workspace How To

记录停止后,带有记录数据的新窗口将会出现。

WRS Workspace How To

你也可以从view隐藏任何任务。

WRS Workspace How To