# external_rtos-benchmark
**Repository Path**: open-vela/external_rtos-benchmark
## Basic Information
- **Project Name**: external_rtos-benchmark
- **Description**: No description available
- **Primary Language**: C
- **License**: Apache-2.0
- **Default Branch**: dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 1
- **Created**: 2024-11-29
- **Last Updated**: 2025-09-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
\[ [English](README.md) | [简体中文] \]
# README
该基准测试项目包含一组测试,旨在测量某些操作系统操作的性能。目前,它支持 Zephyr 上的 qemu_x86 和 frdm_k64f 开发板,以及 FreeRTOS 上的 frdm_k64f 开发板。未来预计会添加更多的开发板和 RTOS 支持。
需要注意的是,在 QEMU 上运行基准测试套件通常不被推荐,其结果应谨慎对待。尽管如此,添加 QEMU 支持的主要目的是提供一个集成其他开发板和架构的蓝本。
## 设置环境
### 通用设置
为 `frdm_k64f` 开发板安装 GNU ARM 编译器,
[GNU ARM Embedded toolchain](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm),
并将 `ARMGCC_DIR` 设置为安装目录。
### Zephyr 相关设置
请参考 [Zephyr 入门指南](https://docs.zephyrproject.org/latest/getting_started/index.html) 以安装和配置 Zephyr 环境。这是构建独立应用程序所必需的。正如“通用设置”部分所述,请确保正确设置 `ARMGCC_DIR` 环境变量。
要启用第三方 GNU ARM Embedded 工具链,请设置以下环境变量:
```
export ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
export GNUARMEMB_TOOLCHAIN_PATH=
```
### FreeRTOS 相关设置
从 [NXP MCUXpresso SDK Builder](https://mcuxpresso.nxp.com/en/welcome) 下载并构建 FRDM-K64F SDK。
选择 `Linux` 作为主机操作系统,并选择 `GCC ARM Embedded` 作为工具链。
此外,请确保勾选 `FreeRTOS` 选项,以在 SDK 中包含 FreeRTOS 支持和示例。
```
mkdir freertos/SDK__FRDM-K64F
unzip ~/Downloads/SDK__FRDM-K64F.zip -d /SDK__FRDM-K64F
```
安装 [pyOCD](https://github.com/pyocd/pyOCD) —— 该工具用于刷写 FRDM_K64F。
### VxWorks 相关设置
安装 VxWorks 24.03 及以上版本。
## 构建与刷写
### 在 FRDM K64F 上运行 Zephyr
```
cmake -GNinja -DRTOS=zephyr -DBOARD=frdm_k64f -S . -B build
ninja -C build
ninja -C build flash
```
#### 在其他开发板上运行 Zephyr
构建其他开发板时,步骤类似。在 `cmake` 命令中,在 `-DBOARD` 选项后指定开发板名称。例如:
```
cmake -GNinja -DRTOS=zephyr -DBOARD=qemu_x86 -S . -B build
```
请确保 `ZEPHYR_BASE` 环境变量已正确设置,以便找到 Zephyr 的 `west` 工具。
### 在 FRDM K64F 上运行 FreeRTOS
```
cmake -GNinja -DRTOS=freertos -DBOARD=frdm_k64f -DMCUX_SDK_PATH=/SDK__FRDM-K64F -S . -B build
ninja -C build
ninja -C build flash
```
### VxWorks
VxWorks 支持在不同的开发板上运行 rtos-benchmark,可选择 POSIX 接口或非 POSIX 接口的用户空间版本。
例如,针对 BSP `nxp_s32g274`:
#### 创建并构建 VSB
```
vxprj vsb create -force -S -smp -lp64 -bsp nxp_s32g274 vsb_nxp_s32g274
cd vsb_nxp_s32g274
vxprj vsb config -s -add _WRS_CONFIG_BENCHMARKS=y -add _WRS_CONFIG_BENCHMARKS_RTOS_BENCHMARK=y
make
```
#### 创建并构建 VIP
以下步骤适用于 POSIX 接口测试。如需测试非 POSIX 接口,
请将 `INCLUDE_RTOS_BENCHMARK_POSIX` 替换为 `INCLUDE_RTOS_BENCHMARK_NONPOSIX`,
并将 `rtos_benchmark_posix.vxe` 替换为 `rtos_benchmark_non_posix.vxe`。
```
vxprj create -vsb vip_nxp_s32g274
cd vip_nxp_s32g274
vxprj component add INCLUDE_RTOS_BENCHMARK_POSIX
mkdir romfs
cp romfs/
vxprj parameter set RTOS_BENCHMARK_OPTIONS 1
vxprj parameter set HIGH_RES_POSIX_CLOCK TRUE (Needed when POSIX clock is used for timestamping)
vxprj component remove INCLUDE_NETWORK
vxprj build
```
将生成的镜像加载到目标设备,rtos-benchmark 将在启动时自动运行。
## 连接设备
通过 USB 将 `frdm_k64f` 连接到主机。在另一个终端中,打开串口终端(如 screen、minicom 等)以查看输出:
```
minicom -D /dev/ttyACM0
```
## 调试
Zephyr 和 FreeRTOS 的调试方法类似:
```
cmake
ninja -C build debugserver
```
在另一个终端中启动 GDB:
```
$ARMGCC_DIR/bin/arm-none-eabi-gdb build/freertos.elf
(gdb) target remote :3333
```
### cmake Zephyr 调试选项
无需额外操作,只需标准的 cmake 指令。
```
cmake -GNinja -DRTOS=zephyr -DBOARD=frdm_k64f -S . -B build
```
### cmake FreeRTOS 调试选项
在构建选项中添加 -DCMAKE_BUILD_TYPE=debug:
```
cmake -GNinja -DCMAKE_BUILD_TYPE=debug -DRTOS=freertos -DBOARD=frdm_k64f -DMCUX_SDK_PATH=SDK__FRDM-K64F -S . -B build
```