|
|
|
|
@@ -0,0 +1,195 @@
|
|
|
|
|
#!/bin/bash
|
|
|
|
|
#Arguments -f FILENAME -m MESSAGE [-d cgdb|strace] -x DAN_CONFIG_LOCATION -r root
|
|
|
|
|
#-f FILENAME=MARTe configuration file
|
|
|
|
|
#-m MESSAGE=Start message
|
|
|
|
|
#-d cgdb=Run with cgdb
|
|
|
|
|
#-d strace=Run with strace
|
|
|
|
|
#-x DAN_CONFIG_LOCATION=Location of the DANConfig.xml (e.g. ~/Projects/ECJASDN/Configurations/DANTestConfig.xml)
|
|
|
|
|
#-r run as root
|
|
|
|
|
|
|
|
|
|
#Run with cgdb or strace?
|
|
|
|
|
DEBUG=""
|
|
|
|
|
|
|
|
|
|
#Consume input arguments
|
|
|
|
|
while [[ $# -gt 1 ]]
|
|
|
|
|
do
|
|
|
|
|
key="$1"
|
|
|
|
|
|
|
|
|
|
case $key in
|
|
|
|
|
-f|--file)
|
|
|
|
|
FILE="$2"
|
|
|
|
|
shift # past argument
|
|
|
|
|
;;
|
|
|
|
|
-m|--message)
|
|
|
|
|
MESSAGE="$2"
|
|
|
|
|
shift # past argument
|
|
|
|
|
;;
|
|
|
|
|
-s|--state)
|
|
|
|
|
STATE="$2"
|
|
|
|
|
shift # past argument
|
|
|
|
|
;;
|
|
|
|
|
-d|--debug)
|
|
|
|
|
DEBUG="$2"
|
|
|
|
|
shift # past argument
|
|
|
|
|
;;
|
|
|
|
|
-x|--dan_config)
|
|
|
|
|
DAN_CONFIG_LOCATION="$2"
|
|
|
|
|
shift # past argument
|
|
|
|
|
;;
|
|
|
|
|
-i|--dan_ip)
|
|
|
|
|
DAN_MASTER_IP="$2"
|
|
|
|
|
shift # past argument
|
|
|
|
|
;;
|
|
|
|
|
-r|--root)
|
|
|
|
|
RUN_AS_ROOT="root"
|
|
|
|
|
shift # past argument
|
|
|
|
|
;;
|
|
|
|
|
--default)
|
|
|
|
|
DEFAULT=YES
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
# unknown option
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
shift # past argument or value
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [ -z ${MARTe2_DIR+x} ]; then
|
|
|
|
|
echo "Please set the MARTe2_DIR environment variable";
|
|
|
|
|
exit;
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -z ${MARTe2_Components_DIR+x} ]; then
|
|
|
|
|
#Check if this is a CCS deployment
|
|
|
|
|
MARTe2_Components_DIR_CSS=$MARTe2_DIR/Build/x86-linux/Components/
|
|
|
|
|
if [ -d ${MARTe2_Components_DIR_CSS+x} ]; then
|
|
|
|
|
MARTe2_Components_DIR=$MARTe2_DIR
|
|
|
|
|
else
|
|
|
|
|
echo "Please set the MARTe2_Components_DIR environment variable";
|
|
|
|
|
exit;
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo $MARTe2_Components_DIR
|
|
|
|
|
|
|
|
|
|
LD_LIBRARY_PATH=.
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_DIR/Build/x86-linux/Core/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/EPICSCA/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/LinuxTimer/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/LoggerDataSource/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/DAN/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/NI6259/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/NI6368/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/SDN/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/UDP/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/MDSWriter/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/RealTimeThreadAsyncBridge/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/RealTimeThreadSynchronisation/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/DataSources/FileDataSource/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/IOGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/BaseLib2GAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/ConversionGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/FilterGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/StatisticsGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/WaveformGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/GAMs/ConstantGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/BaseLib2Wrapper/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/SysLogger/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MARTe2_Components_DIR/Build/x86-linux/Components/Interfaces/EPICS/
|
|
|
|
|
### Add own datasource lib path
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/DataSources/RandomDataSource/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/DataSources/NI6528/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/DataSources/JAEPICSCA/
|
|
|
|
|
### Add own GAM lib path
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/ESDNValidationGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAMessageGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAPreProgrammedGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JACountdownGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAWaitStandbyGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAConditionalSignalUpdateGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JATimerGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAESDNProcessCommandGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAModeControlGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JATimedSignalUpdateGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAHVArmedSyncGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JARFONSyncGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JAWFRecordGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JATriangleWaveGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JARampupGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JACounterGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JARTStateMachineGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JASDNRTStateMachineGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JATerminalInterfaceGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JABitSumGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JASourceChoiseGAM/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/JABitReverseGAM/
|
|
|
|
|
### Add EPICS lib path
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EPICS_BASE/lib/$EPICS_HOST_ARCH
|
|
|
|
|
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../Build/x86-linux/GAMs/FilterDownsamplingGAM/
|
|
|
|
|
#LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mdsplus/lib64/
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SDN_CORE_LIBRARY_DIR
|
|
|
|
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/codac/lib/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo $LD_LIBRARY_PATH
|
|
|
|
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
|
|
|
|
|
|
|
|
|
|
#Starts the DAN services only if required
|
|
|
|
|
if [ ! -z "$DAN_CONFIG_LOCATION" ]; then
|
|
|
|
|
export DAN_ARCHIVE_MASTER=$DAN_MASTER_IP
|
|
|
|
|
echo $DAN_MASTER_IP
|
|
|
|
|
/opt/codac/bin/danApiTool api close
|
|
|
|
|
/opt/codac/bin/danApiTool api init $DAN_CONFIG_LOCATION
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
NR_CPUS=16
|
|
|
|
|
#Setup performance
|
|
|
|
|
#Disable CPU speed changing
|
|
|
|
|
#service cpuspeed stop
|
|
|
|
|
#memo:Redirecting to /bin/systemctl stop cpuspeed.service
|
|
|
|
|
#memo:Failed to stop cpuspeed.service: Unit cpuspeed.service not loaded.
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
# Migrate irq to CPU0
|
|
|
|
|
#for D in $(ls /proc/irq)
|
|
|
|
|
#do
|
|
|
|
|
#if [ -x "/proc/irq/$D" ] && [ $D != "0" ]
|
|
|
|
|
#then
|
|
|
|
|
# echo $D
|
|
|
|
|
# echo 1 > /proc/irq/$D/smp_affinity
|
|
|
|
|
#fi
|
|
|
|
|
#done
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#Location of the MARTe2 application loader
|
|
|
|
|
MARTe2APP=$MARTe2_DIR/Build/x86-linux/App/MARTeApp.ex
|
|
|
|
|
|
|
|
|
|
#Start with cgdb or with strace
|
|
|
|
|
if [ "$DEBUG" = "cgdb" ]; then
|
|
|
|
|
cgdb --args $MARTe2APP -l RealTimeLoader -f $FILE -m $MESSAGE
|
|
|
|
|
elif [ "$DEBUG" = "strace" ]; then
|
|
|
|
|
strace -o/tmp/strace.err $MARTe2APP -l RealTimeLoader -f $FILE -m $MESSAGE
|
|
|
|
|
else
|
|
|
|
|
if [ -z ${RUN_AS_ROOT+x} ]; then
|
|
|
|
|
if [ -z ${STATE+x} ]; then
|
|
|
|
|
echo "taskset was not used."
|
|
|
|
|
sleep 1
|
|
|
|
|
$MARTe2APP -l RealTimeLoader -f $FILE -m $MESSAGE
|
|
|
|
|
else
|
|
|
|
|
$MARTe2APP -l RealTimeLoader -f $FILE -s $STATE
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
if [ -z ${STATE+x} ]; then
|
|
|
|
|
echo "taskset was used."
|
|
|
|
|
sleep 1
|
|
|
|
|
taskset 1 $MARTe2APP -l RealTimeLoader -f $FILE -m $MESSAGE
|
|
|
|
|
else
|
|
|
|
|
taskset 1 $MARTe2APP -l RealTimeLoader -f $FILE -s $STATE
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ ! -z "$DAN_CONFIG_LOCATION" ]; then
|
|
|
|
|
/opt/codac/bin/danApiTool api close
|
|
|
|
|
fi
|