# VxWorks Programmierung # 1 History 2 VxWorks 5.3 für MVME CPU 2.1 VxWorks Image Build 2.2 VxWorks Boot 2.3 Dokumentation 5.3 3 VxWorks 21.07 für Intel CPU 3.1 VxWorks Installation 3.2 VxWorks Lizenzserver 3.3 VxWorks Image Build 3.3.1 VxWorks Build mit Workbench 3.3.1.1 VxWorks VSB Project 3.3.1.2 VxWorks VIP Project 3.4 Boot Loader Build 3.4.1 UEFI Boot Loader 3.4.2 VxWorks Boot Loader 3.5 VxWorks Boot 3.6 Anwendungen 3.6.1 Programmquellen 3.6.2 Kompilierung 3.6.3 Dokumentation 3.6.4 Makefiles 3.7 VxWorks 21.07 Dokumentation und Support 3.8 Gut zu wissen... 3.8.1 Login 3.8.2 Kernel Shell 3.9 Bekannte Probleme 3.9.1 Start-Menü 3.9.2 Spy-App 3.10 Anhang 3.10.1 Parameter für PC-Console 3.10.2 Telnet mit Tera Term 3.10.3 Telnet mit xTerm 3.10.4 Navigating in VI 3.10.5 Intel CPU Generationen 3.10.6 VIP Includes und Parameter für das Core-Projekt 4 Neues Experiment 4.1 System-Einstellungen 4.2 Account-Konfiguration # VxWorks Programmierung # ************************** *(System und Anwendungen)* May 2024 K. Huber, Strahlenzentrum Univ. Gießen Version 27.Sep.2024 1 History ********* VxWorks System VxWorks 5.1 auf DECstation 5000/33 unter Ultrix (TUTNIX) Tornado 1.0 auf PC unter Windows 98 (??????) > in VBox unter Windows 7 (RADON) > in VBox unter Windows 10 (RADON) > in VBox unter Debian 11 (IONIX) VxWorks 21.07 unter Ubuntu 1804 in VBox unter Debian 11 (IONIX) VxWorks Anwendungen VxWorks 5.1 auf DECstation 5000/33 unter Ultrix (TUTNIX) VxWorks 5.3 auf DECstation 5000/33 unter Ultrix (TUTNIX) !!!Baustelle!!! 2 VxWorks 5.3 für MVME CPU ************************** 2.1 VxWorks Image Build ======================= Die Software zum Erzeugen von VxWorks 5.3 Systemen ist auf Windows 98 installiert. Dieses Win98 hat alle Systemwechsel in einer VBox überlebt (z.Z. auf huber@radon und huber@ionix). Die Anpassung des VxWorks wurde durch Editieren der Konfigurationsdateien vorgenommen. Die Dokumentation dazu liegt in gedruckter Form vor (s.u.). Alternativ kann durch die Systemgenerierung mittels WindRiver-Tornado geführt werden. Für die vorhandenen, verschiedenen MVME-Laborrechner existieren bootbare VxWorks Images: /usr/exp/vxw/MVME/ vx162 Standard für Motorola MVME162 vx162no_nfs ohne NFS-Transfers vx162no_passw ohne Passwort bei Netzwerk-Logins vx172 Standard für Motorola MVME172, MVME172P vx172_16MB mit 16 MB Memory vx172no_nfs ohne NFS-Transfers vx172no_passw ohne Passwort bei Netzwerk-Logins *.sym die zugehörigen Symbol Tables 2.2 VxWorks Boot ================ Der Boot Loader ist auf einem Boot-Rom installiert. Die Boot Parameter sind auf einem NV-RAM abgelegt. Nach Abbrechen des Boot können Sie mit dem Kommando c editiert werden. Boot-Parameter für das 017-Experiment nach dem Umzug in die Physik: boot device ei processor number 0 host name boothost file name ~/ex_home/vxw/MVME/vx172 inet on erhernet (e) 134.176.21.35:ffffff00 inet on backplane (b) host inet (h) 134.176.20.18 gateway inet (g) 134.176.21.1 user (u) exeis ftp password (pu) flags (f) [0x0] target name (tn) exeis startup script (s) ex_home/ex_param/Startup.vxw other (o) 2.3 Dokumentation 5.3 ===================== Die Dokumentation für VxWorks 5.3 liegt in gedruckter Form vor: VxWorks Programmer's Guide 5.3 VxWorks Reference Manual 5.3 GNU ToolKit User's Guide 2.6 Und ist teilweise bei Wind River noch zu finden: > Discontinued Products (ganz unten) > VxWorks > VxWorks 5.3 3 VxWorks 21.07 für Intel CPU ***************************** Für die VxWorks-Systemgenerierung und die Entwicklung der Anwendungsprogramme stehen zur Zeit die Versionen 2103 und 2107 zur Verfügung. Da die VxWorks-Entwicklung nicht mit Debian verträglich ist, wurde sie in einer VBox unter Ubuntu installiert, unter VXHOME/WindRiver2103 VXHOME/WindRiver2107 Zur Zeit mit VXHOME = /home/huber VXHOME/WindRiver --> VXHOME/WindRiver2107 in der VBox: huber-virtualbox 3.1 VxWorks Installation ======================== Dear Justus-Liebig-University Giessen, Thank you for your recent purchase of a Wind River solution. This email will be your guide for: 1. Registering for a Wind River support account 2. Downloading, installing, and activating Wind River software 3. Managing product licenses 4. Accessing product documentation 5. Contacting support Please forward this email to other entitled end users of Wind River software to access any of the products purchased in this order. Each person will need to create their own personal Wind River support account using the information in this email. Order Information - Customer Name: Justus-Liebig-University Giessen - Sales Order: 4516827 - Purchase Order: Uni Grant VxWorks - License Number: 683907 - License Authorization Code (LAC): 683907-5FKR-XNJEY - License Administration Token (LAT): YCTUOKY-683907-9OCYOFX - Support Contract Number: - Support Contract End Date: 3.2 VxWorks Lizenzserver ======================== Für die Systemgenerierung und die Entwicklung der Anwendungen ist eine Lizenz erforderlich. Wir haben zur Zeit eine kostenlose Uni-Lizenz für VxWorks 2103 und 2107, die gelegentlich wieder verlängert werden muss. Dabei sollten wir uns mal nach einem Upgrade erkundigen... Der laufende Betrieb von VxWorks und Anwendungen erfolgt lizenzfrei. Der Lizenzserver ist lokal installiert, zur Zeit unter WindRiver2103. Er vergibt bis zu 8? Lizenzen gleichzeitig. Er muss vor Beginn der Arbeiten gestartet werden. Für Start und Stop gibt es zwei Scripts: VXHOME/WindRiver2103/license/startFlexNet VXHOME/WindRiver2103/license/stopFlexNet 3.3 VxWorks Image Build ======================= Zum Erstellen eines VxWorks Betriebssystems stehen zwei Wege zur Verfügung: • Über vxprj-Kommandozeilen Diese Variante hat den Vorteil, dass man alles in einem Shell-Script zusammenfassen kann und damit alle Parametereinstellungen gleich dokumentiert hat. Der Nachteil: die passenden Parameter muss man erst wissen. Beispiele dazu findet man unter: VXHOME/WindRiver2103/workspace • Menügeführt mit dem Workbench-Programm Der Vorteil von Workbench ist, dass alle Parameter zur Auswahl stehen. Der Nachteil: es sind schrecklich viele Parameter und am Ende hat man den Überblick verloren, welche man verändert hat. Eine VxWorks-Generierung erfolgt in zwei getrennten Schritten: • VxWorks Source Bild (VSB) In diesem ersten Schritt wird festgelegt welche CPU unterstützt werden soll und welche Bibliotheken gebraucht werden. Die Bibliotheken werden kompiliert. • VxWorks Image Project (VIP) In diesem zweiten Schritt werden die notwendigen Parameter angepasst und das fertige, bootbare Image erzeugt. Jeder der beiden Schritte kann wiederholt werden um Änderungen einzubringen. 3.3.1 VxWorks Build mit Workbench --------------------------------- Das Arbeiten mit Workbench verlangt einige Erfahrung. Deshalb vorab ein kurze Einführung in die Bedienung um VSB und VIP Projekte zu erstellen. • Starten Sie ggf. den Lizenzserver. • Starten Sie Workbench4 über den Workbench(2107) Icon oder das Kommando VXHOME/WindRiver2107/workbench-4/startWorkbench.sh • Starten Sie Ihr Projekt mit File -> New -> Wind River Workbench Project... In diesem Menüfenster wählen Sie den Projekttyp, also VSB bzw VIP 3.3.1.1 VxWorks VSB Project ........................... Im VxWorks-Source-Build-Projekt werden die notwendigen Bibliotheken zusammengestellt und kompiliert. Die Anpassungen an den CPU-Typ und das CPU-Board erfolgen über das Board Support Package (BSP) und die CPU-Typangabe. Für Intel-Prozessoren gemeinsam ist das BSP itl-generic. Mit der Wahl von CORE (Nachfolger von Pentium, Vorgänger von CORE-i, Empfehlung vom WR-Support) als CPU erhält man ein VxWorks-Image, das auch für den OptiPlex 5000 (12. Generation) im Labor 017 und etliche ältere geeignet ist. Dies in der Hoffnung, dass ein Rechnertausch ohne große Probleme erfolgen kann. Neuere Entwicklungen bleiben dabei jedoch möglicherweise ungenutzt. Mehr Info zu diesem Thema findet man unter VXHOME/WindRiver2107/vxworks/21.07/os/board/intel/itl_generic/*_readme.md und der Liste der Intel-CPU-Generationen im Anhang. Nachtrag: Sandy-Bridge (2. Gen.) und Sky-Lake (6. Gen.) sind ebenfalls für den OptiPlex 5000 geeignet, möglicherweise aber nicht für ältere Generationen. Starten Sie das VSB-Projekt mit: File > New > Wind River Workbench Project... Im Menüfenster wählen Sie den Projekttyp: VxWorks Source Build Next > Projekt name: Core-VSB (z.B.) Next > Based on: a board support package (BSW) BSW: itl-generic.... CPU: CORE (z.B.) Processor mode: SMP support Finish > Anschließend können Ergänzungen vorgenommen werden. Der Default enthält bereits weitgehend alle benötigten Funktionen: Öffnen Sie Ihr VSB-Projekt in der Projektliste Doppelklicken Sie auf: Source Build Configuration Folgende Layer wurden ergänzt: Source Build Configuration • (find: user) Enable user managenent libraries: Y • (find: editor) Enable vi editor libraries: Y Im letzten Schritt werden die Bibliotheken kompiliert: rechte Maustaste auf Ihr VSB-Projekt > Build Das dauert... 3.3.1.2 VxWorks VIP Project ........................... Im VxWorks-Image-Build-Projekt wird das Image konfiguriert und anschließend fertig gestellt. Die BSP-Parameter sind bereits voreingestellt, es gibt aber noch viel zu tun... Starten Sie das VIP-Projekt mit: File > New > Wind River Workbench Project... Im Menüfenster wählen Sie den Projekttyp: VxWorks Image Project Next > Project name: Core-VIP (z.B.) Next > Based on: a Source Build Project (VSB) Projekt: Core-VSB (z.B.) Next > Profile: (no profile) ggf. verwenden eines zuvor erstellten Profiles eines bereits passend konfigurierten VIP (z.B. PROFILE_CORE-VIP). Finish > Anschließend müssen die VIP-Parameter angepasst werden. Dazu öffnen Sie Ihr VIP-Projekt im Project Explorer und Doppelklicken auf: Kernel Configuration. Wenn Sie einen VIP-Profile verwendet haben (s.o.), dann können Sie in der Datei VXHOME/WindRiver2107/vxworks/21.07/os/vip_profiles/profiles/ vip_profile_PROFILE_CORE-VIP.cdf (z.B.) sehen, mit welchen Includes und Parameter die BSP-Einstellungen durch das Profile ergänzt wurden. Das Core-VIP Profile finden Sie auch im Anhang. Für das Core-VIP wurden folgende Parameter angepasst (mit ’Synopsys’ erhalten Sie eine Beschreibung der Parameter): • (find: TELNET_IDLE) IPCOM_TELNET_IDLE_TIMEOUT "0" • (find: TIMEZONE) TIMEZONE_ENV_VAR "TZ=CET-1CEST,M3.5.0/02,M10.5.0/03" • (find: VX_SMP) VX_SMP_NUM_CPUS VX_MAX_SMP_CPUS • (find: SHELL_COMP) SHELL_COMPATIBLE FALSE • (find: SHELL_DEFAULT) SHELL_DEFAULT_CONFIG ("INTERPRETER=,LINE_EDIT_MODE=emacs, LINE_LENGTH=1024,STRING_FREE=manual, VXE_PATH=.;/bin;/usr/bin;/romfs") Command-line Editor: emacs • (find: DNSC_DOM) DNSC_DOMAIN_NAME "IAMP" • (find: DNSC_PRIM) DNSC_PRIMARY_NAME_SERVER "134.176.2.7" • (find: DNSC_SEC) DNSC_SECONDARY_NAME_SERVER "134.176.2.5" • (find: NTP_INIT) NTP_INIT_PARAM NULL • (find: NTP_CONF) NTP_CONFIG_PARAM NULL • (find: NTP_CONF) NTP_CONFIG_FILENAME NULL • (find: NO_SEC) SYSFLG_NO_SECURITY_ENABLE FALSE • (find: UDB_HASH) UDB_HASH_KEY ..... 256 Byte Hash-Code, notwendig fr̈ UserDataBase • (find: UDB_STOR) UDB_STORAGE_PATH "/ram0/cxUserDB.txt" UserDataBase • (find: UDB_PROM) UDB_PROMPT_INITIAL_USER TRUE Allerersten User anfordern, falls noch keiner da • (find: SYS_CLK_RATE) SYS_CLK_RATE (100) • (find: RING_BUFFER) USB_GEN2_SERIAL_IOS_RING_BUFFER_SIZE 131072 !!! notwendige Anpassung um Datenverlust zu vermeiden !!! Im letzten Schritt wird das VxWorks Image erstellt: rechte Maustaste auf Ihr VIP-Projekt > Build Das bootbare VxWorks Image finden Sie z.B. unter: VXHOME/WindRiver2107/workspace/Core-VIP/default/vxWorks Damit außerhalb der VBox unter /usr/exp/vxw/INTEL darauf zugegriffen werden kann, muss es dahin noch übertragen werden. Durch die mehrfachen Wechsel der Unix-Systeme, ist dies zur Zeit ein ziemlich verschlungener Pfad: cp vxWorks /media/sf_servix/usr2s/users/huber/ex_tools/vxw/INTEL/vxWorks-Core Wobei /media/sf_servix/ das Shared Folder /home/servix mit dem VBox-Host (z.Z. Ionix) ist. *Weitere Hilfen:* Der Makefile zeigt die Details: VXHOME/WindRiver2107/workspace/Core-VIP/Makefile.mk Mit Workbench lassen sich Log-Files erstellen: Help -> Collect log Files 3.4 Boot Loader Build ===================== 3.4.1 UEFI Boot Loader ---------------------- VxWorks bietet mehrere unterschiedliche Boot-Möglichkeiten. Für die Zukunft ist jedoch UEFI vermutlich eine gute Wahl. Die UEFI Boot Loader sollten bereits kompiliert sein: Für 32 Bit CPU: VXHOME/WindRiver2107/vxworks/21.07/workspace/uefi_ia32/BOOTIA32.EFI Für 64 Bit CPU: VXHOME/WindRiver2107/vxworks/21.07/workspace/uefi_x86_64/BOOTX64.EFI Falls noch nicht kompiliert, erledigt dies folgendes Make: cd VXHOME/WindRiver2107/vxworks/21.07/boot/uefi make 3.4.2 VxWorks Boot Loader ------------------------- Der VxWorks Boot Loader ist ein VxWorks-Betriebssystem mit einer speziellen Konfiguration. • Im VSB-Projekt wird als Prozessor Mode UP statt SMP gewählt. UP: Uniprocessor SMP: Symmetric multiprocessing • Im VIP-Projekt sorgt PROFILE_BOOTAPP für die passende Konfiguration. Starten Sie das VSB-Projekt mit: File > New > Wind River Workbench Project... Im Menüfenster wählen Sie den Projekttyp: VxWorks Source Build Next > Projekt name: CoreBoot-VSB (z.B.) Next > Based on: a board support package (BSW) BSW: itl-generic.... CPU: CORE (z.B.) Processor mode: UP support Finish > Im letzten Schritt werden die Bibliotheken kompiliert: rechte Maustaste auf Ihr VSB-Projekt > Build Starten Sie das VIP-Projekt mit: File > New > Wind River Workbench Project... Im Menüfenster wählen Sie den Projekttyp: VxWorks Image Project Next > Project name: CoreBoot-VIP (z.B.) Next > Based on: a Source Build Project (VSB) Projekt: CoreBoot-VSB (z.B.) Next > Profile: PROFILE_BOOTAPP Finish > Im letzten Schritt wird das VxWorks Boot Image erstellt: rechte Maustaste auf Ihr VIP-Projekt > Build 3.5 VxWorks Boot ================ VxWorks bietet unterschiedliche Boot-Möglichkeiten: von ROM, HD, USB-Stick, Netzwerk usw... Die zur Zeit bevorzugte Variante: • Booten des VxWorks Image von einem Server im Netzwerk. • Boot-Loader und Boot-Parameter auf einem USB-Stick. • Booten über UEFI. Diese Boot-Konfiguration bietet folgende Eigenschaften: • Das Anpassen an ein Experiment erfolgt durch Editieren der Boot-Parameterdatei auf dem USB-Stick. • Software-Updates stehen für jeden Laborrechner ohne neue Installation zur Verfügung. • Jeder PC kann auf seine Eignung als Laborrechner geprüft werden, ohne seine Festplatte zu verändern. Der USB-Stick muss folgendermaßen vorbereitet werden: Angenommen er ist als gemountet. Kopieren der UEFI Boot Loader: mkdir /EFI mkdir /EFI/BOOT cd VXHOME/WindRiver2107/vxworks/21.07/workspace/ cp uefi_ia32/BOOTIA32.EFI /EFI/BOOT cp uefi_x86_64/BOOTX64.EFI /EFI/BOOT Kopieren des VxWorks Boot Loaders (z.B. Core-Boot-VIP) auf den USB-Stick: cd VXHOME/WindRiver2107/workspace/Core-Boot-VIP/default/ cp vxWorks /EFI/BOOT/bootapp.sys umount Editieren der Boot-Parameter-Datei EFI/BOOT/bootapp.cfg. Diese enthält in einer einzigen Zeile alle zum Booten notwendigen Informationen. Boot-Zeile, aktuelle Testversion (eine Zeile!): bootline:gei(0,0)bootHost:/usr/exp/vxw/INTEL/vxWorks-Core e=134.176.20.74:ffffff00 h=134.176.20.18 g=134.176.20.40 u=huber tn=vmetst s=/host.bootHost/home/huber/ex_home/ex_param/startup.vxwi Boot-Zeile für das 017-Experiment nach Umzug in die Physik: bootline:gei(0,0)bootHost:/usr/exp/vxw/INTEL/vxWorks-Core e=134.176.21.35:ffffff00 h=134.176.20.18 g=134.176.21.1 u=exeis tn=exeis s=/host.bootHost/home/exeis/ex_home/ex_param/startup.vxwi Das Shell-Script startup.vxwi wird am Ende des Boot-Prozesses ausgeführt und kann editiert werden zur Anpassung an die Erfordernisse des Experimentes. Die Boot-Parameter können beim Booten nochmals geändert werden durch Abbrechen des Boot-Vorgangs (s.h. Help). Die Änderungen werden allerdings nicht auf dem Stick gespeichert. Boot-Parameter boot device gei (bzw. rtg für RealTek Ethernet) processor number 0 host name bootHost file name /usr/exp/vxw/INTEL/vxWorks-Core (z.B.) inet on erhernet (e) 134.176.21.35:ffffff00 inet on backplane (b) host inet (h) 134.176.20.18 gateway inet (g) 134.176.21.1 user (u) exeis ftp password (pu) flags (f) [0x0] target name (tn) exeis startup script (s) /host.bootHost/home/exeis/ex_home/ex_param/startup.vxwi other (o) 3.6 Anwendungen =============== Die Mess- und Auswerteprogramme sind aus historischen Gründen in C geschrieben. Die zunächst für VxWorks 5.3 entwickelten Programme konnten nach einigen Ergänzungen auch unter VxWorks 210x kompiliert werden (#ifdef VXINTL bzw. VXMVME). In wenigen Fällen war es angebracht Teile neu zu schreiben. 3.6.1 Programmquellen --------------------- Die Programmquellen sind zu finden unter /usr/exp/ex_src/Progs/ Applib Bibliothek für spezielle Auswertungen Daclib Bibliothek für Messprogramme Danlib Bibliothek für Auswerteprogramme Daxlib Bibliothek für Nicht-Experiment-Programme Exlib Bibliothek für gemeinsame Funktionen esa22 Elektronenspektrometer ex016 Labor 016 ex017 Labor 017 (EXEIS) pipe Pipe-Experiment misc allgemein genutzte Programme (MCA, PEAK usw...) 3.6.2 Kompilierung ------------------ Die Anwendungen können ebenfalls mit Workbench kompiliert werden. Ich habe jedoch die vorhandene Makefile-Struktur beibehalten, da nur eine geringfügige Anpassung notwendig war (s.h. Makefile.dac). Die Anwendungen werden beim Kompilieren mit den Bibliotheken des VxWorks-Projektes (Board Support Package, CPU) verbunden (s.h. VSB), so dass eigentlich für alle Projekte mit unterschiedlicher CPU jeweils eine eigene Kompilation nötig ist. Es hat sich jedoch (mit Vorbehalt!) gezeigt, dass für das Intel-BSP die Wahl der CPU keine auffälligen Unterschiede macht. In den Makefiles (Makefile.dac, Makefile.dan) ist zur Zeit als Bezug Core-VSB angegeben. Die ladbaren Programme sind unter /usr/exp/progs zu finden, und für jeden Experiment-Account auch unter ~/ex_home/ex_progs: *.o VxWorks 5.3 Version *.out VxWorks 2107 Version Wird ein Programm neu installiert, so erhält der Vorgänger das Datum angehn̈gt, an dem er ersetzt wurde. 3.6.3 Dokumentation ------------------- Die Mess- und Auswerteprogramme sind mit dem Info-System (texinfo) von GNU dokumentiert. Mit Info können die gebräuchlichen Ausgabeformate erzeugt werden (HTML, PDF, DVI, Info, Text). Die Quellen für texinfo finden Sie in dem Unterverzeichnis texi von jedem Mess- und Auswerteprogramm. Die zu editierenden Quellen haben die Endung .txi und nachdem in einem ersten Schritt die Umlaute umgesetzt wurden, erhalten sie die Endung .texi. Das Kompilieren der verschiedenen Ausgabeformate erfolgt mit make info .... Die Ausgaben erfolgen (z.B. für MCA) in das Verzeichnis /usr/exp/ex_help/mca 3.6.4 Makefiles --------------- Makefile-Hierarchie für das Messprogramm MCA /usr/exp/ex_src/Progs/misc/mca --> ./Makefile --> ../../Makefile.dac (Cross Compiler Auswahl) --> ./Makefile.mca (Cross Compiling) Makefile-Hierarchie für das Auswerteprogramm PEAK /usr/exp/ex_src/Progs/misc/peak --> ./Makefile --> ../../Makefile.dan (Cross Compiler Auswahl) --> ./Makefile.peak (Cross Compiling) Makefile-Hierarchie für die MCA Info-Dokumentation /usr/exp/ex_src/Progs/misc/mca --> ./Makefile --> ../../../Makefile.info.top.V2 --> ../../../Makefile.info.OSF1make.V2 (Servix) --> ../../../Makefile.info.GNUmake.V2 (Ionix) Makefile-Hierarchie für HTML-Index und -FAQs /usr/exp/ex_src/Progs --> ./Makefile --> ./Makefile.index --> ./Makefile.FAQs 3.7 VxWorks 21.07 Dokumentation und Support =========================================== Für VxWorks gibt es unglaublich viel Dokumentation, so dass es nicht einfach ist das Passende zu finden. Der Zugriff zur Doku erfordert ein Login: User: schippers@jlug.de Passw: Stefan fragen Eine Einstiegsmöglichkeit zur VxWorks Dokumentation ist folgende: oder nach ’WindRiver Login’ suchen. Weiter mit: > Support (rechts oben) - Lesen der Dokumentation: > Documentation > VxWorks > VxWorks 21.07 > Configuration & Build (z.B.) - oder Kontakt mit Wind River aufnehmen (bisher mit Note 2+): > Submit a Case Für ein 'Support Case' ist eine persönliche Anmeldung bei WindRiver notwendig. - oder das Forum befragen: > Knowledge Forum - und Einiges mehr... Weitere Startmöglichkeiten: 3.8 Gut zu wissen... ==================== 3.8.1 Login ----------- Die aktuelle Konfiguration des User Managements: • Für ein Login ist ein User-Name und ein Passwort nötig. Es sind mehrere Logins gleichzeitig möglich: - local, seriell, 9,6 kbaud: VT200, TeraTerm - remote, viel schneller: Telnet • Die Passwort-Datei befindet sich auf der Ram-Disk0 und geht deshalb mit jedem Runterfahren des PC verloren, da geplant ist, User und Passwort über die Experiment-eigene ’startup.vxwi’ Datei zu setzen (add user). Alternativ könnte die Passwort-Datei auch permanent auf dem USB-Stick eingerichtet werden. • Wenn in der ’startup.vxwi’ Datei keine User vergegeben werden, dann wird nach dem Booten ein erster User mit freiem Passwort angefordert, der Admin-Rechte hat und mit ’add user’ weitere User eintragen kann. • Wenn in der ’startup.vxwi’ Datei bereits User definiert sind dann kann nach dem Booten ein Login nur mit einem dieser User erfolgen. • Dadurch dass mehrere Logins gleichzeitig erlaubt sind, kann das System während einer laufenden Messung überwacht werden (z.B. Last) und es besteht die Möglichkeit, bei einer evtl. abgebrochene Verbindung zum laufenden Experiment die Kontrolle wieder zu erlangen. Es besteht jedoch auch die Gefahr, eine laufende Messung durch einen zweiten Start zum Scheitern zu bringen. Um dies zu verhindern gibt das ’Start’-Menue eine Warnung aus, wenn es erkennt, dass es bereits aktiv ist. Wenn jedoch durch eine abgebrochene Verbindung die Kontrolle über die laufende Messung verloren gegangen ist, so kann sie auf diesem Wege möglicherweise wieder erlangt werden. Man kann diesen Weg aber auch dazu benutzten, eine bestehende Verbindung raus zu werfen und die Kontrolle zu übernehmen. Das kann aber je nach Status der Messung auch schief gehen, Vorsicht!!! 3.8.2 Kernel Shell ------------------ Die Kernel Shell hat einen C- und einen CMD-Interpreter. Nach dem Login gelangt man zunächst in den C-Interpreter, von dem aus man in den mächtigeren CMD-Interpreter wechseln kann und auch wieder zurück. Und man kann Kommandos des jeweils anderen Interpreters ausführen ohne zu wechseln: • C-Interpreter -> help Liste der C-Interpreter Kommandos -> spyHelp z.B. -> CMD Wechsel zum CMD-Interpreter -> CMD ... Kommando im CMD-Interpreter ausführen ohne Wechsel • CMD-Interpreter [...]# help Liste der CMD-Interpreter Kommandos [...]# help spy z.B. [...]# C Wechsel zum C-Interpreter [...]# C ... Kommando im C-Interpreter ausführen ohne Wechsel *Editieren der Kommandozeile:* Es stehen zwei Command-line Editoren zur Verfügung, vi und emacs. Aktuell ist emacs-like voreingestellt, wegen der größeren Ähnlichkeit mit Linux. • Editoren: + vi-like Editor Mit ESC erfolgt der Wechsel in die Navigation. Mit a, A, i, I erfolgt der Wechsel in den Insert-Mode. (siehe Anhang) Zeichen löschen (rückwärts) mit CTRL+h + emacs-like Editor Die Cursor-Tasten können wie gewohnt benutzt werden. Ungewohnt ist, dass Backspace, DEL und CTRL+d vorwärts löschen! Nur CTRL+h löscht rückwärts. • Wechsel der Editoren: C-Interpreter: -> CMD vi Wechsel zum vi-Editor -> CMD emacs Wechsel zum emacs-Editor CMD-Interpreter: [...]# vi Wechsel zum vi-Editor [...]# emacs Wechsel zum emacs-Editor *Command History:* • vi Editor h History ESC-nG geh zur History-Zeile n ESC-K zurück in History ESC-J vor in History • emacs Editor h History !n führe History-Zeile n aus Cursor up zurück in History Cursor down vor in History *Die CTRL-Funktionen der Kernel Shell:* • CTRL+C Aborts and restarts the shell. However, if a process is launched with the command interpreter (using rtp exec), the function of CTRL+C changes. It is used to interrupt the process. • CTRL+D Action depends on the location of the cursor. At the beginning of a line (that is, next to the shell prompt): Exits the shell or logs out of the session (if login is enabled). Logs out with remote sessions (telnet, for example) when INCLUDE_SECURITY is included; or with the console shell when INCLUDE_SECURITY is included and SHELL_SECURE is set to TRUE. At the end of a fragment of a command, file name, or path name: Lists all possible matches when the fragment is ambiguous, or completes the fragment when it is not. The TAB key also completes a fragment when it is not ambiguous. Note that file name completion only works with file systems that differentiate between files and directories (netDrv is does not). • CTRL+H Deletes a character (backspace). • CTRL+Q Resumes output. • CTRL+S Temporarily suspends output. • CTRL+U Deletes an entire line. • CTRL+W If a process is launched with the command interpreter (using rtp exec), this key sequence suspends the process running in the foreground. • CTRL+X Reboots (trap to the ROM monitor). • ESC Toggles between input mode and edit mode (vi mode only). *siehe auch:* Kernel Shell User's Guide Command-line Editing 3.9 Bekannte Probleme ===================== 3.9.1 Start-Menü ---------------- Der Transfer der Kontrolle von einem Login zum anderen funktioniert wie geplant, solange ein Anwenderprogramm (MCA, PEAK) aktiv ist. Wird dieses verlassen und danach der Bildschirm (Login) gewechselt, dann erfolgt bei einem neuen Start eines Anwenderprogramms die Ausgabe auf den alten Bildschirm. Mit einem neuen Start-Kommando auf dem alten Bildschirm ist dies zu reparieren. 3.9.2 Spy-App ------------- Spy zeigt die Aktivität von CPUs und Tasks an. In der aktuellen Core-VIP Konfiguration lässt sich Spy starten, auf dem Alder Lake (12. Generation) erfolgt aber keine Ausgabe. Einigen Hinweisen zufolge steht möglicherweise die benötigte auxClock nicht zur Verfügung. Lösung: Wechsel der auxClock Auxiliary clock source select alt: I8253 neu: MC146818 Funktioniert auch auf älteren Generationen, eventuelle Nebenwirkungen noch unbekannt. 3.10 Anhang =========== 3.10.1 Parameter für PC-Console ------------------------------- Das vxWorks-Core-Projekt ist für die Bedienung über einen seriellen Anschluss und über Telnet konfiguriert und kann damit mittels ’Tera Term’ (Windows) und ’xTerm’ (linux) gesteuert werden. Die lokalen Komponenten des VxWorks-Laborrechners (Monitor, Tastatur und Maus) werden daher nicht benötigt. Alternativ ist für einige PC-Modelle eine lokale Bedienung mittels USB-Tastatur und Monitor mg̈lich (PC-Console-Betrieb), der jedoch nicht für die Mess- und Auswerteprogramme geeignet ist, da er keine VT240-Kontrollsequenzen und -Grafik versteht. Für den PC-Console-Betrieb sind folgende Parametereinstellungen notwendig, man findet sie mit dem Stichwort ’Console’: • ser. Console (exclude) • USB GEN2 Serial Device Attach to PC Console Init (include) • PC console (include) • PC console keyboard (include) • PC console video (VGA oder UEFI, probieren...) 3.10.2 Telnet mit Tera Term --------------------------- Mittels Tera Term kann der VxWorks-Laborrechner sowohl über den seriellen Port (COM) als auch über Telnet gesteuert werden. Vorzugsweise wird Telnet verwendet, da damit die Grafikausgaben deutlich schneller dargestellt werden als über die serielle Leitung. Damit die Telnet-Verbindung nicht wegen Inaktivität abgebrochen wird, sind folgende Einstellungen an Windows und Telnet vorzunehmen: Windows ist üblicherweise so eingestellt, dass es nach einer gewissen Zeit der Inaktivität in den Energiesparmodus wechselt. Die Telnet-Verbindung geht dadurch verloren. Notwendige Änderung: Einstellungen -> Netzwerkbetrieb und Energiesparmodus -> Energiesparmodus: nie Tera Term hat einen 'Keep alive' Parameter, der dafür sorgt, dass periodisch eine minimale Übertragung zum Telnet-Server erfolgt, um eine Inaktivität zu vermeiden. Ein 'Keep alive' Takt von 1s hat funktioniert: Setup -> TCP/IP -> Keep alive: 1 Weitere nützliche Tera Term Setups: Terminal -> ID: VT320 -> Autoswitch VT <-> TEK: yes -> Termsize = WINSIZE: yes Das Grafikprogramm (Peak) muss für Tera Term konfiguriert sein: Analyse Spectrum -> ^Z -> Set configuration -> Terminals and printers -> Select terminal -> TeraTerm (TEK4010) 3.10.3 Telnet mit xTerm ----------------------- Alternativ zu Tera Term unter Windows bietet xTerm unter Linux die selben Funktionen, jedoch kein ’Keep alive’. Da der Telnet-Server unter VxWorks so konfiguriert ist, dass er Inaktivität ignoriert, sollte dies kein Problem sein. Entsprechende Tests stehen noch aus... Das Grafikprogramm (Peak) muss für xTerm konfiguriert sein: Analyse Spectrum -> ^Z -> Set configuration -> Terminals and printers -> Select terminal -> xTerm (TEK4010) 3.10.4 Navigating in VI ----------------------- To start working with the VI editor, you need to press ESC to enter line-editing mode. Here is a list of those commands. k - Backwards through history buffer j - Forwards through history buffer h - Move cursor to the left l - Move cursor to the right a - Append after cursor A - Append at end of line i - Insert before cursor I - Insert at beginning of line rc - Replace current character with character c x - Delete current character dd - Delete entire line nG - Go to history line /string Search for string 3.10.5 Intel CPU Generationen ----------------------------- Die CPU-Generation g bzw. gg ist der ix-ggxxx Bezeichnung zu entnehmen bei Abfrage der Prozessor Info (z.B. g = 7): Intel Core i7-7700K CPU @ 4.20GHz x 8 3 Mikroarchitekturen 3.1 Vorgänger: Pentium M, Core- und Core-2-Mikroarchitektur 3.1.1 Core-Mikroarchitektur 3.1.2 Core-2-Mikroarchitektur 3.2 Nehalem-Mikroarchitektur 3.2.1 Nehalem (1. Generation) 3.2.2 Westmere (1. Generation) 3.3 Sandy-Bridge-Mikroarchitektur 3.3.1 Sandy-Bridge (2. Generation) 3.3.2 Ivy-Bridge (3. Generation) 3.4 Haswell-Mikroarchitektur 3.4.1 Haswell (4. Generation) 3.4.2 Broadwell (5. Generation) 3.5 Skylake-Mikroarchitektur 3.5.1 Skylake (6. Generation) 3.5.2 Kaby-Lake (7. Generation) 3.5.3 Coffee Lake (8. Generation) 3.5.4 Coffee Lake Refresh (9. Generation) 3.5.5 Cannon Lake (8. Generation) 3.5.6 Whiskey Lake (8. Generation) 3.5.7 Comet Lake (10. Generation) 3.5.8 Cascade Lake (10. Generation) 3.5.9 Rocket Lake (11. Generation) 3.6 Ice-Lake-Mikroarchitektur 3.6.1 Ice Lake (10. Generation) 3.6.2 Lakefield (10. Generation, hybrid: 1 Core i-Kern und 4 Atom-Kerne) 3.6.3 Tiger Lake (11. Generation) 3.6.4 Alder Lake (12. Generation) 3.6.5 Raptor Lake (13. Generation) 3.6.6 Raptor Lake Refresh (14. Generation) 3.10.6 VIP Includes und Parameter für das Core-Projekt ------------------------------------------------------ In der VIP-Profile Datei für das Core-Projekt VXHOME/WindRiver2107/vxworks/21.07/os/vip_profiles/profiles/ vip_profile_PROFILE_CORE-VIP.cdf ist dokumentiert, mit welchen Includes und Parametern die BSP-Einstellungen ergänzt wurden um die benötigten Funktionen zu konfigurieren: Profile PROFILE_CORE-VIP PROFILES BSP_DEFAULT COMPONENTS INCLUDE_IPTELNETS\ INCLUDE_IPARP_CMD\ INCLUDE_IPCOM_SYSLOGD_CMD\ INCLUDE_IPCOM_SYSLOGD_USE_LOG_FILE\ INCLUDE_IPCOM_SYSVAR_CMD\ INCLUDE_IPIFCONFIG_CMD\ INCLUDE_IPD_CMD\ INCLUDE_IPNETSTAT_CMD\ INCLUDE_IPPING_CMD\ INCLUDE_IPROUTE_CMD\ INCLUDE_IPSNTP_CMD\ INCLUDE_IPNTP_CMD\ INCLUDE_IPNTP\ INCLUDE_IPSYSCTL_CMD\ INCLUDE_IPCOM_USE_TIME_CMD\ INCLUDE_NETPOOLSHOW\ INCLUDE_NET_HOST_SHOW\ INCLUDE_NETSTAT\ INCLUDE_PING\ INCLUDE_RLOGIN\ INCLUDE_TELNET_CLIENT\ INCLUDE_NFS2_CLIENT\ INCLUDE_NFS3_CLIENT\ INCLUDE_ANSI_ASSERT\ INCLUDE_ANSI_COMPLEX\ INCLUDE_ANSI_CTYPE\ INCLUDE_ANSI_ERRNO\ INCLUDE_ANSI_FENV\ INCLUDE_ANSI_FLOAT\ INCLUDE_ANSI_INTTYPES\ INCLUDE_ANSI_ISO646\ INCLUDE_ANSI_LIMITS\ INCLUDE_ANSI_LOCALE\ INCLUDE_ANSI_MATH\ INCLUDE_ANSI_SETJMP\ INCLUDE_ANSI_SIGNAL\ INCLUDE_ANSI_STDALIGN\ INCLUDE_ANSI_STDARG\ INCLUDE_ANSI_STDATOMIC\ INCLUDE_ANSI_STDBOOL\ INCLUDE_ANSI_STDDEF\ INCLUDE_ANSI_STDINT\ INCLUDE_ANSI_STDIO\ INCLUDE_ANSI_STDLIB\ INCLUDE_ANSI_STDNORETURN\ INCLUDE_ANSI_STRING\ INCLUDE_ANSI_TGMATH\ INCLUDE_ANSI_THREADS\ INCLUDE_ANSI_TIME\ INCLUDE_ANSI_UCHAR\ INCLUDE_ANSI_WCHAR\ INCLUDE_ANSI_WCTYPE\ INCLUDE_C_STDLIB\ INCLUDE_SHOW_ROUTINES\ INCLUDE_DEFAULT_TIMEZONE\ INCLUDE_POSIX_AIO_SHOW\ INCLUDE_POSIX_MQ_SHOW\ INCLUDE_POSIX_SEM_SHOW\ INCLUDE_TRIGGER_SHOW\ INCLUDE_RBUFF_SHOW\ INCLUDE_DATACOLLECTOR_SHOW\ INCLUDE_EXC_SHOW\ INCLUDE_ISR_SHOW\ INCLUDE_POOL_SHOW\ INCLUDE_SYSCTL_CLI\ INCLUDE_ACPI_SHOW\ INCLUDE_RTP_SHELL_CMD\ INCLUDE_RTP_SHOW_SHELL_CMD\ INCLUDE_SHL_SHELL_CMD\ INCLUDE_DEV_NULL\ INCLUDE_SHELL_EMACS_MODE\ INCLUDE_SHELL_HISTORY_FILE\ INCLUDE_STAT_SYM_TBL\ INCLUDE_RAM_DISK\ INCLUDE_RAM_DISK_FORMAT_HRFS\ INCLUDE_FSINFO_SHOW\ INCLUDE_NFS_CLIENT_ALL\ INCLUDE_NFS_CLIENT_RPC_TCP\ INCLUDE_RAMDRV\ INCLUDE_STARTUP_SCRIPT\ INCLUDE_IPNSLOOKUP_CMD\ INCLUDE_MEM_PART_CACHE_SHOW\ INCLUDE_DISK_UTIL_SHELL_CMD\ INCLUDE_EDR_SHELL_CMD\ INCLUDE_TASK_SHELL_CMD\ INCLUDE_SYM_SHELL_CMD\ INCLUDE_VM_SHOW_SHELL_CMD\ INCLUDE_ADR_SPACE_SHELL_CMD\ INCLUDE_SHARED_DATA_SHOW_SHELL_CMD\ INCLUDE_MAPPED_FILES_SHOW_SHELL_CMD\ INCLUDE_MEM_EDR_SHELL_CMD\ INCLUDE_MEM_EDR_RTP_SHELL_CMD\ INCLUDE_MODULE_SHELL_CMD\ INCLUDE_UNLOADER_SHELL_CMD\ INCLUDE_HISTORY_FILE_SHELL_CMD\ INCLUDE_SPY_SHELL_CMD\ INCLUDE_TIP_CMD\ INCLUDE_USER_MGT_SHELL_CMD\ INCLUDE_TIMER_SYS_SHOW\ INCLUDE_USB_GEN2_STORAGE_INIT\ INCLUDE_EHCI_INIT\ INCLUDE_OHCI_INIT\ INCLUDE_UHCI_INIT\ INCLUDE_USB_XHCI_HCD_INIT\ INCLUDE_USB_SHOW\ INCLUDE_MC146818_AUX_CLK\ INCLUDE_INTEL_CPU_SHOW\ INCLUDE_EHCI\ INCLUDE_DEV_DRV\ INCLUDE_DEV_ZERO\ INCLUDE_DEV_RANDOM\ INCLUDE_DEV_URANDOM\ INCLUDE_DEV_ARANDOM\ INCLUDE_DEV_TTY\ INCLUDE_DEV_CONSOLE\ INCLUDE_DEV_FULL\ INCLUDE_TMP_DIR\ INCLUDE_USB_GEN2_STORAGE\ INCLUDE_USB_GEN2_MOUSE_INIT\ INCLUDE_USB_GEN2_SER_FTDI232\ INCLUDE_USB_GEN2_SER_PL2303\ INCLUDE_OHCI\ INCLUDE_UHCI\ INCLUDE_USB_XHCI_HCD\ INCLUDE_MPTBL_SHOW\ INCLUDE_MP_APIC_DATA_SHOW BUNDLES PARAMETER_VALUES IPCOM_TELNET_IDLE_TIMEOUT "0" TIMEZONE_ENV_VAR "TZ=CET-1CEST,M3.5.0/02,M10.5.0/03" VX_SMP_NUM_CPUS VX_MAX_SMP_CPUS SHELL_COMPATIBLE FALSE SHELL_DEFAULT_CONFIG ("INTERPRETER=,LINE_EDIT_MODE=emacs,LINE_LENGTH=1024,STRING_FREE=manual,VXE_PATH=.;/bin;/usr/bin;/romfs") DNSC_DOMAIN_NAME "IAMP" DNSC_PRIMARY_NAME_SERVER "134.176.2.7" DNSC_SECONDARY_NAME_SERVER "134.176.2.5" NTP_INIT_PARAM NULL NTP_CONFIG_PARAM NULL NTP_CONFIG_FILENAME NULL SYSFLG_NO_SECURITY_ENABLE FALSE UDB_HASH_KEY ..... UDB_STORAGE_PATH "/ram0/cxUserDB.txt" UDB_PROMPT_INITIAL_USER TRUE SYS_CLK_RATE (100) USB_GEN2_SERIAL_IOS_RING_BUFFER_SIZE 131072 PROFILES_EXCLUSIONS 4 Neues Experiment ****************** Am Beispiel des Experimentes EXEIS wird im Folgenden gezeigt welche System- und Account-Einstellungen notwendig sind für den Anschluss eines Experiments. 4.1 System-Einstellungen ======================== siehe auch: /root/firewall.sh, /root/Umzug017 *** Firewall anpassen *** * Allow rlogin and rsh for EXEIS only sudo ufw allow proto tcp from 134.176.21.35 to any port 513 comment 'rlogin' sudo ufw allow proto tcp from 134.176.21.35 to any port 514 comment 'rsh' * Allow NFS for EXEIS only sudo ufw allow from 134.176.21.35 to any port 111 comment 'Portmapper' sudo ufw allow from 134.176.21.35 to any port nfs comment 'NFS' # Der folgende mountd-Port wurde auf 33333 festgelegt (s.u. NFS) sudo ufw allow from 134.176.21.35 to any port 33333 comment 'mountd' * Show Firewall settings sudo ufw status verbose sudo ufw reload * Hilfen sudo ufw delete nn #delete rule nn (1...) sudo cat /var/log/ufw.log -> ...[UFW BLOCK]... SRC=... DST=... DPT= * Problem Obwohl der Port 514 frei gegeben ist, taucht beim Booten von VxWorks eine unterschiedliche Zahl (3-10?) von Block-Meldungen im Log-File auf. Offensichtlich ohne weitere Auswirkungen: Oct 8 11:50:54 ionix kernel: [1191732.334599] [UFW BLOCK] IN=enp0s31f6 OUT= MAC=54:bf:64:6e:c7:d0:34:17:eb:c8:17:04:08:00 SRC=134.176.21.35 DST=134.176.21.37 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=61970 PROTO=TCP SPT=1009 DPT=514 WINDOW=0 RES=0x00 RST URGP=0 *** /etc/hosts ergänzen *** 134.176.21.35 exeis.strz.uni-giessen.de exeis *** NFS *** * NFS Einstellungen Der normalerweise dynamische mountd-Port muss für die Firewall festgelegt werden. Dazu muss NFS V4 abgeschaltet werden, sonst gibt es Fehler beim Restart. /etc/default/nfs-kernel-server ergänzen: RPCMOUNTDOPTS="--manage-gids" RPCMOUNTDOPTS="-no-nfs-version 4" RPCMOUNTDOPTS="--port 33333" * /etc/exports (NFS) ergänzen /home/exeis 134.176.21.35(rw,root_squash,sync,no_subtree_check) * Restart und Check NFS sudo systemctl restart nfs-server sudo systemctl is-enabled nfs-server sudo systemctl status nfs-server 4.2 Account-Konfiguration ========================= Für das Experiment EXEIS z.B. sind folgende Verzeichnisse anzulegen: Messdaten: /home/exeis/ex_home/ex_data Dokumentation: /home/exeis/ex_home/ex_help -> /usr/exp/ex_help Programmparameter: /home/exeis/ex_home/ex_param Programme: /home/exeis/ex_home/ex_prog -> /usr/exp/ex_prog Quellen: /home/exeis/ex_home/ex_src -> /usr/exp/ex_src VxWorks-Systeme: /home/exeis/ex_home/vxw -> /usr/exp/vxw Um rsh und rlogin zu erlauben, wird für EXEIS in .rhosts folgender Eintrag benötigt: /home/exeis/.rhosts 134.176.21.35 exeis.strz.uni-giessen.de VxWorks lädt nach dem Booten zum Konfigurieren die Datei /home/exeis/ex_home/ex_param/startup.vxw für MVME-Rechner bzw. /home/exeis/ex_home/ex_param/startup.vxwi für INTEL-Rechner Nach dem Kopieren einer solchen, bereits vorhandenen Datei sind einige Änderungen zur Anpassung notwendig.