EPICS IOC多核运行及测试

本文介绍了EPICS IOC在Linux环境下如何编译安装MCoreUtils库,利用该库进行多核运行和线程规则配置。内容包括MCoreUtils的使用方法,如在IOC中引入库、定义线程规则、执行iocsh命令操作线程,以及Linux进程调度策略,如SCHED_OTHER、SCHED_FIFO和SCHED_RR等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编译安装方法

1. 编译安装环境
(1)Linux 操作系统
(2)EPICS BASE 3.15 (3.15.1 or later)
(MCoreUtils中使用了一些EPICS BASE 3.15之后才有的函数,例如epicsThreadHookAdd()函数)

2. 下载安装包
https://github.com/epics-modules/MCoreUtils

3. 编译安装生成mcoreutils库

tar -zxvf MCoreUtils-1.2.2.tar.gz /home/dongxw/modules/MCoreUtils-1.2.2
cd /home/dongxw/modules/MCoreUtils-1.2.2
make

二、使用方法

用户手册:http://epics-modules.github.io/MCoreUtils/index.html

1. 在IOC中引入MCoreUtils
(1)在< path to IOC >/configure/RELEASE文件中,添加MCoreUtils路径:

MCOREUTILS = /home/dongxw/modules/MCoreUtils-1.2.2

(2)在< path to IOC >/< IOC >APP/src/Makefile文件中,添加MCoreUtils库和dbd:

...
<IOC>_DBD += mcoreutils.dbd
...
<IOC>_LIBS += mcoreutils
...

(3)编译运行IOC
注意:MCoreUtils 仅适用于Linux系统,因此只有Linux下编译运行的IOC可以执行上述操作,从而使用MCoreUtils。

2. 在文件中定义线程规则
可以预先设置线程规则文件:
(1) /etc/rtrules文件
(2)$HOME下的EPICS_MCORE_USERCONFIG定义的文件名或.rtrules文件
文件中线程规则定义格式为:

name:policy:priority:affinity:pattern

其中各项的含义:
name: 线程名
policy: 策略名
priority: 优先级(数字形式)
affinity: CPU亲和性,格式为 0,1,2,3 或 0-3 或 0,2-3
pattern: 用来匹配线程名的正则表达式

通过epicsThreadOnce()1和 epicsThreadHookAdd()函数2,在任何epicsThreadOnce()函数之前完成以下操作:读取线程规则文件后,生成threadRules表;令每个线程运行前都根据threadRules表中与id名字对应的规则修改id的线程规则。

3. 执行iocsh命令对线程规则进行操作
shellCommands.c 和 mcoreutils.dbd 文件结合,将一些函数注册为可在iocsh下执行的命令。这些命令在IOC启动时即注册入可执行命令库3,可以在 st.cmd 文件中执行这些命令,也可在 “epics>”命令行执行这些命令。
例如,IOC启动后,在iocsh下查看可执行命令库:

epics> help
...
iocRun          iocshCmd        iocshLoad       iocshRun        mcoreMLock
mcoreMUnlock    mcoreThreadModify               mcoreThreadRuleAdd
mcoreThreadRuleDelete           mcoreThreadRulesShow
mcoreThreadShow mcoreThreadShowAll              o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值