5.2.20
07/07/20
Last Modified 12/20/05 by Walter Tasin
Praktikumsinstallation/Hawk Reload Page

Post-Installation Hawk-IDE (Radisys)

Im Praktikum Echtzeitbetriebssysteme und PDT wird unter OS-9 (OS-9000) programmiert. Dazu werden am Entwicklungssystem (Windows 2000-Client) für ein Zielsystem Applikationen entwickelt.
Die integrierte Entwicklungsumgebung Hawk 4.2 von RadiSys wird dazu verwendet.
Hier wird nach nachträgliche Vorgehensweise erläutert, wie man Hawk für eine Netzwerkumgebung installiert.
Dabei wird folgendes grundsätzlich angenommen:

  • Die Benutzer erhalten ein Netzwerklaufwerk L:
Es handelt sich hierbei um das Arbeitlaufwerk. Im Pfad L:\Projects werden die zu erstellenden Projekte abgelegt.
Zusätzlich wird ein Verzeichnis L:\Mwos angelegt. Dort befinden sich später die benutzerspezifischen Einstellung für die Hawk-IDE.
* Die Benutzer haben lesenden Zugriff auf eine weitere gemeinsame Share S: (UNC: \\ti1\shared\).
Dort existiert u. a. ein Verzeichnis S:\mwos aus dem - für den Fehlerfall von Hawk - Einstellungsdatei wieder zurück kopiert werden können.
* Das Windowsverzeichnis und das Programmverzeichnis ist auf allen Clients gleich.
D:\WINNT und D:\MWOS
* Das Zielsystem wird über eine zweite Netzwerkkarte am jeweiligen Client angesprochen.
Diese zweite Netzwerkkarte besitzt die IP-Adresse 192.168.5.1 und jedes Zielsystem hat als IP-Adresse 192.168.5.100 fest eingestellt.

Grundlegende Problematik

Diese IDE ist nicht netzwerkfähig, was besonders für die vorhandene Netzwerktopologie ein Problem darstellt:
Domänenanmeldung gegen einen Samba-Server.
Ein Netzwerkbenutzer ohne besondere Rechte (Domänenbenutzer) soll nicht auf das Programmverzeichnis geschweige denn auf eine oder mehrere Dateien im Windows-Systemverzeichnis schreibend zugreifen dürfen.
Hier muss ein Kompromiss eingegangen werden, da die Hawk-IDE auf folgende Dateien unbedingt Zugriff haben muss:

Hierbei wird angenommen, dass sich der Windows-Ordner auf D:\WINNT und das Hawk-IDE-Verzeichnis auf D:\MWOS befindet.

D:\WINNT\AWKEYBRD.INI
D:\WINNT\hawkdefs.ini
D:\WINNT\HAWKSESSION.INI
D:\WINNT\mwhawk.INI

D:\MWOS\DOS\BIN\mwhawk.mrk
D:\MWOS\DOS\BIN\mwhawk.sbl
D:\MWOS\DOS\BIN\mwhawk.bak
D:\MWOS\DOS\BIN\mwhawk.ini
D:\MWOS\DOS\BIN\mwhawk.pst
D:\MWOS\DOS\BIN\mwhawk.idx

Vorsicht: Es handelt sich bei mwhawk.INI (im Windows-Ordner) und mwhawk.ini (im MWOS-Ordner) um zwei unterschiedliche Dateien!

Für die Dateien im Windows-Verzeichnis kommt man nicht umher, den Schreibschutz zu deaktivieren und den Entwicklern zu erlauben diese Dateien zu ändern.
Sollten sie noch nicht vorhanden sein, so ist es von Vorteil diese vorab dort zu erstellen und die Rechte auf diese Dateien einzeln zu ändern.

Bei den Dateien im Hawk-Programmverzeichnis sieht es etwas besser aus. Man kann mithilfe der mwhawk.ini und mwhawk.pst festlegen, wo einige gefunden werden sollen.

mwhawk.ini (MWOS-Ordner):

...
[Editor]
ConfigSetLinkDBFilename='L:\Mwos\mwhawk.ldb'
ConfigSetSymbolDBFilename='L:\Mwos\mwhawk.sbl'
EditSetPath='L:\Projects'
ConfigSetBtnIniFilename='L:\Mwos\mwhawk.btn'
ConfigSetMacroFilename='L:\Mwos\mwhawk.mac'
ConfigSetMarkDBFilename='L:\Mwos\mwhawk.mrk'
...

mwhawk.pst:

[State]
ConfigSetExtMode=2
SysSetCwd='L:\Projects'
...
_StateHistory=EDITFILE,'L:\Projects\OSPrakt'
...
_StateHistory=PROJSPACES,'L:\Projects\OSPrakt.psp'
...

Dadurch dass das Laufwerk L: das Heimatlaufwerk des Benutzers ist kann man zumindest einige Dateien benutzerspezifisch machen.
Trotzdem müssen die obengenannten Dateien den "einfachen" Domänenbenutzer" beschreibbar gemacht werden (auch für das folgende Kapitel).

Korrektur im Fehlerfall

Obwohl die neuere Version von Hawk nicht mehr so häufig "stirbt", ist es weiterhin möglich, dass Situationen eintreten in denen das Programm mit einer Exception endet.
Häufig werden hierbei die obengenannten Dateien in einen - sagen wir mal - nicht mehr lauffähigen Version geschlossen.
Dies zeigt sich dann daran, dass z. B. die Syntaxhervorhebung im Editor nicht mehr funktioniert oder der Standardpfad der Quellen wieder zurückgesetzt wird.
Um den Studenten und Betreuern wieder den - für das Praktikum notwendige - Ursprungszustand wieder herzustellen, wurde eine Batchdatei (restore_it.bat) erzeugt, die die relevanten Dateien wieder in einen vordefinierten Zustand bringen.
Diese Batchdatei befindet sich bei jedem User auf dem Desktop und von dort aus jederzeit aktiviert werden. Sie kopiert von einem gemeinsam lesbaren Share (hier \\ti1\shared\) die entsprechenden Dateien in das HAWK-Programmverzeichnis:

D:\MWOS\DOS\BIN\mwhawk.idx
D:\MWOS\DOS\BIN\mwhawk.mrk
D:\MWOS\DOS\BIN\mwhawk.sbl
D:\MWOS\DOS\BIN\mwhawk.bak
D:\MWOS\DOS\BIN\mwhawk.ini
D:\MWOS\DOS\BIN\mwhawk.pst

Die Dateien restore_it.bat, D:\MWOS\DOS\BIN\mwhawk.pst und D:\MWOS\DOS\BIN\mwhawk.ini wurden dem Dokument als Beispiele angehängt. (Bei den anderen Dateien handelt es sich um Binärdateien.)

Welche Hawk-Dateien sind nun benutzerspezifisch?

Dies ist am einfachsten durch die Verzeichnisbaumdarstellung zu erklären:

L:\Mwos\  
|-- mwhawk.CS_
|   |-- FILE.CDX
|   |-- FILE.DBF
|   |-- FILE.FPT
|   |-- SYMBOL.CDX
|   |-- SYMBOL.DBF
|   `-- SYMBOL.FPT
|-- mwhawk.btn
|-- mwhawk.ext
|-- mwhawk.ldb
|-- mwhawk.mac
|-- mwhawk.mrk
`-- mwhawk.sbl

Es werden nicht alle Dateien des Baumes verwendet (da sich dies auch von Version zu Version scheinbar unterscheidet), jedoch ist unser System mit diesen Dateien in L:\Mwos\ lauffähig.
Der Timestamp zeigt auf, dass folgende Verzeichnisse/Dateien am häufigsten geändert werden:

mwhawk.mrk
mwhawk.sbl
mwhawk.CS_\SYMBOL.CDX
mwhawk.CS_\SYMBOL.DBF
mwhawk.CS_\SYMBOL.FPT

Die entsprechenden Dateien (inkl. Verzeichnis mwhawk.CS_) wurde von einer Clientinstallation von Hawk auf einem Single-Usersystem aus D:\Mwos\DOS\BIN auf das Heimatlaufwerk der einzelnen Benutzer (d. h. L:\Mwos) kopiert. (Hinweis: Dazu muss Hawk schon einmal gestartet worden sein und ein Projekt erzeugt worden sein)

Registrynutzung

Die Registrynutzung von Hawk ist ziemlich halbherzig durchgeführt worden. Vermutlich beginnt erst die Umstellung auf das Registrykonzept.
Deshalb ist es auch nötig kurz auf die für Hawk relevanten Registryeinträge einzugehen.

Environmentvariablen

Bei der eigentlichen Installation von Hawk kann man festlegen, ob die Environmentvariablen in [HKEY_LOCAL_MACHINE] (also systemweit) eingetragen werden sollen.
Dies wurde bei unserer Installation nicht gemacht!
Stattdessen wurde ein Registryexport (hawk-environment.reg) erzeugt, der durch Import (z. B. Doppelklick auf diese Datei) der Registry hinzugefügt wird.
ACHTUNG!! Die PATH-Environmentvariable wird durch die Beispieldatei modifiziert!! Deshalb ist dieser Registryexport nur für die Praktikumsrechner gedacht, da diese alle die gleiche Verzeichnisstruktur (und die gleichen installierten Programme) besitzen.

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"CLASSPATH"="."
"MWOS"=hex(2):44,3a,5c,4d,57,4f,53,00
"HAWKPROJDIR"="L:\\PROJECTS"
"Path"=hex(2):44,3a,5c,4d,57,4f,53,5c,44,4f,53,5c,42,49,4e,3b,25,53,79,73,74,\     
  65,6d,52,6f,6f,74,25,5c,73,79,73,74,65,6d,33,32,3b,25,53,79,73,74,65,6d,52,\     
  6f,6f,74,25,3b,25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,\     
  32,5c,57,62,65,6d,00
"RPATH"=hex(2):4c,3a,5c,50,52,4f,4a,45,43,54,53,00
"TARGET"=hex(2):31,39,32,2e,31,36,38,2e,35,2e,31,30,30,00
"TEMPDIR"=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,54,45,4d,50,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
"Path"=hex(2):44,3a,5c,4d,57,4f,53,5c,44,4f,53,5c,42,49,4e,3b,25,53,79,73,74,\    
  65,6d,52,6f,6f,74,25,5c,73,79,73,74,65,6d,33,32,3b,25,53,79,73,74,65,6d,52,\    
  6f,6f,74,25,3b,25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,53,79,73,74,65,6d,33,\    
  32,5c,57,62,65,6d,00
"CLASSPATH"="."
"MWOS"=hex(2):44,3a,5c,4d,57,4f,53,00
"HAWKPROJDIR"="L:\\PROJECTS"
"RPATH"=hex(2):4c,3a,5c,50,52,4f,4a,45,43,54,53,00
"TARGET"=hex(2):31,39,32,2e,31,36,38,2e,35,2e,31,30,30,00
"TEMPDIR"=hex(2):25,53,79,73,74,65,6d,52,6f,6f,74,25,5c,54,45,4d,50,00

Dabei werden folgende - für Hawk - systemweite Werte erzeugt:

TEMPDIR=%SystemRoot%\TEMP
MWOS=D:\MWOS
HAWKPROJDIR="L:\\PROJECTS"
RPATH=L:\PROJECTS
TARGET=192.168.5.100

Die PATH-Variable wird ebenso um den Pfad der ausführbaren Dateien von Hawk erweitert:
Path=D:\MWOS\DOS\BIN; ...

Die Environmentvariable CLASSPATH wird für die Programmierung in Java verwendet und hat hier keine besondere Bedeutung.

Userregistry

Zur einfachen Erstellung einer neuen Usergruppe, die auch Zugriff auf Hawk haben sollen wurde auch der relevante Userregistry-Teil exportiert.
Auch darin befinden sich Einstellungen, die auf L:\Projects referieren!
Bevor man sich eine solche Registryexportdatei macht, sollte man bereits ein Projekt damit erzeugt haben und die möglichen Einstellungen für den User gemacht haben.
So wurde z. B. die IP-Adresse des Zielsystems bereits eingetragen Target und folgender Wert gesetzt:
[HKEY_CURRENT_USER\Software\Microware Systems Corp.\Hawk\Project\ProjectForm]
"PrjOptions_BuildModifiedUnit"="1"

um das Autosave vor "Build/Compile" zu aktivieren.
Weitere Einstellungen können der angehängten Beispieldatei mwos-userreg.reg entnommen werden.
Diese Datei muss der Registry eines jeden einzelnen User einmal hinzugefügt werden. Automatisierte Vorgänge, die dies erledigen wurden bereits beachtet s. a. Benutzerverwaltung und Domainlogin.

Localmachine-Registry

Dieser Registryexport ist unwichtig, da in ihm nur das Programmverzeichnis und das Installationsdatum abgelegt wird. Der Vollständigkeit halber sei er aber hier noch erwähnt
(s. a. mwos-systemreg.reg).

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\RadiSys Corporation]

[HKEY_LOCAL_MACHINE\SOFTWARE\RadiSys Corporation\Microware Documentation]

[HKEY_LOCAL_MACHINE\SOFTWARE\RadiSys Corporation\Microware Documentation\4.2]
"MWOS_LOCATION"="d:\\mwos"
"INST_DATE"="9-27-2005 18:53:57"

[HKEY_LOCAL_MACHINE\SOFTWARE\RadiSys Corporation\Microware OS-9 for PowerPC]

[HKEY_LOCAL_MACHINE\SOFTWARE\RadiSys Corporation\Microware OS-9 for PowerPC\4.2]
"MWOS_LOCATION"="D:\\MWOS"
"INST_DATE"="9-27-2005 18:51:41"