EPICS CA请求能否成功的影响因素

2023-05-16

1. 子网和广播域

子网掩码和广播域互为互补的网段。
例如:10.0.2.235的掩码为255.255.0.0,则它所在的子网为10.0.0.0,广播域为10.0.255.255;
192.168.206.235的掩码为255.255.255.0,则它所在的子网为192.168.206.0,广播域为192.168.206.255.

单播、广播都是在数据帧层面,即MAC层;多播(组播)既涉及到MAC层,又涉及到IP层。
所谓广播,就是让当前局域网中所有主机都收到MAC数据帧(DMAC=ff-ff-ff- ff-ff-ff)。
数据帧的广播范围不需考虑IP,只需考虑数据链路层和物理层是否可达。
计算机自己能发广播包吗?能

2. 四种IP广播地址

2.1 受限的广播

受限的广播地址是255.255.255.255。
它不被路由但会被送到相同物理网络段上的所有主机.

2.2 指向网络的广播

指向网络的广播地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。

2.3 指向子网的广播

指向子网的广播地址为主机号为全1且有特定子网号的地址。
例如,如果路由器收到发往128.1.2.255的数据报,当B类网络128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;但如果该子网的掩码为255.255.254.0,该地址就不是指向子网的广播地址。

2.4 指向所有子网的广播

指向所有子网的广播地址的子网号及主机号为全1。
例如,如果目的子网掩码为255.255.255.0,那么IP地址128.1.255.255是一个指向所有子网的广播地址。然而,如果网络没有划分子网,这就是一个指向网络的广播。

网络中的广播地址
四种IP广播地址

3. 网络是否可达

3.1 MAC层是否可达

测试:点对点连接,各自arp缓存表中都有对方的IP和MAC地址映射(REACHABLE状态)

10.0.3.235/16  ping不通 10.0.2.200/24;  (子网分别为10.0.0.0和10.0.2.0)
由于二者点对点连接,且10.0.3.235/16知道10.0.2.200/24的MAC地址,所以10.0.2.200/24可以收到数据帧,
但是由于网络层的IP不在同一子网内,而ping是基于网络层的ICMP协议,所以ping不会返回响应。
10.0.3.235/16  ping得通 10.0.2.200/16;  (子网都为10.0.0.0)
10.0.2.235/16  ping得通 10.0.2.200/24。  (子网分别为10.0.0.0和10.0.2.0)

发出对某IP的请求时,若当前主机的ARP缓存表中没有该IP,会先广播ARP请求,获取该IP的MAC地址。因此,物理上网络连接起来、但不属于同一子网的主机可以互相收到ARP请求,并获得彼此的MAC地址。

相同的子网才能互相ping通。
若有时候发现本不应ping通的两个子网之间ping通了,可能是发出ping请求的主机的ARP缓存(IP地址和MAC地址映射表)还存着之前能ping通目的IP时的MAC地址。过二三十分钟缓存清空更新或arp -d 删除该条ARP缓存后就无法ping通了。

3.2 防火墙的影响

当一个CA客户端向CA服务端(也就是IOC)发出请求时,通信过程如下:

							CA客户端											CA服务端
							
发起CA请求			<client IP>:<port1>    ---------- UDP ---------- >    <server IP>:5064
					<client IP>:<port1>    < -------- UDP ------------    <server IP>:5064			CA应答(需CA客户端的<port1>允许被访问)
					
建立CA连接			<client IP>:<port2>    ---------- TCP ---------- >    <server IP>:5064
					<client IP>:<port2>    < -------- TCP ------------    <server IP>:5064
					......

由于涉及到端口(TCP和UDP)通信,无论是CA服务端还是CA客户端,防火墙的存在都会影响CA连接是否成功。
当防火墙未开启相关端口时,会导致CA服务端或CA客户端相应端口无法收到上述过程中的数据报文,所以CA连接不成功。
由于CA客户端的< port1 >和< port2 >一般是随机端口,并不能精确控制防火墙开启相应端口。因此,CA客户端和CA服务端的防火墙最好都关闭。

例:CA客户端(192.168.188.131)向 CA服务端(192.168.206.235)发送 camonitor dongxw:aSubExample 请求:
在这里插入图片描述
CA客户端(192.168.188.131)开启了防火墙,CA服务端(192.168.206.235)未开启防火墙。
当CA客户端通过 49024 UDP端口 发出CA请求后,无法接收到CA服务端返回给 49024 UDP端口的UDP数据报文。
在这里插入图片描述
在CA客户端防火墙中开启该UDP端口,
在这里插入图片描述
则可以收到报文,并进入下一步,通过 49768 TCP端口 发出TCP连接(由于是主动发出的TCP连接,因此该 TCP端口 可以被访问并连接到),之后CA客户端即可收到PV数据。
在这里插入图片描述
在这里插入图片描述

4. 目的IP列表的正确设置

4.1 EPICS_CA_AUTO_ADDR_LIST 和 EPICS_CA_ADDR_LIST

CA客户端发出CA请求时,其目的IP列表由EPICS_CA_AUTO_ADDR_LIST和EPICS_CA_ADDR_LIST共同决定。
https://epics.anl.gov/base/R3-14/12-docs/CAref.html#Environmen

【 EPICS_CA_AUTO_ADDR_LIST 】 初始化目的IP列表。

During initialization CA builds the list of server destination addresses used when sending CA client name resolution (search) requests. This table is initialized by introspecting the network interfaces attached to the host. For each interface found that is attached to a broadcast capable IP subnet, the broadcast address of that subnet is added to the list. For each point to point interface found, the destination address of that link is added to the list. This automatic server address list initialization can be disabled if the EPICS environment variable EPICS_CA_AUTO_ADDR_LIST exists and its value is either “no” or “NO”. The typical default is to enable network interface introspection driven initialization with EPICS_CA_AUTO_ADDR_LIST set to “YES” or “yes”.

EPICS_CA_AUTO_ADDR_LIST=YES时,会在主机所有网卡所接入的可广播子网内、所有点对点连接的IP中查找相应PV。

【 EPICS_CA_ADDR_LIST 】 在目的IP列表中添加特定IP。

Following network interface introspection, any IP addresses specified in the EPICS environment variable EPICS_CA_ADDR_LIST are added to the list of destination addresses for CA client name resolution requests. In an EPICS system crossing multiple subnets the EPICS_CA_ADDR_LIST must be set so that CA name resolution (search requests) frames pass from CA clients to the targeted CA servers unless a CA proxy (gateway) is installed. The addresses in EPICS_CA_ADDR_LIST may be dotted IP addresses or host names if the local OS has support for host name to IP address translation. When multiple names are added to EPICS_CA_ADDR_LIST they must be separated by white space. There is no requirement that the addresses specified in the EPICS_CA_ADDR_LIST be broadcast addresses, but this will often be the most convenient choice.

4.2 CA服务端:单机单IOC

此时该IOC启动时,
默认监听 5064 UDP 端口,以响应CA请求;
默认监听 5064 TCP 端口,用于和CA客户端建立CA连接,传输PV数据。

因此,此时CA客户端的 EPICS_CA_ADDR_LIST 设为单播地址或广播地址,均可访问到CA服务端的 IOC。

4.3 CA服务端:单机多IOC

单机运行多IOC时,
第一个启动的 IOC 默认监听 5064 UDP 端口,以响应CA请求;
默认监听 5064 TCP 端口,用于和CA客户端建立CA连接,传输PV数据。
而之后启动的 IOC 还会默认监听 5064 UDP 端口,以响应CA请求;
但监听的 TCP 端口号随机生成,用于和CA客户端建立CA连接,传输PV数据。

此时CA客户端的 EPICS_CA_ADDR_LIST 若设为广播地址,则可访问到CA服务端的所有 IOC。
但若设成单播地址,则不能访问到CA服务端的所有 IOC,往往只能访问到最后启动的那个 IOC,
因此,需要在IOC主机上用 iptables 对UDP的5064端口设置单播转广播。

例:CA客户端(192.168.188.131)向 CA服务端(192.168.206.235)发送 CA 请求:
在 CA服务端(192.168.206.235)设置:

iptables -t nat -A PREROUTING -d 192.168.206.235 -p udp --dport 5064 -j DNAT --to-destination 192.168.206.255

此时在CA服务端启动3个IOC。CA客户端的 EPICS_CA_ADDR_LIST=192.168.206.235, 设为单播地址。

在这里插入图片描述

# CA服务端第 2 个 IOC 输出信息
as warning: Configured TCP port was unavailable.
cas warning: Using dynamically assigned TCP port 38279,
cas warning: but now two or more servers share the same UDP port.
cas warning: Depending on your IP kernel this server may not be
cas warning: reachable with UDP unicast (a host's IP in EPICS_CA_ADDR_LIST)
iocRun: All initialization complete
2023-04-04T21:32:07.932 Using dynamically assigned TCP port 44921.

在这里插入图片描述

# CA服务端第 3 个 IOC 输出信息
cas warning: Configured TCP port was unavailable.
cas warning: Using dynamically assigned TCP port 45774,
cas warning: but now two or more servers share the same UDP port.
cas warning: Depending on your IP kernel this server may not be
cas warning: reachable with UDP unicast (a host's IP in EPICS_CA_ADDR_LIST)
iocRun: All initialization complete
2023-04-04T21:33:31.507 Using dynamically assigned TCP port 53823.

在这里插入图片描述

Several soft IOCs on one host
How to Make Channel Access Reach Multiple Soft IOCs on a Linux Host

5. 不同场景的实验测试

5.1 相同子网下的CA请求

5.1.1 206.235访问206.234上的PV

EPICS_CA_ADDR_LIST127.255.255.255192.168.206.255192.168.255.255192.255.255.255255.255.255.255
EPICS_CA_AUTO_ADDR_LIST=NO×××
EPICS_CA_AUTO_ADDR_LIST=YES

5.1.2 10.0.2.235/24 访问 10.0.2.200/24 (二者点对点连接)上的PV

当10.0.2.235/24(CA客户端)的EPICS_CA_ADDR_LIST=127.255.255.255、EPICS_CA_AUTO_ADDR_LIST=YES 时,CA请求的目的IP自动初始化为10.0.2.255(当前CA客户端所在子网的广播地址)。

执行caget dxw:ai3命令,与10.0.2.200/24之间的数据帧通信过程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CA客户端先UDP广播询问该PV在哪,该PV所在主机UDP单播回答自己的IP地址。随后,CA客户端主动发起TCP连接,caget到PV值后,CA客户端主动关闭了该TCP连接。

当10.0.2.235/24(CA客户端)的EPICS_CA_ADDR_LIST=10.0.2.200、EPICS_CA_AUTO_ADDR_LIST=NO 时,CA请求的目的IP仅限于10.0.2.200(单播地址)。

执行caget dxw:ai3命令,与10.0.2.200/24之间的数据帧通信过程最开始是UDP单播询问该PV在哪,之后的过程与上述过程相同:
在这里插入图片描述

5.2 不同子网下的CA请求

5.2.1 206.235/24 访问 213.141/24 上的PV

EPICS_CA_ADDR_LIST127.255.255.255192.168.213.255192.168.255.255192.255.255.255192.168.213.141
EPICS_CA_AUTO_ADDR_LIST=NO××××
EPICS_CA_AUTO_ADDR_LIST=YES××××

192.168.206.0和192.168.213.0是两个子网,需要网关转发:

$ traceroute 192.168.213.141
traceroute to 192.168.213.141 (192.168.213.141), 30 hops max, 60 byte packets
 1  gateway (192.168.206.1)  8.164 ms  8.524 ms  8.790 ms
 2  192.168.254.1 (192.168.254.1)  0.676 ms  0.643 ms  0.607 ms
 3  192.168.254.87 (192.168.254.87)  3.123 ms  3.460 ms  3.771 ms
 4  192.168.213.141 (192.168.213.141)  0.414 ms  0.388 ms  0.352 ms

IHEP校园网网关限制了跨网段转发广播类型包,在路由的最末端禁止了广播包:

$ traceroute 192.168.213.255
traceroute to 192.168.213.255 (192.168.213.255), 30 hops max, 60 byte packets
 1  gateway (192.168.206.1)  2.696 ms  3.024 ms  3.298 ms
 2  192.168.254.1 (192.168.254.1)  0.691 ms  0.655 ms  0.858 ms
 3  192.168.254.87 (192.168.254.87)  8.230 ms  8.707 ms  8.930 ms
 4  * * *
 5  * * *
 6  * * *

所以路由器也不会把192.168.213.255转发出去。

5.2.2 206.235/24 访问 19.31/24 上的PV

由于两个机器之间也跨网段,需要在中间的网关上进行设置(这里请计算中心的老师进行配合设置)。在206.235/24上进行设置,并caget:

$ EPICS_CA_ADDR_LIST=192.168.19.255
$ EPICS_CA_AUTO_ADDR_LIST=no

$ caget aaa

在206.235/24上抓包结果为:

$  sudo tcpdump -nn -i eno1|grep 192.168.19.255.5064
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
11:16:04.306329 IP 192.168.206.235.53922 > 192.168.19.255.5064: UDP, length 40
11:16:04.338373 IP 192.168.206.235.53922 > 192.168.19.255.5064: UDP, length 40
11:16:04.402205 IP 192.168.206.235.53922 > 192.168.19.255.5064: UDP, length 40
11:16:04.530383 IP 192.168.206.235.53922 > 192.168.19.255.5064: UDP, length 40
11:16:04.786288 IP 192.168.206.235.53922 > 192.168.19.255.5064: UDP, length 40

在19.31/24上抓包结果为:

$ sudo tcpdump -nn -i eno1|grep 255.5064
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno1, link-type EN10MB (Ethernet), capture size 262144 bytes
11:16:04.306329 IP 192.168.206.235.53922 > 255.255.255.255.5064: UDP, length 40
11:16:04.338373 IP 192.168.206.235.53922 > 255.255.255.255.5064: UDP, length 40
11:16:04.402205 IP 192.168.206.235.53922 > 255.255.255.255.5064: UDP, length 40
11:16:04.530383 IP 192.168.206.235.53922 > 255.255.255.255.5064: UDP, length 40
11:16:04.786288 IP 192.168.206.235.53922 > 255.255.255.255.5064: UDP, length 40

由于19.31/24上实际并未运行IOC,所以不具备名为aaa的PV,因此206.235/24发了5个为了查找PV的UDP广播包。若19.31/24上具备名为aaa的PV,则caget是可以成功的。

从以上实验结果可以看出,跨网段发UDP广播包查找PV是可行的
206.235/24发送广播包出来时,目的IP是直接广播192.168.19.255;到了接收端,目的IP被转变成了有限广播255.255.255.255。对此的解释:“交换机作转发的时候,在vlan内部改的这个目标地址,属于正常操作。vlan内部没必要有网段标记了,因此是全网广播。同时,交换机不会把这个全255广播转发给其他非19.xxx的子网。”

5.2.3 10.0.2.235/16 访问 10.0.2.200/24 上的PV(10.0.2.235/16 与 10.0.2.200/24 点对点连接,实际上网络根本ping不通)

EPICS_CA_ADDR_LIST127.255.255.25510.0.2.25510.0.255.25510.255.255.25510.0.2.200
EPICS_CA_AUTO_ADDR_LIST=NO×××××
EPICS_CA_AUTO_ADDR_LIST=YES×××××

对以上各个情况的解释:

(1)EPICS_CA_ADDR_LIST=127.255.255.255、EPICS_CA_AUTO_ADDR_LIST=YES 时,目的IP=10.0.255.255,目的MAC= ff-ff-ff- ff-ff-ff,10.0.2.200/24收到了数据帧,但是不响应该CA请求。

(2)此时10.0.2.255对于10.0.2.235/16 来说只是一个普通IP,并不是广播地址。发出CA请求之前会先发送ARP请求获得10.0.2.255的MAC地址,然而得不到响应。因此,EPICS_CA_ADDR_LIST=10.0.2.255时,不知道将CA请求的数据帧发给谁。

(3)此时10.255.255.255对于10.0.2.235/16 来说,已经不属于当前子网范围,所以CA请求的UDP广播帧根本就不会发出去。

(4)EPICS_CA_ADDR_LIST=10.0.2.200时,发出单播数据帧到10.0.2.200/24,可以收到响应。

5.3 同时请求多个主机上的多个IOC的PV

在连接PV时,发出的UDP查询报文中,同一报文内可能会夹杂来自多个主机的多个IOC的PV请求,而单个IOC可能会出现无权限对这种报文进行响应的情况,于是这种UDP查询作废或查询结果不完全,CA客户端继续发出UDP查询报文;当报文中对某一主机仅包含同一IOC的PV请求时,才会被该IOC响应。这一过程可能造成PV连接过程较久。

例:CA客户端(192.168.188.131)向 CA服务端(192.168.206.235)发送 CA 请求:

EPICS_CA_ADDR_LIST="192.168.206.235"
camonitor 234_ioc1:circle:x 235_ioc2:circle:x 235_ioc4:circle:x

其中,234_ioc1:circle:x 是 192.168.206.234 上的PV,235_ioc2:circle:x、235_ioc4:circle:x 是 192.168.206.235 上的PV。

在这里插入图片描述

235_ioc4 输出信息:

epics> CAS: UDP send to 192.168.188.131:58159 failed: Operation not permitted

在这里插入图片描述

在这里插入图片描述

6. 最终结论

EPICS CA请求是否可达,取决于两个因素:

  1. 目的IP列表的正确设置
  2. 网络连接上是否可达1(客户端可以发出请求并收到服务端返回的数据包、服务端可以收到请求)

当发出CA请求的客户端与IOC主机之间跨网段,会经过网关/路由器2,需要考虑目的IP列表中的IP是否可达的问题。

两种方案:
 网关/路由器禁止广播
EPICS_CA_ADDR_LIST=IP1 IP2 … Ipn(所有IOC主机的IP)
单机运行多IOC时,需要在IOC主机上用iptables对UDP的5064端口设置单播转广播。
Several soft IOCs on one host
How to Make Channel Access Reach Multiple Soft IOCs on a Linux Host

 网关/路由器不禁止广播
EPICS_CA_ADDR_LIST=subnet1_bcast subnet2_bcast …(所有IOC主机所在子网的广播地址)

7. 待解决问题

测试过程中发现,Windows操作系统无法接收UDP广播,原因待查;Linux接收正常,其他操作系统待测试。

附录

1. 查看本机ARP缓存表的命令

arp -aip neigh
删除某条ARP缓存:arp -d <IP>

2. 查看本机路由表

netstat -rnip routeroute -n
仅限于IP,不含MAC

3. 查看本机到某IP的路由

traceroute <IP>

4. 对本机某网卡抓包

IP层(IP数据报):tcpdump -nn -i <interface>
MAC层(数据帧):tshark、wireshark

Linux网络抓包分析工具(tcpdump、wireshark)
Wireshark基础使用和表达式语法

5. 防火墙和iptables

防火墙技术原理
Linux查看防火墙状态及开启关闭命令
Linux firewall防火墙详解(一)——firewall基础知识简介
Linux firewall防火墙详解(二)——firewall配置
firewall-cmd 使用总结

iptables系列教程(一)| iptables入门篇
iptables系列教程(二)| iptables语法规则


  1. 每一次IP请求发出时,IP报文中的目的IP就是当前请求的IP地址。而进一步封装成数据帧时,首先查询本机ARP缓存表中有无该IP的MAC映射,没有则ARP广播获得该映射,然后将目的MAC置为该IP所对应的MAC地址;若该IP的主机并不在当前局域网内,ARP广播无法获得该IP到MAC的映射,只能将目的MAC置为网关的MAC地址,交给路由器去查找该IP的路由。能查到该路由则数据链路层连接成功,否则连接失败。
    数据链路层连接成功后,还要考察网络层的源IP是否在目的IP的相同子网下,这可能会影响目的IP所在主机是否会返回响应。
    在这里插入图片描述
    192.168.206.146 ping 192.168.213.141 成功;
    在这里插入图片描述
    192.168.206.146 ping 192.168.255.255 失败。 ↩︎

  2. 网关与路由器区别
    交换机转发广播属于常规功能。
    路由器一般不转发广播包(https://blog.csdn.net/zxh2075/article/details/53817754),
    但也可以设置能够转发广播包。 ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EPICS CA请求能否成功的影响因素 的相关文章

  • AI智能呼叫中心系统,主要应用场景有哪些?

    互联网智能时代 xff0c 销售人员不再每天拨打数百个电话 xff0c 当前呼叫中心电话系统被企业常用在电销行业 金融行业 保险 贷款催收行业等外呼销售行业 由传统的呼叫中心基础上不断的进行升级和改善 xff0c 逐渐演变为人工智能电话外呼
  • ROS:geometry_msgs中 Point32 , Point ,PointStamped 的定义和转换

    ROS geometry msgs中Point32 Point PointStamped 的定义和转换 Point32和Point的定义Point32和Point的转换PointStamped 的定义和转换 本文所用ROS为kinetic版
  • ROS:回调函数不执行

    最近在写一个接收图片消息的节点时 xff0c 遇到了两次回调函数不调用的情况 xff0c 记录一下 循环中有continue被跳过了 具体代码如下 xff1a while ros ok if mat data 61 61 nullptr s
  • Python猜拳游戏

    关键点在于 user input 43 1 3与computer input的值进行比较 xff0c 这样就省掉了对于边界值0和2的单独判断 xff0c 简化了代码 from random import choice def finger
  • ROS:节点发布消息无对应话题名称

    最近在写一个发布里程的节点的时候遇到了 xff0c 发布了消息 xff0c 在ros却没有对应话题情况 通过rostopic list 和 rosnode info 节点名 命令查看 xff0c 均没有对应话题 xff0c 大致代码如下 x
  • 【python安全攻防】python简易端口扫描器

    文章目录 socket套接字optparse模块socket解析主机进行连接获取bannerthreading多线程端口扫描器python nmap端口扫描 对自己看python绝技的一次学习记录 socket套接字 与TCP端口进行交互
  • ROS中geometry_msgs常用消息类型

    官方文档 xff1a geometry msgs Msg Srv Documentation geometry msgs里面所有的消息数据类型 xff1a 节点之间仅支持使用消息通讯 Accel AccelStamped AccelWith
  • 【docker ros】docker 开启自启运行容器中的程序

    前言 xff1a 使用docker大规模部署应用 xff0c 而又需要开机自启 xff0c 自动启动容器中的程序 xff0c 这里以docker ros为例子 xff0c 使用systemctl服务 xff0c 结合shell脚本 xff0
  • 网络协议与网络编程(双电脑串口通讯)

    C C 43 43 网络编程 双电脑串口通讯 在阅读本文前 请确保先查看这篇文章 xff0c 学习有关TCP网编与单电脑信息传输实践 文章目录 C C 43 43 网络编程 双电脑串口通讯 1 让两台电脑连接同一个局域网2 查询IP地址3
  • Linux shell的数组详解

    Linux shell的数组详解 前提变量数组数组声明声明索引数组声明关联数组 数组赋值数组引用数组中常用的变量数组中的其它操作 示例 前提 程序是指 指令 43 数据 的组合 指令 xff1a bash脚本中的代码 xff08 函数 调用
  • cannot find trajectory file at ./examples/trajectory.txt

    slam十四讲 3 7显示运动轨迹的程序 trajectory txt文件路径修改 string trajectory file 61 34 examples trajectory txt 34 改为 string trajectory f
  • slam14讲,李代数库Sophus遇到的问题及解决办法

    首先遇到sophus安装问题是在第4章时 xff0c 高博虽然书上说 我们使用带模板的Sophus库 xff0c 但实际的代码使用的是非模板库 高博在git上给的sophus库文件我在make的时候报错 xff0c 找不到解决办法 xff0
  • PX4添加新的msg和topic

    本人也是初次接触PX4固件没几天 xff0c 学习了msg的一些知识后写下这个以供自己以后参考 一 首先在 PX4 Autopilot msg文件夹下新建一个 msg文件 xff1a 这里我添加的是Data link msg msg 在 m
  • 物理机安装LINUX后的网卡配置问题

    基础材料 xff1a CentOS7 物理服务器 背景说明 xff1a 安装完LINUX操作系统的网卡配置让主机连通网络 xff0c 对于系统管理员来说是再常见不过的事情 xff0c 而且基本上也没什么难度 xff0c 但凡做过系统管理员的
  • PX4添加新的库(lib)

    就在前一两天 xff0c PX4源代码更新了 xff0c 固件库的名称从Firmware变成了PX4 Autopilot 一 首先在lib下新建一个文件夹并添加 cpp hpp和CMakeLists txt 其中 cpp和 hpp是自己写的
  • PX4添加新的应用

    研究了四天怎么添加新的应用程序 xff0c 前几天都尝试着添加 cpp文件的应用程序 xff0c 跟着网上的方法都失败了 xff0c 结果今天试着添加一个 c文件的应用程序居然成功了 先把 c的添加方法写一写 xff0c 以后学会了怎么添加
  • PX4应用程序开机自启动

    修改启动脚本 新版本的PX4固件这些rc文件位置为 xff1a PX4 Autopilot ROMFS px4fmu common init d文件夹中 1 以rc为开头的都是飞控的启动脚本的文件 xff0c 通过这些文件决定那些应用程序应

随机推荐

  • 自由链表(free list)——SGI STL的空间配置器(allocator)第二级配置器维护方法

    参考 xff1a STL源码剖析 以及 STL空间配置器之第二级配置器的free list详解 span class token comment free list的节点 span span class token keyword unio
  • 【C语言 Linux系统开发 视频课程学习笔记】

    学习的课程在b站 xff1a 史上最强最细腻的linux嵌入式C语言学习教程 李慧芹老师 感谢李老师 xff01 感谢up主 xff01 本篇博客只是收集一下学习过程中遇到的函数和其他知识点 xff0c 并不会详细展开 某个函数的具体情况还
  • pthread线程私有数据TSD 几点测试结果

    更加详细的内容查看man手册或百度 xff0c 这里只是几个实际测试的结果 仅代表实验现象 xff0c 并不考虑实现原理 pthread key t key可以定义为全局变量 xff0c 全局变量属于所有线程共有的 在不同的线程中可以用pt
  • 【muduo库】server端流程图

    1 首先是根据陈硕老师的muduo库手册p11的类图 xff0c 结合自己的学习所得画的一个更详细的流程 xff0c 使用IO线程池与计算线程池 xff08 1 xff09 计算线程中 xff0c task 调用TcpConnection
  • std::bind实现在类外访问类私有成员函数

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • 树莓派(linux)安装scipy

    这里写目录标题 成功案例失败案例1 xff08 使用pip直接安装 xff09 失败案例2 xff08 使用pip安装依赖 xff09 命令安装yum使用alien 失败案例3 xff08 whl 43 setup py安装 xff09 查
  • 计算机的基本组成

    一个完整的计算机系统包括硬件系统和软件系统两大部分 xff1a 硬件系统 xff1a 是我们肉眼所见的实体 如 xff1a 电源 显示器 主机箱等 软件系统 xff1a 是我们使用的程序 xff0c 如 xff1a 微信 QQ音乐 浏览器等
  • pycharm关闭拼写检查

    pycharm默认会对函数名 xff0c 类名进行拼写检查 xff0c 不符合规则的会有一些提示和警告 xff0c 虽然不会影响程序运行 xff0c 但是看着还是比较不爽 xff0c 所以写一下关闭拼写检查的方法 打开pycharm xff
  • ROS基础——tf相关

    service和srv 我们有一个节点A会计算出右臂逆向关节运动学坐标 xff0c 我们有一个节点B xff0c 不会经常用到 xff0c 但是偶尔会用到节点A的这个坐标 假设我们用主题来通信 xff0c 那么我们的节点A要不停的来发布消息
  • EPICS的学习过程

    在此之前 xff0c 最好先学习下Linux系统的基本操作 一 了解什么是EPICS 了解EPICS base Channel Access IOC OPI 的概念 高能所内网可参考这些材料 xff1b 打开USPAS xff0c 熟悉其大
  • CentOS 7下ArchiveViewer的安装与使用

    1 下载 安装jdk 下载安装包https www oracle com java technologies downloads java8 xff1b 解压 xff1b 将 JAVA HOME bin路径添加到 PATH中 注意 xff1
  • CentOS7 安装 Archiver Appliance 的 Grafana服务

    1 安装 Grafana 7 采用rpm的安装方式 xff1a span class token function wget span https dl grafana com enterprise release grafana ente
  • AA中策略文件的使用

    一 AA策略文件 AA中关于存储策略设置的文件主要有两个 xff1a policies py archappl properties 每个appliance只有一个archappl properties和policies py文件 xff0
  • AA的管理

    1 AA的整体代码结构 AA代码的设计遵循了MVC模式 xff0c 将模型层 xff08 数据端 xff09 视图层 xff08 web客户端 xff09 控制层分离 数据端 xff08 M xff09 利用StoragePlugin接口建
  • CentOS 7下 VNC 服务的配置和开启、常见问题

    文章目录 1 X server Xvnc 和 VNC serverX Window SystemX ServerX ClientX Window ManagerDisplay ManagerX Window启动方式方式一 xff1a sta
  • AA部署中,修改Context属性造成的问题

    此处利用了https github com jeonghanlee epicsarchiverap env将AA安装在 opt epicsarchiverap 下 xff0c 并以系统服务的方式启停 问题产生原因 地球人都知道 xff0c
  • CentOS 7 下安装 Olog-es(Phoebus-olog)

    介绍报告 Olog es 服务端安装包 GitHub Olog phoebus olog Online logbook for experimental and industrial logging web服务端安装包 GitHub Olo
  • 视频监控系统安装和使用过程中的常见问题

    1 视频卡顿 花屏 当已确定POE供电距离在何时范围内时 xff0c 有可能是网线接线不规范或是网线损坏导致 对于POE供电距离较远 网络带宽较大的 xff0c 尽量连接在POE交换机的红口 xff08 红口保障 xff09 2 NVR的初
  • 关于CIDR地址的计算方法

    CIDR无类域间路由 xff0c 打破了原本的ABC类地址的规划限定 xff0c 使用地址段分配更加灵活 xff0c 日常工作中也经常使用 xff0c 也正是因为其灵活的特点使我们无法一眼辨认出网络号 广播地址 网络中的第一台主机等信息 x
  • EPICS CA请求能否成功的影响因素

    1 子网和广播域 子网掩码和广播域互为互补的网段 例如 xff1a 10 0 2 235的掩码为255 255 0 0 xff0c 则它所在的子网为10 0 0 0 xff0c 广播域为10 0 255 255 xff1b 192 168