Better installer and startup scripts.
--- a/Makefile Fri Apr 07 08:29:19 2006 +0000
+++ b/Makefile Fri Apr 07 10:38:47 2006 +0000
@@ -1,8 +1,6 @@
#------------------------------------------------------------------------------
#
-# Globales Makefile
-#
-# IgH EtherCAT-Treiber
+# EtherCAT Makefile
#
# $Id$
#
@@ -11,7 +9,7 @@
ifneq ($(KERNELRELEASE),)
#------------------------------------------------------------------------------
-# Kbuild-Abschnitt
+# kbuild section
obj-m := master/ devices/
@@ -20,15 +18,17 @@
else
#------------------------------------------------------------------------------
-# Default-Abschnitt
+# default section
ifneq ($(wildcard ethercat.conf),)
include ethercat.conf
else
-KERNELDIR := /usr/src/linux
-INSTALLDIR := /opt/ethercat
+KERNEL := `uname -r`
+DEVICEINDEX := 99
endif
+KERNELDIR := /lib/modules/$(KERNEL)/build
+
modules:
$(MAKE) -C $(KERNELDIR) M=`pwd`
@@ -36,7 +36,7 @@
$(MAKE) -C $(KERNELDIR) M=`pwd` clean
install:
- @./install.sh $(INSTALLDIR)
+ @./install.sh $(KERNEL) $(DEVICEINDEX)
#------------------------------------------------------------------------------
--- a/ethercat.conf.tmpl Fri Apr 07 08:29:19 2006 +0000
+++ b/ethercat.conf.tmpl Fri Apr 07 10:38:47 2006 +0000
@@ -10,9 +10,9 @@
#------------------------------------------------------------------------------
# The kernel to compile the EtherCAT sources against
-KERNELDIR = /usr/src/linux
+KERNEL := `uname -r`
-# Install directory used by "make install"
-INSTALLDIR := /opt/ethercat
+# PCI index of the EtherCAT device
+DEVICEINDEX := 99
#------------------------------------------------------------------------------
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ethercat.sh Fri Apr 07 10:38:47 2006 +0000
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+#------------------------------------------------------------------------------
+#
+# EtherCAT rc script
+#
+# $Id$
+#
+#------------------------------------------------------------------------------
+
+CONFIGFILE=/etc/sysconfig/ethercat
+
+#------------------------------------------------------------------------------
+
+print_usage()
+{
+ echo "Usage $0 { start | stop }"
+}
+
+unload_module()
+{
+ if lsmod | grep ^$1 > /dev/null; then
+ echo " unloading module \"$1\"..."
+ rmmod $1 || exit 1
+ fi
+}
+
+#------------------------------------------------------------------------------
+
+# Get parameters
+if [ $# -eq 0 ]; then
+ print_usage
+ exit 1
+fi
+
+ACTION=$1
+
+# Load configuration from sysconfig
+
+if [ -f $CONFIGFILE ]; then
+ . $CONFIGFILE
+else
+ echo "ERROR: Configuration file \"$CONFIGFILE\" not found!"
+ exit 1
+fi
+
+case $ACTION in
+ start)
+ echo "Starting EtherCAT master..."
+ # remove modules
+ unload_module 8139too
+ unload_module 8139cp
+ unload_module ec_8139too
+ unload_module ec_master
+ echo " loading master modules..."
+ if ! modprobe ec_8139too ec_device_index=$DEVICEINDEX; then
+ echo "ERROR: Failed to load module!"
+ exit 1
+ fi
+ ;;
+ stop)
+ echo "Stopping EtherCAT master..."
+ unload_module ec_8139too
+ unload_module ec_master
+ if ! modprobe 8139too; then
+ echo "Warning: Failed to restore 8139too module."
+ fi
+ ;;
+ *)
+ print_usage
+ exit 1
+esac
+
+echo "done."
+exit 0
+
+#------------------------------------------------------------------------------
--- a/install.sh Fri Apr 07 08:29:19 2006 +0000
+++ b/install.sh Fri Apr 07 10:38:47 2006 +0000
@@ -8,11 +8,15 @@
#
#------------------------------------------------------------------------------
+CONFIGFILE=/etc/sysconfig/ethercat
+
+#------------------------------------------------------------------------------
+
# install function
install()
{
- echo " installing $1"
+ echo " $1"
if ! cp $1 $INSTALLDIR; then exit 1; fi
}
@@ -20,28 +24,48 @@
# Fetch parameter
-if [ $# -eq 0 ]; then
- echo "Usage: $0 <INSTALLDIR>"
+if [ $# -ne 2 ]; then
+ echo "Usage: $0 <KERNEL> <DEVICEINDEX>"
exit 1
fi
-INSTALLDIR=$1
-echo "EtherCAT installer. Target: $INSTALLDIR"
+KERNEL=$1
+DEVICEINDEX=$2
-# Create installation directory
-
-if [ ! -d $INSTALLDIR ]; then
- echo " creating target directory."
- if ! mkdir $INSTALLDIR; then exit 1; fi
-fi
+INSTALLDIR=/lib/modules/$KERNEL/kernel/drivers/net
+echo "EtherCAT installer - Kernel: $KERNEL"
# Copy files
+echo " installing modules..."
install master/ec_master.ko
install devices/ec_8139too.ko
-# Finished
+# Update dependencies
+echo " building module dependencies..."
+depmod
+
+# Create configuration file
+
+if [ -f $CONFIGFILE ]; then
+ echo " notice: using existing configuration file."
+else
+ echo " creating $CONFIGFILE..."
+ echo "DEVICEINDEX=$DEVICEINDEX" > $CONFIGFILE || exit 1
+fi
+
+# Install rc script
+
+echo " installing startup script..."
+cp ethercat.sh /etc/init.d/ethercat || exit 1
+if [ ! -L /usr/sbin/rcethercat ]; then
+ ln -s /etc/init.d/ethercat /usr/sbin/rcethercat || exit 1
+fi
+
+# Finish
+
+echo "EtherCAT installer done."
exit 0
#------------------------------------------------------------------------------