编辑
2025-03-30
工作知识
0
请注意,本文编写于 68 天前,最后修改于 68 天前,其中某些信息可能已经过时。

目录

一、运行capture示例
二、相关命令
三、演示

rtems可以支持capture任务的执行情况,如下演示效果

一、运行capture示例

构建通过waf执行,如下

# ./waf configure --prefix=/root/work/rtems/out # ./waf

至此,我们可以运行capture示例如下

# qemu-system-aarch64 -no-reboot -nographic -s -serial mon:stdio -machine xlnx-zcu102 -m 4096 -kernel build/aarch64/zynqmp_qemu/testsuites/samples/capture.exe

此时的信息如下

*** BEGIN OF TEST CAPTURE ENGINE *** *** TEST VERSION: 6.0.0.87bf49b7156b9ddf45c218e5d4fa01f27b283db7-modified *** TEST STATE: USER_INPUT *** TEST BUILD: RTEMS_POSIX_API RTEMS_SMP *** TEST TOOLS: 13.3.0 20240521 (RTEMS 6, RSB b1aec32059aa0e86385ff75ec01daf93713fa382-modified, Newlib 1b3dcfd) Press any key to start capture engine (20s remaining) Press any key to start capture engine (19s remaining) Monitor ready, press enter to login. 1-rtems $

二、相关命令

copen <buffer-size>: 此命令默认设置capture的buffersize byte单位 cwceil <priority-value>: 此命令过滤低于优先级的所有事件 cwfloor <priority-value>: 此命令过滤高于优先级的所有事件 cwglob <on/off>: 此命令启动或关闭监视器 ctset [-?] type [to name/id] [from] [from name/id]: 此命令设置触发器类型,这里RMON是监视自身 cenable: 此命令启用capture功能 cdisable: 此命令禁用capture功能 ctrace: 此命令trace出日志 cwadd <task-name>: 此命令为特定的任务添加监视 cwtctl <task-name> <on/off>: 此命令启动或禁用特定任务 ctlist: 此命令列出当前的task

三、演示

此时我们进入captrue.exe,开启capture如下

1-rtems $ ctrace error: trace read failed: RTEMS_NOT_CONFIGURED 1-rtems $ 1-rtems $ cenable error: enable failed: RTEMS_UNSATISFIED 1-rtems $ copen 50000 capture engine opened. 1-rtems $ cwceil 100 watch ceiling is 100. 1-rtems $ cwfloor 102 watch floor is 102. 1-rtems $ cwglob on global watch enabled. 1-rtems $ ctset RMON trigger set. 1-rtems $ cenable capture engine enabled.

然后我们运行capture内置的测试程序test1,如下

1-rtems $ test1

等任务完成之后,我们关闭capture,然后查看trace如下

1-rtems $ cdisable capture engine disabled. 1-rtems $ ctrace 0 0:05:12.132637246 0a010003 CT1a 102 102 102 8192 TASK_RECORD 0 0:05:12.132782702 0 0a010003 CT1a 102 102 CREATED 0 0:05:12.133041342 258640 0a010003 CT1a 102 102 STARTED 0 0:05:12.133258110 216768 0a010003 CT1a 102 102 SWITCHED_IN 0 0:05:12.133502894 244784 0a010003 CT1a 102 102 BEGIN 0 0:05:12.134015374 512480 0a010003 CT1a 102 102 SWITCHED_OUT 0 0:05:13.130163838 0a010004 CT1b 101 101 101 8192 TASK_RECORD 0 0:05:13.130167454 996152080 0a010004 CT1b 101 101 CREATED 0 0:05:13.130238478 71024 0a010004 CT1b 101 101 STARTED 0 0:05:13.130302190 63712 0a010004 CT1b 101 101 SWITCHED_IN 0 0:05:13.130313246 11056 0a010004 CT1b 101 101 BEGIN 0 0:05:14.129783230 999469984 0a010004 CT1b 101 101 SWITCHED_OUT 0 0:05:14.129853182 0a010005 CT1c 100 100 100 8192 TASK_RECORD 0 0:05:14.129854974 71744 0a010005 CT1c 100 100 CREATED 0 0:05:14.129888638 33664 0a010005 CT1c 100 100 STARTED 0 0:05:14.129931806 43168 0a010005 CT1c 100 100 SWITCHED_IN 0 0:05:14.129936494 4688 0a010005 CT1c 100 100 BEGIN 0 0:05:14.130633246 696752 0a010005 CT1c 100 100 SWITCHED_OUT 0 0:05:14.130634638 1392 0a010004 CT1b 101 101 SWITCHED_IN 0 0:05:14.629816846 499182208 0a010004 CT1b 101 101 SWITCHED_OUT 0 0:05:14.629819598 2752 0a010003 CT1a 102 100 SWITCHED_IN 0 0:05:14.630445950 626352 0a010003 CT1a 102 102 SWITCHED_OUT

我们查看当前的任务列表,如下

1-rtems $ ctlist uptime: 0:22:34.490255513 total 2 09010001 IDLE 255 255 255 READY a--g 0a010002 RMON 1 1 1 READY a---

至此,capture的示例演示完成