Entwicklungsumgebung für den microIOC

Derzeit werden drei Einsatzfelder für den microIOC bearbeitet:
  • Antrieb für das SIS-Injektions-Septum: Gerätemodell DSME

  • Allgemeine Schrittmotorantriebe (kompatibel zu / als Ersatz für die bisherigen Schrittmotorantriebe und Schrittmotorpaare): Gerätemodell DSM und DSKM

  • Bedienung einer GPIB-Schnittstelle, zum Anschluss von Geräten über den GPIB-Bus: Gerätemodell GPIB

Für die Software der Septum-Antriebe wird noch die ursprüngliche Cosylab-Umgebung verwendet. Das Entwicklungssystem dafür ist auf einem gesonderten Rechner (belpc060) installiert. Rechner steht im Labor.

Die microIOCs für das GPIB-Interface ist umgestellt auf ein Systemumfeld, dass weitgehend ähnlich ist zu dem für die PowerPCs verwendeten Umfeld. Insbesondere ist dafür kein Entwicklungssystem erfoderlich, was auf einem eigenen Rechner (oder einer virtuellen Maschine) speziell installiert werden werden muss - die Entwicklung erfolgt im normalen asl7nn Umfeld.

Die microIOCs für die allgemeinen Schrittmotore befinden sich noch in der Umstellung. Sie konnten nur teilweise in die neue Entwicklungsumgebung integriert werden. Es fehlt unter anderem die server- und lcMonitor-Applikation. Die eine soll z.B. den Zugriff auf das reale Gerät kontrollieren. Diese Applikationen sollten von cosylab noch nach geliefert werden. In Abhängikeit von diesen Appliaktionen müssen noch fehlende Bibliotheken oder Dateien in das Root-Filesystem integriert werden. Momentan erfolgt die Entwicklung der Software in einer virtuellen Maschine (vml00o).

microIOC mit Root-Filesystem (GPIB/DSM/DSKM)

Die Entwicklungsumgebung befindet sich auf den asl72x-Linux-Clustern. Sie verhält sich wie die von BEL-Entwicklern gewohnte Entwicklungsumgebung. Fast alle Werkzeuge und Skripte können wie gewohnt benutzt werden( eqpact, vmeconfig, usw...). Manche müssen noch an den microIOC angepasst werden.

devman bauen

  • Wie der devman zusammengebaut wird hier beschrieben.
  • Wichtig ist das in der Datei nightly-conf.mk für PLATFORM die Architektur x86 angeben ist.
  • Alle generiert Bibliotheken findet man im libasl-Verzeichnis.

devman allgemein freigeben

Wird ein Release allgemein freigegeben, müssen die devman-Bibliotheken für den microIOC momentan noch manuel kopiert werden.
cp -a $libasl/  /common/usr/export/devacc/i386/sys/devman/<release Nummer>

devman für einen bestimmten microIOC freigeben

Das Skript reldevman muss auch erst noch angepasst werden. Solange wird der symbolische Link noch manuel umgesetzt.
cd /common/usr/export/devacc/local/<hostname>
unlink library
ln -s /opt/acc/sys/devman/<release Nummer> library

Gerätesoftware generieren

Wird hier ausführlich beschrieben.

Gerätesoftware testen

Die generierten <Gerätemodel>.x86.so-Dateien werden in das Rechner spezifische Verzeichnis kopiert und können dann

getestet werden.
cp <GM>.x86.so.18.09.00.00 /common/usr/export/devacc/local/<hostname>/<GM>.so

Gerätesoftware freigeben

Das Skript relusrs muss auch erst noch angepasst werden. Solange wird der symbolische Link noch manuel umgesetzt.
cd /common/usr/export/devacc/local/<hostname> 
unlink <GM>.so 
ln -s /opt/acc/eqp/<GM>/<GM>.x86.so.<release Nummer>  <GM>.so

microIOC mit CF-Karte (DSM/DSKM)

devman bauen

Die Entwicklungsumgebung befindet sich auf einer virtuellen Maschine: vml00o.acc.gsi.de. Account und Passwort ist über die Infrastrukturgruppe erhältlich. Der benötigte Account braucht root-Rechte(sudo) um die Entwicklungsumgebung von cosylab zu benutzen.
  • Einloggen
[konh@asl723 lnx]$ ssh herlo@vml00o
herlo@vml00o's password: 
  • In das Entwicklungsverzeichnis wechseln
[herlo@vml00o ~]$ cd /common/usr/uIOC/
[herlo@vml00o uIOC]$ dir
total 20
drwxr-xr-x 10 herlo bel 4096 Jan 27  2010 cosylab
# enthält Linux-Filesystem ähnlich wie es auf den microIOCs zu finden ist
drwxr-xr-x 25 herlo bel 4096 Feb  4  2010 devenv-2.1.0
# In diesem Verzeichnis befinden sich alle Bel-Quellen
drwxr-xr-x 17 herlo bel 4096 Jan 27 12:16 gendevacc
# copy von Release 16
drwxr-xr-x 15 herlo bel 4096 Jan 26 15:50 gendevacc-save-release16
drwxrwxr-x  7 herlo bel 4096 Jan 14  2010 usr

[herlo@vml00o uIOC]$ cd gendevacc

  • Umgebungsvariablen setzen
[herlo@vml00o gendevacc]$ . setenv.sh

# Im Makefile kann man einstellen welche Release man bauen möchte. 
[herlo@vml00o gendevacc]$ vi Makefile
RELEASE = 18
....

  • Weitere mögliche Konfigurationen: Im Verzeichnis /common/usr/uIOC/gendevacc/build/<Releasenummer> findet man die von BEL bekannten Konfigurationsdateien. Die Datei nigtly-conf.mk ist etwas abgewandelt. Ist die Konfiguration abgeschlossen, kann die Software erzeugt werden.
[herlo@vml00o gendevacc]$ make
make -C build/18 -f Makefile.nightly
make[1]: Entering directory `/common/usr/uIOC/gendevacc/build/18'
echo "Skipping incasl"
Skipping incasl
echo "Skipping incvme"
Skipping incvme
========== Project corbaifc ==========
make -C corbaifc PLATFORM="uIOC" PYLIBDIR= copy all release checkwronglocation
make[2]: Entering directory `/common/usr/uIOC/gendevacc/build/18/corbaifc'
--- Making copy for uIOC ---
make[3]: Entering directory `/common/usr/uIOC/gendevacc/build/18/corbaifc'
sudo -E /common/usr/uIOC/gendevacc/utiuIOC/uioc-devenv-exec /common/usr/uIOC/devenv-2.1.0 copy
Password:                        <----------- Hier das sudo-Passwort eingeben um root-Rechte zu erhalten.

  • Die devman-Bibliotheken befinden sich in diesem Verzeichnis: /common/usr/uIOC/gendevacc/lib/uIOC/<Releasenummer>/

Aktuelleren devman bauen für ein neues Release

  • Im asl72x-Cluster die benötigte Projekte aus SVN auschecken.
cd ~
mkdir newdevman
cd newdevman

# Bei einem aktuelleren devman werden mehrere Projekte benötigt. Siehe in der
# Datei vml00o.acc.gsi.de:/common/usr/uIOC/gendevacc/build/18/nightly-conf.mk 
# die Variable TARGETS 
svn export https://www.acc.gsi.de/svn/bel/frontend/tags/<Projektname>/<Tagnummer> <Projektname>

  • Neue Verzeichnise in der Entwicklungsumgebung einrichten
[konh@asl723 lnx]$ ssh herlo@vml00o
 herlo@vml00o's password: 

[herlo@vml00o ~]$ cd /common/usr/uIOC/gendevacc

[herlo@vml00o gendevacc]$ mkdir build/<Releasnummer> 
[herlo@vml00o gendevacc]$ mkdir lib/uIOC/<Releasenummer>
[herlo@vml00o gendevacc]$ mkdir include/asl/<Releasenummer>
[herlo@vml00o gendevacc]$ mkdir include/vme/<Releasenummer>

  • Projekte in die Entwicklungsumgebung kopieren
[herlo@vml00o gendevacc]$ cd build/<Releasnummer>        

# In diesem Beispiel ist die Releasenummer 19
[herlo@vml00o 19]$ rsync -rva konh@asl723.acc.gsi.de:newdevman/* .

  • Fehlende mk-Dateien kopieren
# Mit dem folgenden Skript werden die Dateien uIOC.mk und uIOC-internal.mk 
# aller Projekte kopiert. Achtung, Skript eventuell vorher anpassen!
[herlo@vml00o 19]$ ./cp-uiocmk.sh

# Makefile.nightly usw. nicht vergessen
[herlo@vml00o 19]$  cp ../18/Makefile* . 
[herlo@vml00o 19]$  cp ../18/nightly-conf.mk . 

  • In allen Projekten die Datei version.mk erzeugen.
[herlo@vml00o 19]$  make -f Makefile.version SYSRELEASE=19 SYSVERSION=00

  • Message-Dateien aktualisieren
[herlo@vml00o 19]$ cd /common/usr/uIOC/gendevacc/include/msg
[herlo@vml00o msg]$  rsync -rva konh@asl723.acc.gsi.de:$(incmsg)/* .

  • Umgebungsvariablen setzen
[herlo@vml00o msg]$  cd /common/usr/uIOC/gendevacc
[herlo@vml00o gendevacc]$ . setenv.sh

  • Aktuelleren devman bauen
[herlo@vml00o gendevacc]$ make

Änderungen an einem bestimmten Projekt

  • Im asl72x-Cluster das benötigte Projekte aus SVN auschecken.
mkdir tmp
cd tmp/

svn export https://www.acc.gsi.de/svn/bel/frontend/trunk/<Projektname> <Projektname>
  • Projekt in die Entwicklungsumgebung einpflegen
[konh@asl723 lnx]$ ssh herlo@vml00o
 herlo@vml00o's password: 

[herlo@vml00o ~]$ cd /common/usr/uIOC/gendevacc/build/18/<Projekt>
[herlo@vml00o ...]$ rsync -rva konh@asl723.acc.gsi.de:../tmp/<Projekt>/* .

  • Umgebungsvariablen setzen
[herlo@vml00o ...]$  cd /common/usr/uIOC/gendevacc
[herlo@vml00o gendevacc]$ . setenv.sh

  • Projekt generieren
[herlo@vml00o gendevacc]$ make
  • Die generierte so-Datei befinden sich im Verzeichnis: /common/usr/uIOC/gendevacc/lib/uIOC/18/

Aktuelleren devman freigeben

  • Umgebung auf dem microIOC einrichten
[konh@asl723 lnx]$ ssh root@kueci01
root@kueci01's password: 

# Releaseverzeichnis erstellen
kueci01:~# mkdir /opt/acc/sys/devman/<Releasenummer>/

# Symbolischen Link umbiegen
kueci01:~# cd /opt/acc/cpu/
kueci01:/opt/acc/cpu#  unlink library
kueci01:/opt/acc/cpu#  ln -s /opt/acc/sys/devman/<Releasenummer>/    library

  • devman-Bibliotheken auf den microIOC kopieren
[herlo@vml00o gendevacc]$ rsync -rva  lib/uIOC/<Releasenummer>/*  \
                          root@kueci01.acc.gsi.de:/opt/acc/sys/devman/<Releasenummer>/.

  • Anpassen des Services
vi /etc/init.d/devman

#! /bin/sh

RELEASE=18                <-------------Hier ändern der Releasenummer !!!
FLAGS="defaults 23"


test -f /opt/acc/cpu/library/devman || exit 0
.......

  • devman neu starten
kueci01:/opt/acc/cpu#  service-devman stop
kueci01:/opt/acc/cpu#  service-devman start

Ein bestimmtes Projekt freigeben

  • Projekt auf den microIOC kopieren

[herlo@vml00o gendevacc]$  rsync -rva  lib/uIOC/18/<Projekt>.so.18.00  \ 
                           root@kueci01.acc.gsi.de:/opt/acc/sys/devman/18/.

  • devman neu starten
[konh@asl723 lnx]$ ssh root@kueci01.acc.gsi.de
root@kueci01's password: 

kueci01:/opt/acc/cpu#  service-devman stop
kueci01:/opt/acc/cpu#  service-devman start

Gerätesoftware generieren

Die aktuellste Version der Gerätesoftware befinden sich im SVN oder in der Entwicklungsumgebung: vml00o.acc.gsi.de:/common/usr/uIOC/gendevacc/build/18/

  • Einloggen
[konh@asl723 lnx]$ ssh herlo@vml00o
herlo@vml00o's password: 
  • In das Entwicklungsverzeichnis wechseln
[herlo@vml00o ~]$ cd /common/usr/uIOC/gendevacc
  • Umgebungsvariablen setzen
 [herlo@vml00o gendevacc]$ . setenv.sh
In der Datei /common/usr/uIOC/gendevacc/build/18/nightly-conf.mk in der Variablen EQMODS werden alle Gerätemodelle definiert die bei einem Generierungsaufruf erstellt werden.

  • Gerätesoftware generieren
[herlo@vml00o gendevacc]$ make

Anmerkung: Änderung an Gerätesoftware würde ich immer erst in der Entwicklungsumgebung einpflegen und testen. Danach kann die Änderung ins SVN eingepflegt werde.

Gerätesoftware freigeben

  • Gerätesoftware auf den microIOC kopieren
[herlo@vml00o gendevacc]$ rsync -rva  lib/uIOC/<Releasenummer>/<GM>.so.<VERSIONNR>  \
                          root@kueci01.acc.gsi.de:/opt/acc/eqp/<GM>/.

  • Symbolischen Link umbiegen
[konh@asl723 lnx]$ ssh root@kueci01.acc.gsi.de
root@kueci01's password: 

# Symbolischen Link umbiegen
kueci01:~# cd /opt/acc/cpu/
kueci01:/opt/acc/cpu#  unlink <GM>.so
kueci01:/opt/acc/cpu#  ln -s <GM>.so.<VERSIONNR> <GM>.so

microIOC mit CF-Karte(DSME)

Das Entwicklungssystem dafür ist auf einem gesonderten Rechner (belpc060) installiert.Der Rechner steht im Programmierlabor. Einloggen kann man sich als Benutzer root mit dem altbekannten Passwort.

devman bauen

  • Starten der Entwicklungsumgebung
# Einloggen auf dem Rechner
> ssh root@belpc060.acc.gsi.de


#Starten der Entwicklungsumgebung
> devenv

#Wechseln in das build-Verzeichnis
microIOC:/epics# cd ioc-devman

  • devman generieren
# Aufrufen der BEL bekannten Makefiles
make -f Makefile.clean
make -f Makefile.copy
make -f Makefile.nightly
  • Die devman-Bibliotheken finden man unter libasl/*

Aktuelleren devman bauen für ein neues Release

  • Im asl72x-Cluster die benötigte Projekte aus SVN auschecken.
mkdir newdevman
cd newdevman/

# Alle nötigen Projekte für den aktuelleren devman auschecken.  
svn export https://www.acc.gsi.de/svn/bel/frontend/tags/<Projektname>/<Tagnummer> <Projektname>

  • Verzeichnise in der Entwicklungsumgebung für aktuelleren devman vorbereiten. Ich switche immer zwischen zwei Verzeichnisen (ioc-devman und ioc-devman2). In dem einen ist die aktuelle Release und in dem anderen die letzte Release. Dokumentiert wird das in der Datei: belpc060.acc.gsi.de:/root/.profile
# Einloggen auf dem Rechner
> ssh root@belpc060.acc.gsi.de

#Starten der Entwicklungsumgebung
> devenv

# Umswitchen der aktuellen Release
microIOC:/epics# vi /root/.profile

# Ändern der Variablen DEVMAN_LIB von 
export DEVMAN_LIB="/epics/ioc-devman/libasl"
# nach 
export DEVMAN_LIB="/epics/ioc-devman2/libasl"

#Löschen der vorletzten Release 
> rm -rf /epics/ioc-devman2/* 

  • Projekte in die Entwicklungsumgebung kopieren
 microIOC:/epics/ioc-devman2# rsync -rva konh@asl723.acc.gsi.de:/../../newdevman/* .

  • Message-Dateien aktualisieren
microIOC:/epics/ioc-devman2/incmsg#  rsync -rva konh@asl723.acc.gsi.de:$(incmsg)/* .

  • Aktuelleren devman bauen
# Aufrufen der BEL bekannten Makefiles
make -f Makefile.clean
make -f Makefile.copy
make -f Makefile.nightly
  • Die devman-Bibliotheken finden man unter libasl/*

Änderungen an einem bestimmten Projekt

  • Im asl72x-Cluster das benötigte Projekte aus SVN auschecken.
mkdir tmp
cd tmp/

svn export https://www.acc.gsi.de/svn/bel/frontend/trunk/<Projektname> <Projektname>
  • Projekt in die Entwicklungsumgebung einpflegen
[konh@asl723 lnx]$ ssh root@belpc060
 root@belpc060 password: 

microIOC:/epics# cd ioc-devman/<Projekt>
[herlo@vml00o ...]$ rsync -rva konh@asl723.acc.gsi.de:../tmp/<Projekt>/* .

  • Projekt generieren
 microIOC:/epics# cd /epics/ioc-devman 
make -f Makefile.nightly

Aktuelleren devman freigeben

Siehe diese Beschreibung. Daran kann man sich gut orientieren.

Ein bestimmtes Projekt freigeben

Siehe diese Beschreibung. Daran kann man sich gut orientieren.

Gerätesoftware generieren(DSME)

Die aktuellste Version der Gerätesoftware befinden sich im SVN oder in der Entwicklungsumgebung: belpc060.acc.gsi.de:/epics/ioc-devman/dsme

  • Starten der Entwicklungsumgebung
# Einloggen auf dem Rechner
> ssh root@belpc060.acc.gsi.de


#Starten der Entwicklungsumgebung
> devenv

#Wechseln in das build-Verzeichnis
microIOC:/epics# cd ioc-devman

  • Gerätesoftware generieren
 microIOC:/epics/ioc-devman/dsme# make

Anmerkung: Änderung an Gerätesoftware würde ich immer erst in der Entwicklungsumgebung einpflegen und testen. Danach kann die Änderung ins SVN eingepflegt werde.

Gerätesoftware freigeben

Siehe diese Beschreibung. Daran kann man sich gut orientieren.

-- KlaudiaKonhaeuser - 26 Jan 2011
Topic revision: r13 - 13 Mar 2012, LudwigHechler
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback