跳过正文

VxWorks 7 SDK 应用程序开发者指南

VxWorks 7 SDK Application Development RTP DKM QEMU VSCode
目录

关于
#

应用程序开发者的角色是为特定的 VxWorks 源码构建(VSB)和 VxWorks 镜像工程(VIP)创建可下载内核模块(DKMs)、实时进程(RTPs)和库。 软件开发套件(SDK)为开发者提供了编译、调试和测试应用程序及库所需的工具。

  • RTP (Real-Time Process) – 在用户空间中运行的可执行应用程序。RTPs 在隔离的环境中运行,增加了健壮性。它们生成 .vxe 文件,可以从文件系统(RomFS、NFS、SD卡)加载,或者直接通过 WRDBG 调试器加载。
  • DKM (Downloadable Kernel Module) – 一种内核模式应用程序,具有完整的系统和硬件访问权限。DKMs 生成 .out 文件,可以静态链接到内核,从文件系统动态加载,或通过 WRDBG 加载。

注意: 调试时,RTP 应用程序必须使用 .vxe 扩展名,DKM 应用程序必须使用 .out 扩展名。

前提条件
#

  • Python 3.6+

    • Linux
      sudo apt-get install python3 && python3 -m pip install -U pip
      
    • Windows 下载 Python 并在安装过程中选择 将 Python 添加到 PATH
  • 平台开发者提供的已生成 SDK

SDK 目录结构
#

一个已生成 SDK 的示例布局:

WRSDK_VXWORKS-7_<VIP_NAME>_<VSB_ARCH>_<HOST_TYPE>_<TIMESTAMP>
├── bsps # BSP 镜像和启动文件
│ └── <BSP_NAME>
│ ├── boot/vxWorks
│ ├── uboot/uVxWorks, vxWorks.bin
│ └── readme/readme.md
├── toolkit # 开发者工具和交叉编译器
│ ├── wind_sdk_env.linux / wind_sdk_env.bat
│ ├── host_tools
│ ├── wrdbg_tools
│ ├── sdk_tools/qemu
│ ├── bin
│ ├── compilers
│ ├── include
│ └── license
├── artifacts # 可选:用于重建 VSB/VIP 的工件
│ ├── <VIP_PROFILE>.cdf
│ └── vsb.config
├── examples # 可构建的代码示例
└── docs # VxWorks API 和 BSP 文档
└── resources/vxworks-7

应用程序开发
#

命令行
#

命令行前提条件
#

在构建应用程序之前:

  1. 确保满足[#前提条件]。
  2. 进入 SDK 基础目录。
  3. 加载 SDK 环境以更新 PATH 和环境变量:
  • Linux
    source toolkit/wind_sdk_env.linux
    
  • Windows
    toolkit\wind_sdk_env.bat
    

编译应用程序
#

应用程序编译遵循典型的 C/C++ 工作流程(Make、CMake)。examples/makefiles 中有示例 Makefile。

编译 RTPs
#
  • 使用 Makefile

    make
    
  • 不使用 Makefile Linux:

    $CC rtp.c -o rtp.vxe -static
    

    Windows:

    %CC% rtp.c -o rtp.vxe -static
    
编译 DKMs
#
  • 使用 Makefile

    make
    
  • 不使用 Makefile Linux:

    $CC -dkm dkm.c -o dkm.out
    

    Windows:

    %CC% -dkm dkm.c -o dkm.out
    
编译 CMake RTPs
#
  1. examples/cmakefiles 复制 Preload.cmakevxsdk_toolchain.cmake
  2. 创建 CMakeLists.txt
  3. 运行:
    cmake -DCMAKE_TOOLCHAIN_FILE=vxsdk_toolchain.cmake .
    make
    

运行应用程序
#

运行 RTPs
#
wrdbg
file <PATH_TO_RTP_APP>
run

示例:

file ~/SDK/examples/hello_world/RTP/hello_world.vxe
运行 DKMs
#
wrdbg
module load <PATH_TO_DKM_APP>

使用以下命令检查:

lkup "startHelloWorld"

调试应用程序
#

调试 RTPs
#
wrdbg
file ~/SDK/examples/hello_world/RTP/hello_world.vxe

参见 WRDBG 参考指南

调试 DKMs
#
wrdbg
module load ~/SDK/examples/hello_world/DKM/hello_world.out
task create startHelloWorld

Visual Studio Code 扩展
#

VSCode 前提条件
#

  • 确保满足[#前提条件]。
  • 完成 VSCode 设置。

创建 VSCode 应用程序
#

  • RTP/DKM: 在 Explorer 中右键单击 → New VxWorks Real Time ProcessNew VxWorks Downloadable Kernel Module

  • CMake RTPs: 在 Explorer 中右键单击 → New VxWorks CMake Project

编译 VSCode 应用程序
#

  • RTPs/DKMs: 右键单击项目 → Build Project

  • CMake RTPs: 右键单击项目 → Build CMake Project

调试 VSCode 应用程序
#

  • RTPs: 在调试器中选择 Launch RTP 并运行。
  • DKMs: 选择 Launch DKM 并运行。执行最初在 main() 处停止。

VSCode Docker 支持
#

  • 需要 Linux SDK。在 Windows 上,使用 WSL + Linux SDK。

  • 安装 Remote - Containers(Windows 用户还需安装 Remote - WSL)。

  • 在容器模式下重新打开 SDK 文件夹。

启动 VxWorks 目标
#

  • 选项 1:硬件 – 请参阅 BSP 特定的 README。
  • 选项 2:QEMU – 如果包含,请使用随附的模拟支持。

QEMU 用法
#

startqemu.py --smp 2 --m 512 -b

或从 SDK 工具运行:

python toolkit/sdk_tools/qemu/startqemu.py

连接到 VxWorks 目标
#

wrdbg
target connect vxworks7:TCP:<TARGET_IP>:1534 -kernel <PATH_TO_VXWORKS_IMAGE>

示例:

target connect vxworks7:TCP:10.10.10.5:1534 -kernel ~/SDK/bsps/ti_sitara/boot/vxWorks

内联汇编
#

您可以使用 asm 嵌入汇编代码:

#include "vxWorks.h"
void main(void) {
    __asm("mov ax, bx");
}

多条指令:

#include "vxWorks.h"
void main(void) {
    __asm("push {fp, lr}; add fp, sp, #4; mov r3, #0; mov r0, r3; pop {fp, pc};");
}

已知限制
#

  • RTP/DKM 调试可能会留下 wrpython2.7TCF-server 进程(需手动清理)。
  • wrdbg 无法处理用户输入。对于交互式应用程序,请使用串行/虚拟控制台

原文地址: VxWorks 7 SDK Application Developer Guide

相关文章

在 QEMU 上运行 VxWorks 7:入门指南
VxWorks QEMU 指南
VxWorks 7开发用户指南
VxWorks 7
VxWorks 7 用户身份验证和管理:循序渐进的安全登录指南
VxWorks 7 用户身份验证 嵌入式安全 RTOS 安全 Wind River