在“福珑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架构的编译。
其中EPICS是我们使用的一套开源的分布式控制系统软件工具集,一般作用相当于我们工业控制领域使用的SCADA软件,下层对接plc或各种工控设备。
它由阿贡实验室和洛斯阿拉莫斯实验室受美国能源部支助开发。EPICS主要应用于国内外一些大型的科研装置,可以说是基础科研一套比较重要的应用软件。
应用在比如:光源加速器、粒子对撞机、托克马克装置、射电望远镜、质子治疗装置等。
网站 列举了使用EPICS软件开发的科研或商业项目。EPICS 软件中大多数代码都是独立于操作系统的,称为LibCom OSI库 (Operation System Independent操作系统独立代码)。
EPICS控制系统和商业化分布式控制系统比较:
对比项 | 商用DCS | EPICS | 说明 |
---|---|---|---|
开发成本 | × | √ | 节约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控制器。
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.linuxCommonARCH_CLASS = mips64ARCH_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.CommonWIND_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设备可大大降低系统成本。
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控制系统软件的整体支持,可以提供一套基于龙芯的开源的低成本的控制系统软件架构方案。
在“福珑2.0”主机上编译EPICS Ehtercat驱动软件的体验相关推荐
- 龙梦迷你电脑福珑2.0通过手机USB共享网络联网
当房间里没有有线网络的时候,龙梦迷你电脑怎么联网?今天成功实现联网.方法如下所示.一个有流量的手机,手机具有USB共享网络功能.一根数据线,一端是手机接口,例如type-C接口,微USB接口,另一端是 ...
- 用VMware Converter实现Esxi5.0到Esxi6.0主机上的虚拟机迁移(V2V)
1 概述: 现有两套VMware环境:Esxi5.0主机由vCenter5.0管理,Esxi6.0主机由vCenter6.0管理. 要实现把Esxi5.0主机上的虚拟机迁移到Esxi6.0主机上. 2 ...
- 云主机上编译安装pureftpd
一.环境说明 腾讯 云主机或者Ucloud云云主机,系统为Centos6 X86_64位,云主机本地不需要开启防火墙,只需要控制台安全组做防火墙策略就行,如下截图放开pureftpd的登录端口 二.p ...
- 海思AI芯片(Hi3519A/3559A)方案学习一Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel
参考了这位大佬的https://blog.csdn.net/avideointerfaces/article/details/88694447 先重申下我的平台为ubuntu18.0.4,SDK的目标 ...
- 海思AI芯片(Hi3519A/3559A)方案学习(三)Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel
先重申下我的平台为ubuntu18.0.4,SDK的目标平台为Hi3519AV100系列 准备工作 安装himix200交叉编译器 tar –xzf arm-himix200-linux.tgz su ...
- Android5.0 Gallery2上编译Gallery模块出错
在L上面,编译整个project可以编译通过,但是单独编译Gallery2模块出错,build gallery模块出现refocus的error target C++: libjni_jpegstre ...
- 【踩坑日记 · 嵌入式 Linux】在香橙派 Zero 2 上编译安装 CH340 驱动(OrangePi Zero 2)
前言 最近想尝试在 Linux 下编写和烧录 51 单片机程序,需要用到 CH340 模块,但是香橙派 Zero 2 没有预装它的驱动,所以需要下载 CH340 驱动的源码手动编译安装.在这里记录一下 ...
- UltraISO 安装系统时,提示无法在驱动器0分区上安装windows / WINPE类软件重装系统无法正常开机 解决办法
原因:传统的引导方式为Legacy引导和MBR硬盘,UEFI必须跟GPT对应,同理Legacy必须跟MBR对应.如果BIOS开启UEFI,而硬盘分区表格式为MBR则无法安装:BIOS关闭UEFI而硬盘 ...
- pppoe linux软件,在Ubuntu 18.04上编译安装pppoe客户端软件
PPPoE(以太网上的点对点协议Point-to-Point Protocol over Ethernet)是许多DSL Internet服务提供商使用的协议. RP-PPPoE是Linux的免费PP ...
最新文章
- 周长相等的正方形面积一定相等_必考单元:三年级下册面积计算公式+知识点+测试卷(附答案),重点内容,收藏练习!...
- Day19-File操作-创建 删除,文件过滤
- 从视频到语言: 视频标题生成与描述研究综述
- python学习笔记(五)——函数基础和函数参数
- 数据结构-树:根节点、子节点、叶子节点是什么?
- 学python编脚本_python 学习写脚本
- select 条件字段,数字类型加1
- sqlite 常用数据类型
- java监听键盘事件(控制台输出按键信息)
- 思科计算机网络技术第一章,cisco思科网络技术教程第一章.ppt
- cisco下模拟Linux防火墙,Cisco防火墙HA实例
- python 金融知识图谱_从零搭建金融证券知识图谱-Part2
- HTML a 标签详解
- Why do we insist? 打卡
- 电脑故障排除方法(风扇转一下,马上就停,主板没有其它任何响应)
- 风之语.惊闻周星驰电影票房超过30亿RMB
- 小数点用计算机怎么用,用Windows计算器进行小数数制转换的方法
- 遇到factory.BeanNotOfRequiredTypeException Bean named xxx is expected tobe of type
- pyserial_API函数说明
- pear在php中的用法,php使用pear_smtp发送邮件