在“福珑2.0”主机上编译EPICS Ehtercat驱动软件的体验

在“福珑2.0”主机上开发EPICS软件的体验

一、摘要

收到福珑2.0开发主机以后内心有点小激动,机身上的银色logo特别提神。
“龙芯发烧友开发机”福珑2.0”,外观小巧玲珑,主机长宽尺寸都只有155毫米,机身高度为70毫米。
福珑2.0开发机搭载龙芯3A4000低电压版处理器,主频1.5GHz,集成显卡,搭配龙芯7A1000芯片组。
俱乐部版自带512GB固态硬盘,采用国产忆芯主控、国产闪存颗粒,M.2-2280固态,支持PCIe、NVMe。
标配8GB DDR4 SO-DIMM内存、两个WGI211AT集成千兆网卡、Realtek ALC662集成声卡。
”福珑2.0”开发机可适配国产麒麟、Loongnix、翼辉等国产操作系统,操作系统底层多为linux内核,
非常适合做EPICS IOC 控制器。我这里选择的是Loongnix,方便安装软件包。

对我来说控制系统中大量使用进口设备作为服务器或过程控制设备(如西门子,斯奈德,ABB等),即使在软件系统中集成了国产新华,和利时等控制设备,底层的控制器芯片和实时操作系统都是基于国外的技术。ARM,X86和Vxwork、 QNX等,这一直是个遗憾。

好在大多数项目都是以linux操作系统作为平台开发,所以我感觉适配到Loongnix操作系统应该没有太多问题
主要是实现基于mips架构的编译。

图1,福珑开箱照和系统配置界面

其中EPICS是我们使用的一套开源的分布式控制系统软件工具集,一般作用相当于我们工业控制领域使用的SCADA软件,下层对接plc或各种工控设备。
它由阿贡实验室和洛斯阿拉莫斯实验室受美国能源部支助开发。EPICS主要应用于国内外一些大型的科研装置,可以说是基础科研一套比较重要的应用软件。
应用在比如:光源加速器、粒子对撞机、托克马克装置、射电望远镜、质子治疗装置等。
网站 列举了使用EPICS软件开发的科研或商业项目。EPICS 软件中大多数代码都是独立于操作系统的,称为LibCom OSI库 (Operation System Independent操作系统独立代码)。

EPICS控制系统和商业化分布式控制系统比较:

对比项商用DCSEPICS说明
开发成本×节约20人年软件 开发成本*
接口可扩展性×官方支持81种工业通讯协议,111个厂商设备,还不包含各国自主开发的通讯协议支持* 官方网站:
源代码/开放性×90年代始,开放性的国际合作开发模式
多平台支持×支持Vxwoks,Linux,MacOS,Win
功能完整性操作界面、数据存储、报警管理、状态机等
系统规范性×EPICS软件开发管理相对松散

ITER“国际热核聚变实验堆”的推动弥补了EPICS规范性差的不足,发布了一整套基于EPICS开发控制系统设计标准,并且通过控制系统的模型化,实现EPICS控制系统开发系统级组态。

二、EPICS Base3.15.8安装

EPICS Base是EPICS控制系统的核心包,它的主要功能是运行一个基于内存的实时数据库,这个数据库可以跟驱动模块实时的交互数据,实现对设备数据采集和控制。另外对上层人机界面,报警系统,历史数据库系统等提供数据订阅服务。EPICS最初是运行在Vxworks实时操作系统的,它具有控制逻辑编程功能。所以利用longnix PREEMPT_RT实时内核,可以开发基于龙芯的PC控制器。
EPICS Baseb编译过程

2.1 识别系统结构:

执行 ./startup/EpicsHostArch
1. src/tools/EpicsHostArch.pl: Architecture 'mips64el-linux-thread-multi' not recognized
#uname -a 
Linux localhost.localdomain 3.10.84-23.fc21.loongson.8.mips64el #1 SMP PREEMPT Thu Mar 5 17:56:57 CST 2020 mips64 mips64 mips64 GNU/Linux
修改 src/tools/EpicsHostArch.pl 文件:

增加一行

return 'linux-mips64' if m/^mips64el-linux/;
执行 ./startup/EpicsHostArch
linux-mips64

引入环境变量:EPICS_HOST_ARCH = linux-mips64

2.2 安装EPICS base所需的软件包

dnf install gcc
dnf install gcc-c++
dnf install readline-devel
dnf install perl-ExtUtils-Install

2.3 configure/os目录下系统支持文件:

2.3.1. 增加 CONFIG.Common.linux_mips64
# CONFIG.Common.linux-mips64
# Definitions for linux-mips64 target builds
# Sites may override these definitions in CONFIG_SITE.Common.linux-mips64
#-------------------------------------------------------

# Include definitions common to all linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon

ARCH_CLASS = mips64

ARCH_DEP_CFLAGS = $(GNU_TUNE_CFLAGS)
ARCH_DEP_CPPFLAGS += -D_mips64_

OP_SYS_CFLAGS += -mips64
OP_SYS_LDFLAGS += -mips64

# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,
# e.g. mips64-linux-gcc, put a GNU_TARGET definition in
# CONFIG_SITE.<host>.linux-mips64 file, e.g. GNU_TARGET=mips64t-linux
2.3.2 增加CONFIG.linux_mips64.Common
# CONFIG.linux-mips64.Common
#
# Definitions for linux-mips64 host builds
# Sites may override these definitions in CONFIG_SITE.linux-mips64.Common
#-------------------------------------------------------

#Include definitions common to unix hosts
include $(CONFIG)/os/CONFIG.UnixCommon.Common

WIND_HOST_TYPE = mips64el-linux

2.3.3 增加 CONFIG_SITE.linux_mips64.Common
# CONFIG_SITE.linux-mips64.Common
#
# Site override definitions for linux-mips64 host builds
#-------------------------------------------------------

#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040 solaris-sparc
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
#CROSS_COMPILER_TARGET_ARCHS = RTEMS-mvme2100
2…3.4 部分编译参数的适配

1.修改CONFIG.Common.linuxCommon

POSIX_LDLIBS = -lpthread -shared  #增加动态链接符号:shared

2.修改 CONFIG.Common

USR_ARFLAGS = -rv  #增加 ar静态库参数-rv

3.make 编译

三、ASYN 编译

3.1 epics-modules / asyn所需的软件包

dnf install rpcgen
dnf install libtirpc-devel
修改 /configure/RELEASE 文件

只需要写对EPICS_BASE路径,其它屏蔽。

Make 编译

四、Etherlab驱动支持

EtherLab 主站驱动包是一个开源的Ethercat总线通讯驱动,可以实现基于以太网的Ethercat 总线从站模块的通讯。主要是看重Ethercat基于以太网总线架构和优异的性能。另外选用国产化的(南京实点)Ethercat的从站IO设备可大大降低系统成本。

plc产品价格对比

4.1 执行 …/bootstrap

修改 configure.ac

AM_INIT_AUTOMAKE([-Wall -Werror dist-bzip2 subdir-objects])

增加对子文件夹的自动编译subdir-objects

4.2 执行…/configure --enable-generic --disable-r8169 --disable-8139too --with-linux-dir=/usr/src/kernels/3.10.84-23.fc21.loongson.8.mips64el/

安装 kernel-devel

4.3.报错:In file included from liberror.c:1:0:

 extern char ecrt_errstring[ERRSTRING_LEN];

修改liberror.h

extern char *ecrt_errstring[ERRSTRING_LEN];   liberro.c和liberror.h C定义不一致

在这里插入图片描述

五、Etherlabmaster-code EPICS软件安装

EPICS 需要Ethercat驱动支持来实现实时数据库和驱动程序的接口

5.1 没有libxml/tree.h

dnf install libxml2-devel

5.2 找不到ecrt.h liberror.h

只要把etherlabmaster-code/ehtercatAPP/scanner/Makefile文件中

ETHERLAB=/usr/local/epics/epics-modules/etherlabmaster-code
ETHERLABPREFIX=/opt/etherlab

修改成ethercat驱动包和ehtercat 安装路径就好了

5.3 找不到./usr/bin dls-python

把所有的python执行命令改为 python 版本在2.7

在这里插入图片描述

总结:

个人感觉龙芯平台已经进入到了一个快速发展的通道,正处在软件生态建立和完善的过程中,希望个人能小有贡献。编译过程中会遇到一些小问题,但总的来说除了修改编译参数和原始配置外,没有大的问题,有机会会把编译报告发到论坛上。后续计划把EPICS相关历史数据库,报警系统,人机界面等编译到龙芯平台上,实现龙芯对EPICS控制系统软件的整体支持,可以提供一套基于龙芯的开源的低成本的控制系统软件架构方案。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值