wiki:epics/bbb/debian

Version 5 (modified by michkawa, 7 years ago) (diff)

--

BeagleBone Black(Debian8.7)にEPICSをインストール

以前、BeagleBone Black(以降、BBB)でcapeを作った時には、defaultOSがAngstromLinuxだったが、BBBがRev.CになってからはDebianがdefaultOSになっている。
しばらく、BBBを使う用事がなかったので放置していたが、簡易版の電圧測定をするためのEPICS IOCデバイスを作ることになったので、この際にBBB用のEPICS環境作成をしてみた。

OS

今回環境を作成するBBBのOSは、Debianの最新版 8.7(Jessie for BeagleBone via microSD card)をmicroSDカード上に展開して使用した。
コンパイルはBBB上のセルフビルドで行った。

環境は/opt/epicsに展開し、standaloneで実行できるようにする。

root@beaglebone:~# mkdir -p /opt/epics

EPICS base R3.15.5

使用するEPICS baseは安定版の最新である3.15.5
前回作成した時はR3.14.12.3で、その時からmake一発でコンパイルできたので今回も同じ。

root@beaglebone:~# cd /opt/epics
root@beaglebone:/opt/epics# mkdir -p R315.5/src
root@beaglebone:/opt/epics# cd R315.5/src
root@beaglebone:/opt/epics/R315.5/src# wget https://www.aps.anl.gov/epics/download/base/base-3.15.5.tar.gz
root@beaglebone:/opt/epics/R315.5/src# cd ..
root@beaglebone:/opt/epics/R315.5# tar zxvf base-3.15.5.tar.gz
root@beaglebone:/opt/epics/R315.5# mv base-3.15.5 base
root@beaglebone:/opt/epics/R315.5# cd base
root@beaglebone:/opt/epics/R315.5/base# make

modules/soft

次によく使うmodulesをインストール。

root@beaglebone:/opt/epics/R315.5# mkdir -p modules/soft

sequencer

インストール前にパッケージをインストール。

root@beaglebone:/opt/epics/R315.5# apt-get install re2c

展開してmake。

root@beaglebone:/opt/epics/R315.5# mkdir -p modules/soft/seq
root@beaglebone:/opt/epics/R315.5# cd src
root@beaglebone:/opt/epics/R315.5/src# wget http://www-csr.bessy.de/control/SoftDist/sequencer/releases/seq-2.2.4.tar.gz
root@beaglebone:/opt/epics/R315.5/src# cd ../modules/soft/seq
root@beaglebone:/opt/epics/R315.5/modules/soft/seq# tar zxvf /opt/epics/R315.5/src/seq-2.2.4.tar.gz
root@beaglebone:/opt/epics/R315.5/modules/soft/seq# mv seq-2.2.4 2.2.4
root@beaglebone:/opt/epics/R315.5/modules/soft/seq# cd 2.2.4/
root@beaglebone:/opt/epics/R315.5/modules/soft/seq/2.2.4# emacs -nw configure/RELEASE

EPICS_BASE=/opt/epics/R315.5/base

root@beaglebone:/opt/epics/R315.5/modules/soft/seq/2.2.4# make

asyn

asynも普通にmakeできる。

root@beaglebone:/opt/epics/R315.5# mkdir -p modules/soft/asyn
root@beaglebone:/opt/epics/R315.5# cd src
root@beaglebone:/opt/epics/R315.5/src# wget https://www.aps.anl.gov/epics/download/modules/asyn4-31.tar.gz
root@beaglebone:/opt/epics/R315.5/src# cd ../modules/soft/asyn
root@beaglebone:/opt/epics/R315.5/modules/soft/asyn# tar zxvf /opt/epics/R315.5/src/asyn4-31.tar.gz
root@beaglebone:/opt/epics/R315.5/modules/soft/asyn# mv asyn4-31 4-31
root@beaglebone:/opt/epics/R315.5/modules/soft/asyn# cd 4-31/
root@beaglebone:/opt/epics/R315.5/modules/soft/asyn/4-31# emacs -nw configure/RELEASE

#RELEASE Location of external products

#SUPPORT=/corvette/home/epics/devel
#-include $(TOP)/../configure/SUPPORT.$(EPICS_HOST_ARCH)

#  IPAC is only necessary if support for Greensprings IP488 is required
#  IPAC release V2-7 or later is required.
#IPAC=$(SUPPORT)/ipac-2-14

# SEQ is required for testIPServer
#SNCSEQ=$(SUPPORT)/seq-2-2-4
SNCSEQ=$(EPICS_BASE)/../modules/soft/seq/2.2.4/

#  EPICS_BASE 3.14.6 or later is required
#EPICS_BASE=/corvette/usr/local/epics-devel/base-3.15.5
EPICS_BASE=/opt/epics/R315.5/base
-include $(TOP)/../configure/EPICS_BASE.$(EPICS_HOST_ARCH)

root@beaglebone:/opt/epics/R315.5/modules/soft/asyn/4-31# make

streamdevice

streamdeviceも同じ。
但し、streamdeviceはgitHubに入っているので、masterをダウンロード。

root@beaglebone:/opt/epics/R315.5# mkdir -p modules/soft/stream
root@beaglebone:/opt/epics/R315.5# cd src
root@beaglebone:/opt/epics/R315.5/src# wget https://github.com/paulscherrerinstitute/StreamDevice/archive/master.zip
root@beaglebone:/opt/epics/R315.5/src# mv master.zip streamdevice.zip
root@beaglebone:/opt/epics/R315.5/src# cd ../modules/soft/stream
root@beaglebone:/opt/epics/R315.5/modules/soft/stream# unzip ../../../src/streamdevice.zip
root@beaglebone:/opt/epics/R315.5/modules/soft/stream# mv StreamDevice-master 2.7.7
root@beaglebone:/opt/epics/R315.5/modules/soft/stream# cd 2.7.7/

root@beaglebone:/opt/epics/R315.5/modules/soft/stream/2.7.7# export PATH=/opt/epics/R315.5/base/bin/linux-arm:$PATH
root@beaglebone:/opt/epics/R315.5/modules/soft/stream/2.7.7# makeBaseApp.pl -t support
root@beaglebone:/opt/epics/R315.5/modules/soft/stream/2.7.7# emacs -nw configure/RELEASE

SNCSEQ = $(EPICS_BASE)/../modules/soft/seq/2.2.4/
ASYN   = $(EPICS_BASE)/../modules/soft/asyn/4-31

ここで、/opt/epics/R315.5/modules/soft/stream/2.7.7以下の各ディレクトリにあるMakefileのTOPを変更。

TOP=..    -> TOP=.
TOP=../.. -> TOP=./..


root@beaglebone:/opt/epics/R315.5/modules/soft/stream/2.7.7# make

modules/instruments

BBBのIOを使うために専用(?)のmoduleをmakeする。
展開するディレクトリを作成。

root@beaglebone:/opt/epics/R315.5/modules# mkdir -p instruments/bbb

devgpio

GPIOを使うためのドライバサポート。
gitHubからダウンロード。

root@beaglebone:/opt/epics/R315.5/src# wget https://github.com/ffeldbauer/epics-devgpio/archive/master.zip
root@beaglebone:/opt/epics/R315.5/src# mv master.zip bbb_devgpio.zip
root@beaglebone:/opt/epics/R315.5/src# cd ../modules/instruments/bbb
root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb# unzip ../../../src/bbb_devgpio.zip
root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb# mv epics-devgpio-master devgpio
root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb# cd devgpio
root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb/devgpio# emacs -nw configure/RELEASE

SNCSEQ=$(EPICS_BASE)/../modules/soft/seq/2.2.4

# EPICS_BASE usually appears last so other apps can override stuff:
EPICS_BASE=/opt/epics/R315.5/base

root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb/devgpio# make

drvAsynI2C

今度はI2Cを使うためのドライバサポート。
asynとstreamdeviceでI2Cが使えるようになる。
これもgitHubからダウンロード。

root@beaglebone:/opt/epics/R315.5/src# wget https://github.com/ffeldbauer/drvAsynI2C/archive/master.zip
root@beaglebone:/opt/epics/R315.5/src# mv master.zip bbb_asyni2c.zip
root@beaglebone:/opt/epics/R315.5/src# cd ../modules/instruments/bbb
root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb# unzip ../../../src/bbb_asyni2c.zip
root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb# mv drvAsynI2C-master drvAsynI2C
root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb# cd drvAsynI2C
root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb/drvAsynI2C# emacs -nw configure/RELEASE

EPICS_BASE=/opt/epics/R315.5/base
ASYN=$(EPICS_BASE)/../modules/soft/asyn/4-31

root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb/drvAsynI2C# make

このままの状態ではstreamdeviceを使った通信ができないので、一緒に入っているパッチをStreamDeviceにあてる必要がある。
パッチを当てるstreamdeviceは 2.7.7_I2Cとして別にコンパイルしなおす。

root@beaglebone:/opt/epics/R315.5/modules/instruments/bbb/drvAsynI2C# cd /opt/epics/R315.5/modules/soft/stream/
root@beaglebone:/opt/epics/R315.5/modules/soft/stream# cp -r 2.7.7 2.7.7_I2C
root@beaglebone:/opt/epics/R315.5/modules/soft/stream# cd 2.7.7_I2C
root@beaglebone:/opt/epics/R315.5/modules/soft/stream/2.7.7_I2C# patch -p2 < /opt/epics/R315.5/modules/instruments/bbb/drvAsynI2C/streamDevice/0001-Added-asynI2C-interface.patch
patching file src/AsynDriverInterface.cc
patching file streamApp/Makefile
can't find file to patch at input line 87
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/configure/RELEASE b/configure/RELEASE
|index bee74c1..b95de67 100644
|--- a/configure/RELEASE
|+++ b/configure/RELEASE
--------------------------
File to patch: ^C

configure/RELEASEは自分で編集。以下の行を追加。

DRVASYNI2C=$(EPICS_BASE)/../modules/instruments/bbb/drvAsynI2C

root@beaglebone:/opt/epics/R315.5/modules/soft/stream/2.7.7_I2C# make clean;make

IOCで使うときには、configure/RELEASEに

ASYN       = $(EPICS_BASE)/../modules/soft/asyn/4-31
STREAM     = $(EPICS_BASE)/../modules/soft/stream/2.7.7_I2C
DRVASYNI2C = $(EPICS_BASE)/../modules/instruments/bbb/drvAsynI2C

を設定する。

extensions

extensionsのconfig fileをダウンロードして展開。

root@beaglebone:/opt/epics/R315.5# cd src/
root@beaglebone:/opt/epics/R315.5/src# wget https://www.aps.anl.gov/epics/download/extensions/extensionsTop_20120904.tar.gz
root@beaglebone:/opt/epics/R315.5/src# cd ..
root@beaglebone:/opt/epics/R315.5# tar zxvf src/extensionsTop_20120904.tar.gz

procServ

procServはなんか新しくなったみたい。githubに入っていたので、masterのzipを取得。

root@beaglebone:/opt/epics/R315.5/extensions# cd src/
root@beaglebone:/opt/epics/R315.5/extensions/src# wget https://github.com/ralphlange/procServ/archive/master.zip

              :
2017-06-21 00:16:04 (337 KB/s) - ‘master.zip’ saved [76417]

root@beaglebone:/opt/epics/R315.5/extensions/src# mv master.zip procServ.zip
root@beaglebone:/opt/epics/R315.5/extensions/src# unzip procServ.zip

展開したソースをmake。

root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# make
Cleaning autotools debris
rm -f configure aclocal.m4 Makefile.in Makefile.Automake.in;
autoreconf -si
configure.ac:32: installing 'build-aux/compile'
configure.ac:14: installing 'build-aux/config.guess'
configure.ac:14: installing 'build-aux/config.sub'
configure.ac:15: installing 'build-aux/install-sh'
configure.ac:15: installing 'build-aux/missing'
Makefile.am: installing 'build-aux/depcomp'
root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# ls
acceptFactory.cc  build-aux         connectionItem.cc  libtelnet.c        Makefile.in        procServ.h
aclocal.m4        ChangeLog         COPYING            libtelnet.h        NEWS               procServ.spec
appveyor.yml      clientFactory.cc  debian             makefile           processClass.h     procServ.txt
AUTHORS           configure         forkpty.c          Makefile.am        processFactory.cc  README.md
autom4te.cache    configure.ac      INSTALL            Makefile.Epics.in  procServ.cc
root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# ./configure

     :

configure: error: Documentation not found.  Use --disable-doc to skip installing it, or --enable-doc to generate it

configureでエラーになる。gitHubのREADMEに、asciidocとlibtelnetに依存関係があるというので、asciidocのパッケージをaptで検索。

root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# apt-cache search asciidoc
asciidoc - Highly configurable text format for writing documentation
asciidoctor - AsciiDoc to HTML rendering for Ruby
asciidoctor-doc - AsciiDoc to HTML rendering for Ruby (documentation)
root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# apt-get install asciidoc
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  dblatex docbook-dsssl docbook-utils docbook-xml docbook-xsl fonts-lmodern fonts-texgyre jadetex
  libaudio2 libauthen-sasl-perl libencode-locale-perl libfile-basedir-perl libfile-desktopentry-perl
  libfile-homedir-perl libfile-listing-perl libfile-mimeinfo-perl libfile-which-perl libfont-afm-perl
  libfontenc1 libharfbuzz-icu0 libhtml-form-perl libhtml-format-perl libhtml-parser-perl
  libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl
  libhttp-message-perl libhttp-negotiate-perl libio-html-perl libio-socket-ssl-perl libkpathsea6
  liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmng1 libnet-dbus-perl
  libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libopenjpeg5 libosp5 libostyle1c2
  libpoppler-qt4-4 libpoppler46 libpotrace0 libptexenc1 libqt4-xml libqtcore4 libqtgui4 libruby2.1
  libsgmls-perl libsp1c2 libsynctex1 libtcl8.6 libtie-ixhash-perl libtk8.6 liburi-perl libwww-perl
  libwww-robotrules-perl libx11-protocol-perl libxml-parser-perl libxml-twig-perl libxml-xpathengine-perl
  libxml2-utils libxslt1.1 libxss1 libyaml-0-2 libyaml-tiny-perl libzzip-0-13 lmodern lynx lynx-cur
  openjade prerex preview-latex-style prosper ps2eps python-apt python-apt-common qtcore4-l10n ruby
  ruby2.1 rubygems-integration sgml-base sgml-data sgmlspl sp tcl tcl8.6 tex-common tex-gyre texlive
  texlive-base texlive-bibtex-extra texlive-binaries texlive-extra-utils texlive-font-utils
  texlive-fonts-recommended texlive-fonts-recommended-doc texlive-generic-recommended texlive-latex-base
  texlive-latex-base-doc texlive-latex-extra texlive-latex-extra-doc texlive-latex-recommended
  texlive-latex-recommended-doc texlive-math-extra texlive-pictures texlive-pictures-doc texlive-pstricks
  texlive-pstricks-doc tipa tk tk8.6 vprerex x11-utils xdg-utils xml-core xmlto xsltproc xterm zip
Suggested packages:
  source-highlight vim-addon-manager docbook graphicsmagick-imagemagick-compat imagemagick latex-cjk-all
  opensp pdf-viewer texlive-lang-all texlive-lang-cyrillic texlive-xetex transfig docbook-dsssl-doc
  docbook-defguide dbtoepub docbook-xsl-doc-html docbook-xsl-doc-pdf docbook-xsl-doc-text docbook-xsl-doc
  docbook-xsl-saxon fop libsaxon-java libxalan2-java libxslthl-java xalan nas libdigest-hmac-perl
  libgssapi-perl libdata-dump-perl libcrypt-ssleay-perl qt4-qtconfig sgmls-doc libauthen-ntlm-perl
  libunicode-map8-perl libunicode-string-perl xml-twig-tools doc-base python-apt-dbg python-gtk2
  python-vte python-apt-doc ri ruby-dev bundler sgml-base-doc perlsgml w3-recs tcl-tclreadline perl-tk
  latexdiff latexmk dvidvi fragmaster lacheck purifyeps xindy chktex dvipng psutils t1utils
  python-pygments libtcltk-ruby dot2tex gvfs-bin xmltex xfonts-cyrillic
Recommended packages:
  wish
The following NEW packages will be installed:
  asciidoc dblatex docbook-dsssl docbook-utils docbook-xml docbook-xsl fonts-lmodern fonts-texgyre jadetex
  libaudio2 libauthen-sasl-perl libencode-locale-perl libfile-basedir-perl libfile-desktopentry-perl
  libfile-homedir-perl libfile-listing-perl libfile-mimeinfo-perl libfile-which-perl libfont-afm-perl
  libfontenc1 libharfbuzz-icu0 libhtml-form-perl libhtml-format-perl libhtml-parser-perl
  libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-daemon-perl libhttp-date-perl
  libhttp-message-perl libhttp-negotiate-perl libio-html-perl libio-socket-ssl-perl libkpathsea6
  liblwp-mediatypes-perl liblwp-protocol-https-perl libmailtools-perl libmng1 libnet-dbus-perl
  libnet-http-perl libnet-smtp-ssl-perl libnet-ssleay-perl libopenjpeg5 libosp5 libostyle1c2
  libpoppler-qt4-4 libpoppler46 libpotrace0 libptexenc1 libqt4-xml libqtcore4 libqtgui4 libruby2.1
  libsgmls-perl libsp1c2 libsynctex1 libtcl8.6 libtie-ixhash-perl libtk8.6 liburi-perl libwww-perl
  libwww-robotrules-perl libx11-protocol-perl libxml-parser-perl libxml-twig-perl libxml-xpathengine-perl
  libxml2-utils libxslt1.1 libxss1 libyaml-0-2 libyaml-tiny-perl libzzip-0-13 lmodern lynx lynx-cur
  openjade prerex preview-latex-style prosper ps2eps python-apt python-apt-common qtcore4-l10n ruby
  ruby2.1 rubygems-integration sgml-base sgml-data sgmlspl sp tcl tcl8.6 tex-common tex-gyre texlive
  texlive-base texlive-bibtex-extra texlive-binaries texlive-extra-utils texlive-font-utils
  texlive-fonts-recommended texlive-fonts-recommended-doc texlive-generic-recommended texlive-latex-base
  texlive-latex-base-doc texlive-latex-extra texlive-latex-extra-doc texlive-latex-recommended
  texlive-latex-recommended-doc texlive-math-extra texlive-pictures texlive-pictures-doc texlive-pstricks
  texlive-pstricks-doc tipa tk tk8.6 vprerex x11-utils xdg-utils xml-core xmlto xsltproc xterm zip
0 upgraded, 125 newly installed, 0 to remove and 0 not upgraded.
Need to get 760 MB of archives.
After this operation, 1,251 MB of additional disk space will be used.

ディスク容量を食いそうなのでパス。次にlibtelnet。

root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# apt-cache search libtelnet
libtelnet-dev - Small library for parsing the TELNET protocol - development files
libtelnet-utils - Small library for parsing the TELNET protocol - utilities
libtelnet2 - Small library for parsing the TELNET protocol - shared library
root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# apt-get install libtelnet-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libtelnet2
Suggested packages:
  libtelnet-utils telnet
The following NEW packages will be installed:
  libtelnet-dev libtelnet2
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 44.0 kB of archives.
After this operation, 145 kB of additional disk space will be used.
Do you want to continue? [Y/n]
         :

libtelnetは問題ないのでインストールした。
本体のコンパイル。
gitHubのREADMEにBuilding with the EPICS Build Systemとあるので、--with-epics-topオプションを設定する。
docは必要ないのでdisable。

root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# ./configure --with-epics-top=../.. --disable-doc
root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# make

            :

root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# make install

            :

root@beaglebone:/opt/epics/R315.5/extensions/src/procServ-master# ls -la /opt/epics/R315.5/extensions/bin/linux-arm
total 248
drwxr-xr-x 2 root root   4096 Jun 21 00:44 .
drwxr-xr-x 3 root root   4096 Jun 21 00:44 ..
-r-xr-xr-x 1 root root 243604 Jun 21 00:44 procServ