| 1 | = !BeagleBone Black へのEPICS インストール = |
| 2 | |
| 3 | [http://ja.wikipedia.org/wiki/Raspberry_Pi raspberry pi] の対抗馬として登場した[http://beagleboard.org/Products/BeagleBone%20Black BeagleBone Black(以降はBBB)]へお約束のEPICSインストールするためのメモ。 |
| 4 | |
| 5 | == Angstrom == |
| 6 | |
| 7 | BBBのデフォルトで入っているOSであるAngstrom Linuxにインストール。今回はeMMC上に直接インストールしたが、AngstromをmicroSDにインストールしたものに設定したほうが精神衛生上いいかも。 |
| 8 | |
| 9 | |
| 10 | === EPICS base === |
| 11 | |
| 12 | EPICSのbaseはR3.14.2.3を使用し、/optにインストール。[[br]] |
| 13 | コンパイル環境は初めから入っているようなので、パッケージの追加なしでコンパイル。 |
| 14 | |
| 15 | {{{ |
| 16 | root@beaglebone:~# mkdir -p /opt/epics/R314.12.3 |
| 17 | root@beaglebone:~# cd /opt/epics/R314.12.3 |
| 18 | root@beaglebone:/opt/epics/R314.12.3# wget http://www.aps.anl.gov/epics/download/base/baseR3.14.12.3.tar.gz |
| 19 | root@beaglebone:/opt/epics/R314.12.3# tar zxvf baseR3.14.12.3.tar.gz |
| 20 | root@beaglebone:/opt/epics/R314.12.3# mv base-3.14.12.3 base |
| 21 | root@beaglebone:/opt/epics/R314.12.3# cd base |
| 22 | root@beaglebone:/opt/epics/R314.12.3/base# make |
| 23 | }}} |
| 24 | |
| 25 | と思ったら、途中で止まった。 |
| 26 | |
| 27 | {{{ |
| 28 | perl /usr/lib/perl/5.14.2/ExtUtils/xsubpp -typemap /usr/lib/perl/5.14.2/ExtUtils/typemap ../Cap5.xs > Cap5.c_new && mv Cap5.c_new Cap5.c |
| 29 | Can't open perl script "/usr/lib/perl/5.14.2/ExtUtils/xsubpp": No such file or directory |
| 30 | make[3]: *** [Cap5.c] Error 2 |
| 31 | make[3]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5/O.linux-arm' |
| 32 | make[2]: *** [install.linux-arm] Error 2 |
| 33 | make[2]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5' |
| 34 | make[1]: *** [cap5.install] Error 2 |
| 35 | make[1]: Leaving directory `/opt/epics/R314.12.3/base/src' |
| 36 | make: *** [src.install] Error 2 |
| 37 | }}} |
| 38 | |
| 39 | xsubppというコマンドがないらしい。[[br]] |
| 40 | perlのスクリプトらしいので、検索でそれらしいところからwget。 |
| 41 | |
| 42 | {{{ |
| 43 | root@beaglebone:/usr/lib/perl/5.14.2/ExtUtils# wget http://www.boristheengineer.co.uk/slug/download/xsubpp |
| 44 | Connecting to www.boristheengineer.co.uk (212.159.8.91:80) |
| 45 | xsubpp 100% |***************************************************************| 51745 0:00:00 ETA |
| 46 | }}} |
| 47 | |
| 48 | 再度、make。 |
| 49 | |
| 50 | {{{ |
| 51 | root@beaglebone:/opt/epics/R314.12.3/base# make |
| 52 | |
| 53 | : |
| 54 | |
| 55 | perl /usr/lib/perl/5.14.2/ExtUtils/xsubpp -typemap /usr/lib/perl/5.14.2/ExtUtils/typemap ../Cap5.xs > Cap5.c_new && mv Cap5.c_new Cap5.c |
| 56 | Can't find /usr/lib/perl/5.14.2/ExtUtils/typemap in /opt/epics/R314.12.3/base/src/cap5 |
| 57 | make[3]: *** [Cap5.c] Error 2 |
| 58 | make[3]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5/O.linux-arm' |
| 59 | make[2]: *** [install.linux-arm] Error 2 |
| 60 | make[2]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5' |
| 61 | make[1]: *** [cap5.install] Error 2 |
| 62 | make[1]: Leaving directory `/opt/epics/R314.12.3/base/src' |
| 63 | make: *** [src.install] Error 2 |
| 64 | }}} |
| 65 | |
| 66 | 今度はtypemapがないらしい。同じところからwget。 |
| 67 | |
| 68 | {{{ |
| 69 | root@beaglebone:/usr/lib/perl/5.14.2/ExtUtils# wget http://www.boristheengineer.co.uk/slug/download/typemap |
| 70 | Connecting to www.boristheengineer.co.uk (212.159.8.91:80) |
| 71 | typemap 100% |***************************************************************| 6810 0:00:00 ETA |
| 72 | }}} |
| 73 | |
| 74 | 再度、make。 |
| 75 | |
| 76 | {{{ |
| 77 | root@beaglebone:/opt/epics/R314.12.3/base# make |
| 78 | |
| 79 | : |
| 80 | |
| 81 | rm -f CA.html |
| 82 | podchecker ../CA.pm && pod2html --infile=../CA.pm --outfile=CA.html |
| 83 | /bin/sh: podchecker: command not found |
| 84 | make[3]: *** [CA.html] Error 127 |
| 85 | make[3]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5/O.linux-arm' |
| 86 | make[2]: *** [install.linux-arm] Error 2 |
| 87 | make[2]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5' |
| 88 | make[1]: *** [cap5.install] Error 2 |
| 89 | make[1]: Leaving directory `/opt/epics/R314.12.3/base/src' |
| 90 | make: *** [src.install] Error 2 |
| 91 | }}} |
| 92 | |
| 93 | 今度はpodcheckerがない。[[br]] |
| 94 | 検索してもあまり芳しくないので、pfrproc6でwhichしたら/usr/binにあったので、中身を見るとただのperlスクリプトだった。perlの追加パッケージをインストール。[[br]] |
| 95 | Angstromのパッケージ一覧は、[http://www.angstrom-distribution.org/repo/?letter=p]で検索可能だったので、それらしいものを取得してインストール。[[br]] |
| 96 | Angstromのパッケージ管理ツールは opkg というプログラムを使っているらしい。 |
| 97 | |
| 98 | {{{ |
| 99 | root@beaglebone:~/pkg# wget http://www.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv7a-vfp-neon/perl/perl-module-pod-checker_5.14.2-r13.2_armv7a-vfp-neon.ipk |
| 100 | Connecting to www.angstrom-distribution.org (188.40.83.200:80) |
| 101 | perl-module-pod-chec 100% |***************************************************************| 12414 0:00:00 ETA |
| 102 | root@beaglebone:~/pkg# opkg install perl-module-pod-checker_5.14.2-r13.2_armv7a-vfp-neon.ipk |
| 103 | Upgrading perl-module-pod-checker on root from 5.14.2-r13.1 to 5.14.2-r13.2... |
| 104 | Configuring perl-module-pod-checker. |
| 105 | }}} |
| 106 | |
| 107 | インストール後にインストールされたファイルの一覧を見てもモジュールだけだったので、pfrproc6からコピー。 |
| 108 | |
| 109 | {{{ |
| 110 | root@beaglebone:~/pkg# opkg files perl-module-pod-checker |
| 111 | Package perl-module-pod-checker (5.14.2-r13.2) is installed on root and has the following files: |
| 112 | /usr/lib/perl/5.14.2/Pod/Checker.pm |
| 113 | root@beaglebone:~/pkg# cd /usr/bin |
| 114 | root@beaglebone:/usr/bin# scp pfrproc6.cerl.kek.jp:/usr/bin/podchecker . |
| 115 | }}} |
| 116 | |
| 117 | 再度、make。 |
| 118 | |
| 119 | {{{ |
| 120 | root@beaglebone:/opt/epics/R314.12.3/base# make |
| 121 | |
| 122 | : |
| 123 | |
| 124 | /bin/sh: pod2html: command not found |
| 125 | make[3]: *** [CA.html] Error 127 |
| 126 | make[3]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5/O.linux-arm' |
| 127 | make[2]: *** [install.linux-arm] Error 2 |
| 128 | make[2]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5' |
| 129 | make[1]: *** [cap5.install] Error 2 |
| 130 | make[1]: Leaving directory `/opt/epics/R314.12.3/base/src' |
| 131 | make: *** [src.install] Error 2 |
| 132 | }}} |
| 133 | |
| 134 | 今度は、pod2htmlがない。pfrproc6からまたコピーして、再度、make。 |
| 135 | |
| 136 | {{{ |
| 137 | podchecker ../CA.pm && pod2html --infile=../CA.pm --outfile=CA.html |
| 138 | ../CA.pm pod syntax OK. |
| 139 | Installing html ../../../html/./CA.html |
| 140 | rm CA.html |
| 141 | make[3]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5/O.linux-arm' |
| 142 | make[2]: Leaving directory `/opt/epics/R314.12.3/base/src/cap5' |
| 143 | make[1]: Leaving directory `/opt/epics/R314.12.3/base/src' |
| 144 | root@beaglebone:/opt/epics/R314.12.3/base# |
| 145 | }}} |
| 146 | |
| 147 | やっと、通った。 |
| 148 | |
| 149 | {{{ |
| 150 | root@beaglebone:/ cd /opt/epics/R314.12.3/base/bin/linux-arm |
| 151 | root@beaglebone:/opt/epics/R314.12.3/base/bin/linux-arm# ./cainfo PFRCO:ENECNTR:CH0001 |
| 152 | **** The executable "caRepeater" couldn't be located |
| 153 | **** because of errno = "No such file or directory". |
| 154 | **** You may need to modify your PATH environment variable. |
| 155 | **** Unable to start "CA Repeater" process. |
| 156 | PFRCO:ENECNTR:CH0001 |
| 157 | State: connected |
| 158 | Host: 172.28.64.120:5064 |
| 159 | Access: read, write |
| 160 | Native data type: DBF_DOUBLE |
| 161 | Request type: DBR_DOUBLE |
| 162 | Element count: 1 |
| 163 | |
| 164 | }}} |
| 165 | |
| 166 | とりあえず動いた。 |
| 167 | |
| 168 | == sequencer == |
| 169 | |
| 170 | 次にseqencerをコンパイル。 |
| 171 | |
| 172 | {{{ |
| 173 | root@beaglebone:/opt/epics/R314.12.3# mkdir -p modules/soft/seq |
| 174 | root@beaglebone:/opt/epics/R314.12.3# cd modules/soft/seq |
| 175 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/seq# wget http://www-csr.bessy.de/control/SoftDist/sequencer/releases/seq-2.1.14.tar.gz |
| 176 | Connecting to www-csr.bessy.de (193.149.12.250:80) |
| 177 | seq-2.1.14.tar.gz 100% |***************************************************************| 298k 0:00:00 ETA |
| 178 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/seq# tar zxvf seq-2.1.14.tar.gz |
| 179 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/seq# mv seq-2.1.14 2.1.14 |
| 180 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/seq# cd 2.1.14 |
| 181 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/seq/2.1.14# vi configure/RELEASE |
| 182 | |
| 183 | EPICS_BASE=/opt/epics/R314.12.3/base |
| 184 | |
| 185 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/seq/2.1.14# make |
| 186 | }}} |
| 187 | |
| 188 | いつも通り、途中でre2cがないといわれるので、re2cをインストール |
| 189 | |
| 190 | {{{ |
| 191 | root@beaglebone:~/tmp# wget http://sourceforge.net/projects/re2c/files/re2c/0.13.6/re2c-0.13.6.tar.gz |
| 192 | root@beaglebone:~/tmp# cd re2c-0.13.6 |
| 193 | root@beaglebone:~/tmp/re2c-0.13.6# ./configure |
| 194 | root@beaglebone:~/tmp/re2c-0.13.6# make |
| 195 | root@beaglebone:~/tmp/re2c-0.13.6# make install |
| 196 | }}} |
| 197 | |
| 198 | 再度、make。 |
| 199 | |
| 200 | {{{ |
| 201 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/seq/2.1.14# make |
| 202 | }}} |
| 203 | |
| 204 | コンパイル完了。 |
| 205 | |
| 206 | == asyn == |
| 207 | |
| 208 | asynもコンパイル。 |
| 209 | |
| 210 | {{{ |
| 211 | root@beaglebone:/opt/epics/R314.12.3/modules/soft# mkdir asyn |
| 212 | root@beaglebone:/opt/epics/R314.12.3/modules/soft# cd asyn |
| 213 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/asyn# wget http://www.aps.anl.gov/epics/download/modules/asyn4-21.tar.gz |
| 214 | Connecting to www.aps.anl.gov (164.54.98.14:80) |
| 215 | asyn4-21.tar.gz 100% |***************************************************************| 6842k 0:00:00 ETA |
| 216 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/asyn# tar zxvf asyn4-21.tar.gz |
| 217 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/asyn# mv asyn4-21 4-21 |
| 218 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/asyn# cd 4-21 |
| 219 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/asyn/4-21# vi configure/RELEASE |
| 220 | |
| 221 | #RELEASE Location of external products |
| 222 | |
| 223 | #SUPPORT=/corvette/home/epics/devel |
| 224 | #-include $(TOP)/../configure/SUPPORT.$(EPICS_HOST_ARCH) |
| 225 | |
| 226 | # IPAC is only necessary if support for Greensprings IP488 is required |
| 227 | # IPAC release V2-7 or later is required. |
| 228 | #IPAC=$(SUPPORT)/ipac-2-11 |
| 229 | |
| 230 | # SEQ is required for testIPServer |
| 231 | SNCSEQ=/opt/epics/R314.12.3/modules/soft/seq/2.1.14 |
| 232 | |
| 233 | # EPICS_BASE 3.14.6 or later is required |
| 234 | LINUX_GPIB=NO |
| 235 | EPICS_BASE=/opt/epics/R314.12.3/base |
| 236 | -include $(TOP)/../configure/EPICS_BASE.$(EPICS_HOST_ARCH) |
| 237 | |
| 238 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/asyn/4-21# make |
| 239 | |
| 240 | : |
| 241 | |
| 242 | /usr/bin/gcc -c -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500 -DUNIX -D_BSD_SOURCE -Dlinux -D_REENTRANT -O3 -Wall -fPIC -MMD -I. -I../O.Common -I. -I.. -I../../asyn/asynDriver -I../../asyn/asynGpib -I../../asyn/drvAsynSerial -I../../asyn/interfaces -I../../asyn/miscellaneous -I../../asyn/asynPortDriver/exceptions -I../../asyn/asynPortDriver -I../../asyn/devEpics -I../../asyn/asynRecord -I../../asyn/vxi11 -I../../asyn/ni1014 -I../../asyn/devGpib -I../../include/os/Linux -I../../include -I/opt/epics/R314.12.3/modules/soft/seq/2.1.14/include -I/opt/epics/R314.12.3/base/include/os/Linux -I/opt/epics/R314.12.3/base/include ../../asyn/asynRecord/drvAsyn.c |
| 243 | cp ../vxi11/vxi11core.rpcl . |
| 244 | rpcgen vxi11core.rpcl |
| 245 | make[2]: rpcgen: Command not found |
| 246 | make[2]: *** [vxi11core_xdr.c] Error 127 |
| 247 | make[2]: Leaving directory `/opt/epics/R314.12.3/modules/soft/asyn/4-21/asyn/O.linux-arm' |
| 248 | make[1]: *** [install.linux-arm] Error 2 |
| 249 | make[1]: Leaving directory `/opt/epics/R314.12.3/modules/soft/asyn/4-21/asyn' |
| 250 | make: *** [asyn.install] Error 2 |
| 251 | }}} |
| 252 | |
| 253 | 今回はrpcgenがないと言われて、エラーになる。[[br]] |
| 254 | 色々調べた結果、glibc-utilsに入っているようなので、パッケージをインストール。 |
| 255 | |
| 256 | {{{ |
| 257 | root@beaglebone:~/pkg# wget http://www.angstrom-distribution.org/feeds/v2012.12/ipk/eglibc/armv7a-vfp-neon/base/eglibc-utils_2.16-r15+svnr20393.5_armv7a-vfp-neon.ipk |
| 258 | Connecting to www.angstrom-distribution.org (188.40.83.200:80) |
| 259 | eglibc-utils_2.16-r1 100% |***************************************************************| 157k 0:00:00 ETA |
| 260 | root@beaglebone:~/pkg# opkg install eglibc-utils_2.16-r15+svnr20393.5_armv7a-vfp-neon.ipk |
| 261 | Installing eglibc-utils (2.16-r15+svnr20393.5) to root... |
| 262 | Configuring eglibc-utils. |
| 263 | root@beaglebone:~/pkg# opkg files eglibc-utils |
| 264 | Package eglibc-utils (2.16-r15+svnr20393.5) is installed on root and has the following files: |
| 265 | /usr/bin/sprof |
| 266 | /usr/bin/gencat |
| 267 | /usr/bin/pcprofiledump |
| 268 | /usr/sbin/zic |
| 269 | /usr/bin/sotruss |
| 270 | /usr/bin/getent |
| 271 | /usr/bin/locale |
| 272 | /usr/sbin/zdump |
| 273 | /usr/bin/getconf |
| 274 | /usr/bin/iconv |
| 275 | /usr/bin/makedb |
| 276 | /usr/bin/rpcgen |
| 277 | /usr/bin/pldd |
| 278 | /usr/bin/tzselect |
| 279 | /usr/bin/xtrace |
| 280 | /usr/sbin/iconvconfig |
| 281 | }}} |
| 282 | |
| 283 | 入ってたので、再度make。[[br]] |
| 284 | 今度はコンパイル完了。 |
| 285 | |
| 286 | == !StreamDevice == |
| 287 | |
| 288 | asynを入れたらStreamDeviceを入れないと意味がない。 |
| 289 | |
| 290 | {{{ |
| 291 | root@beaglebone:/opt/epics/R314.12.3/modules/soft# mkdir stream |
| 292 | root@beaglebone:/opt/epics/R314.12.3/modules/soft# cd stream |
| 293 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/stream# wget http://epics.web.psi.ch/software/streamdevice/StreamDevice-2-6.tgz |
| 294 | Connecting to epics.web.psi.ch (129.129.190.101:80) |
| 295 | StreamDevice-2-6.tgz 100% |***************************************************************| 154k 0:00:00 ETA |
| 296 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/stream# tar zxvf StreamDevice-2-6.tgz |
| 297 | root@beaglebone:/opt/epics/R314.12.3/modules/soft/stream# mv StreamDevice-2-6 2-6 |
| 298 | }}} |
| 299 | |
| 300 | StreamDeviceはいつもと同じ方法でコンパイルOK |