SlideServe
Menu
Préférences
© SlideServe · v2026

IOC Development Environment

elspeth avatar
14 diapositives · 391 Views · Nov 07, 2013

IOC Development Environment. Marty Kraimer APS. Reference. EPICS IOC Applications Building and Source Release Control Marty Kraimer,Janet Anderson,Ralph Lange June 15, 1998. Overview. Create and build IOC applications databases vxWorks startup files SNL programs

IOC Development Environment - slide 1
01 / 14IOC Development Environment
1 / 17

Télécharger la présentation

IOC Development Environment
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. IOC Development Environment Marty Kraimer APS

  2. Reference EPICS IOC Applications Building and Source Release Control Marty Kraimer,Janet Anderson,Ralph Lange June 15, 1998

  3. Overview • Create and build IOC applications • databases • vxWorks startup files • SNL programs • New record, device, driver support • Access security configuration files • Other IOC code • Special Host code • Source management features • CVS can be used • IOC software is divided into <top> areasEach <top> is separately managed • gnumake + rules builds all components • User prerequisites • Understands C • Knows how to use a text editor • Has superficial knowledge of make

  4. <top> Directory Structure <top>/ config/ Configuration + Rules xxxApp/ All source files except startup src/ Code xxxSrc/ Arbitrary number of xxxSrc Db/ Databases xxxDb Arbitrary number of xxxDb ... May have others: adl, etc xxxApp/ Arbitrary number of xxxApp iocBoot/ Only one iocBoot iocxxx Directory for each ioc … bin/ install directory <host_arch>/ <target_arch>/ … <other install directories>

  5. Install directories By default installed into <top>/<xxx> <top> bin/ Object and executables solaris/ mv167/ lib/ Object libraries <arch> include/ e.g. xxxRecord.h dbd/ menu, recordtype, device, driver,etc db/ record instances, templates, etc ...

  6. gnumake • make (gnumake) at any level • <top> • gnumake clean uninstall • gnumakeBuilds and installs everything that is not up to date • xxxApp • gnumake <arguments>Same as issuing command in each subdirectory • xxxApp/xxxSrc • Builds in O.<arch>; Installs in <top>/<something> • gnumakeBuilds and installs all out of date components • <args> • <arch>Build only for specified architecturegnumake mv167 • cleanRemove all O.<arch> directories • xxxApp/xxxDbgenerates and installs database instance files + more • iocBoot/iocxxxCreates the cdCommands file

  7. config files • Files meant to be modified • CONFIG - Can override make variablesCROSS_COMPILER_TARGET_ARCHS = mv167 • CONFIG_APPDefinitions for <top>s referenced in RELEASE • RELEASELocation of other <top> areasEPICS_BASE=/usr/local/epics/baseR3.13.1 • Other files • RULES.xxxFiles containing make rules • *.plPerl scripts used by make rules • Structure of shared <top> areas • Just another <top> • Everything intended for use by other <top>s is installed.

  8. xxxApp/src files • base.dbd - definitions supplied by base • get from base or other <top> and edit • menu, recordtype, device, driver taken from base • much support commented outinclude “menuGlobal.dbd”...#include “egRecord.dbd”...#device(ai,VME_IO,devAiXy566Se,”XYCOM-566 SE Scanned”) • baseLIBOBJS - objects supplied by base • get from base or other <top> and edit • object modules for record, device, driver support • Like base.dbd much support commented out • changes made to this must match base.dbd

  9. base.dbd and baseLIBOBJS base.dbd include "menuGlobal.dbd" include "menuConvert.dbd" include "aiRecord.dbd" #include "aaiRecord.dbd" include "aoRecord.dbd" #include "aaoRecord.dbd" device(ai,CONSTANT,devAiSoft,"Soft Channel") device(ai,CONSTANT,devAiSoftRaw,"Raw Soft Channel") #device(ai,VME_IO,devAiXy566Se,"XYCOM-566 SE Scanned") #driver(drvGpib) driver(drvBitBus) #driver(drvBb910) #LIBOBJS += $(EPICS_BASE_BIN)/aaiRecord.o #LIBOBJS += $(EPICS_BASE_BIN)/aaoRecord.o LIBOBJS += $(EPICS_BASE_BIN)/aiRecord.o LIBOBJS += $(EPICS_BASE_BIN)/aoRecord.o LIBOBJS += $(EPICS_BASE_BIN)/devAiSoft.o LIBOBJS += $(EPICS_BASE_BIN)/devAiSoftRaw.o #LIBOBJS += $(EPICS_BASE_BIN)/devAiXy566Se.o #LIBOBJS += $(EPICS_BASE_BIN)/drvBb910.o LIBOBJS += $(EPICS_BASE_BIN)/drvBitBus.o #LIBOBJS += $(EPICS_BASE_BIN)/drvGpib.o baseLIBOBJS

  10. xxxApp/src continued • Makefile.Host RECTYPES += xxxRecord.h DBDEXPAND += xxxInclude.dbd DBDNAME = xxxApp.dbd • xxxInclude.dbd include “base.dbd” include “xxxRecord.dbd” device(xxx,CONSTANT,devXxxSoft,”Softchannel”) • Makefile.Vx LIBOBJS += xxxRecord.o LIBOBJS += sncExample.o include ../baseLIBOBJS LIBNAME = xxxLib INSTALLS += iocCore seq PROD += xxx.o

  11. xxxApp/xxxDb/Makefile.Host • databases installed into <top>/db DB += xxx.db • Template files expanded on host • yyy.template has the format record(ai,”$(USER):aiExample$(NO)”){… } • yyy.substitutions file yyy.template {{USER=“mrk”,NO=“1”}{USER=“mrk”,NO=“2”} } DB += yyy.db USES_TEMPLATE += yyy.template • Template files to be expanded at boot time via dbLoadTemplate() DB += zzz.template zzz.substitutions • Support for capfast generated files • Can also expand .dbd files

  12. iocBoot • iocBoot/MakefileExecutes make in each subdirectory • iocBoot/iocxxx/MakefileCreates cdCommands. Make sure that ARCH = <arch> is defined correctly • cdCommands looks like startup=“<full path to iocxxx>“ appbin=“<full path to top/bin/arch>“ … • st.cmd looks like < cdCommands cd appbin ld < iocCore ld < xxxLib cd startup dbLoadDatabase(“../../dbd/xxxApp.dbd”) dbLoadRecords(“../../db/xxx.db”,”user=mrk”) iocInit

  13. makeBaseApp • Execute the commands cd ~/ioc mkdir example cd example <path>/makeBaseApp.pl -t example example <path>/makeBaseApp.pl -i -t example example The first command creates: <top>/ Makefile config/ ... exampleApp src/ ... Db/ ... The second command creates: <top>/iocBoot Makefile iocexample/ … Each command can be issued multiple times • Look at example!!!

  14. Application Templates • makeBaseApp uses templates • base supplies the following <base>/templates/makeBaseApp/top/Makefileconfig exampleAppexampleBootsimpleAppsimpleBoot • Application templates can be created. • <top>/config/RELEASE contains TEMPLATE_TOP = <full path to template top> • Templates are just like another <top>