s526: don't dereference insn->data
[comedi.git] / INSTALL
diff --git a/INSTALL b/INSTALL
index c98a8348b8e15d0e4096da511ae42b7efe6571cf..c85b02558ef9be5b831915792919f6a76b0802c4 100644 (file)
--- a/INSTALL
+++ b/INSTALL
 
-Prerequisites:
-       - a machine capable of compiling Linux modules
-       - a correctly installed kernel source tree.  Specifically,
-         you need to have the file /usr/src/linux/.config and
-         /usr/src/linux/include/linux/autoconf.h.  If these are
-         not present, you can create them by compiling a new
-         kernel.  Some distributions don't provide these by
-         default.
-       - a 2.0, 2.2, or 2.3 series kernel.  Some development
-         kernels may not work, since I don't keep very good
-         track of them.
-
-Configure using 'make'.  The first time you run make, it will take
-you through configuration options similar to compiling a linux
-kernel.  If you need to run the configuration again, use 'make config'.
-
-Compile using 'make'.  If this doesn't work, make sure you have the
-basic tools installed to compile.  If you can successfully compile
-other things, consult the author, as he has probably made a mistake.
+* Linux source:
+
+In order to compile the Comedi modules, you will need to have
+a correctly configured Linux kernel source tree.  The best
+way to get one is to download a tarball from kernel.org and
+compile your own kernel.  Comedi should work with most 2.2, 
+2.4, and 2.6 Linux kernels.  2.6.x kernels older than 2.6.6 are
+not supported.  Support for 2.0.3x is not actively maintained,
+but it should work and bugs will be fixed as they are reported.
+
+You can also prepare a kernel source tree that matches
+the kernel you are currently running if you have its config file (in
+the Debian distibution the config files for the kernel-image packages
+are installed into the /boot directory).  The following steps will
+(almost) set up your kernel sources correctly.  You will also need
+write permission to the kernel source directory the first time you
+run comedi's configure script, so you might want to unpack the kernel
+source into a directory you own.
+
+1) Get a copy of the kernel source that matches the kernel you are
+       running.  Unpack it and copy your kernel config file to '.config'
+       in the top directory of your kernel source.
+2) You might need to edit the file 'Makefile' in the kernel source.
+       At the top of the Makefile, the variable EXTRAVERSION is defined.
+       If necessary, change it to match your kernel (for example, if the command
+       'uname -r' produces "2.4.16-386" then your EXTRAVERSION should be
+       set as 'EXTRAVERSION=-386'.
+3) Run 'make oldconfig' in your kernel source directory.
+4) Run 'make dep' (for 2.6 kernels, do a 'make modules_prepare' instead 
+       or even better a full 'make') in the kernel source directory and 
+       you are done.
+
+Red Hat users note: Kernel sources that are distributed with Red
+Hat Linux are not supported, because they are too heavily
+modified.  However, there is some information in
+Documentation/comedi/redhat-notes on how to use Red Hat kernels.
+
+* RTAI support:
+
+If you want to use the real-time capabilities of Comedi with
+RTAI, you need to compile and install RTAI first.  If you
+don't install the rtai kernel modules, you may get unresolved
+symbols when installing the comedi kernel modules.
+
+* RTLinux support:
+
+If you want to use the real-time capabilities of Comedi with
+RTLinux, you need to compile RTLinux (both the kernel and the
+modules) first.  Known working versions are 2.x and 3.0.
+
+* Configuration:
+
+Configure with './configure'.  './configure --help' will give the
+configuration options.  If the configure script does not exist
+(if you checked comedi out from git for example), it can
+be generated by running './autogen.sh'.  The autoconf, automake,
+autoheader, etc. tools are required to generate the configure
+script (automake version >= 1.7 recommended).  The --with-linuxdir
+option is particularly useful, as it allows you to specify
+the location of your Linux kernel source directory.  If
+you are using an RT-patched kernel, the --with-rtaidir or
+--with-rtlinuxdir options allow you to specify
+the location of your RTAI or RTLinux source directory.
+
+* Compiling:
+
+Compile using 'make'.  If this fails for some reason, send the
+_entire_ build log to the mailing list.  Without the build
+log, it is impossible to find problems.
+
+* Installation:
 
 Install using 'make install' as root.  This installs the files:
-       /lib/modules/<<kernel version>>/misc/comedi.o
-       /lib/modules/<<kernel version>>/misc/kcomedilib.o
-       /lib/modules/<<kernel version>>/misc/<<driver files>>.o
-       /usr/sbin/comedi_config
-       /usr/include/comedi.h
-If you chose to install in /usr/local instead, it will, of course,
-install in /usr/local instead of /usr.  The modules are still installed
-in /lib/modules.
-
-You need to create device files to access the hardware from a
-user process.  These can be created using 'make dev'.  The following
-special files will be created:
-       /dev/comedi0
-       /dev/comedi1
-       /dev/comedi2
-       /dev/comedi3
-
-To use comedi, the driver module must be loaded into the kernel.
-In general, this is done by a command similar to
-
-       /sbin/modprobe <<driver>>.o
+
+  /lib/modules/<<kernel version>>/comedi/comedi.ko
+  /lib/modules/<<kernel version>>/comedi/kcomedilib.ko
+  /lib/modules/<<kernel version>>/comedi/<<driver files>>.ko
+
+Comedi communicates with userspace via device files (/dev/comedi*).
+If you have devices which are able to auto-configure themselves and
+you've got udev support these devices are created automatically.  You
+can disable this mechanism by setting the module parameter
+comedi_autoconfig to zero of the module "comedi_fops". In case you
+have got an old ISA card or no udev support (embedded systems) you can
+create static devices with the module parameter
+comedi_num_legacy_minors by setting it to the number of desired static
+/dev/comedi* devices. You can then configure your device from the
+userspace with comedi_config. In this case you need to create device
+files to access the hardware by hand from a user process.  These can
+be created using 'make dev'.  The following special files will be
+created:
+
+  /dev/comedi0
+  /dev/comedi1
+  /dev/comedi2
+  ...
+  /dev/comedi15
+
+* Comedilib:
+
+Now would be a good time to compile and install Comedilib.  Comedi
+and Comedilib are completely independent, so it doesn't matter
+which is installed first.
+
+* Running Comedi:
+
+To use comedi, the driver module and the core Comedi modules must
+be loaded into the kernel.  This is done by a command similar to
+
+  /sbin/modprobe <<driver>>
 
 If your module dependencies are set up correctly, this will load
-both comedi.o and your driver.  See the man pages for modprobe
-and insmod for more details.
-
-The default behavior when the module is loaded is to _not_ configure
-it automatically, i.e., you have a device file (/dev/comedi0) associated
-with a driver, but the driver is not associated with a device.  To
-associate a device file/driver with a device, you need to run the
-command /usr/sbin/comedi_config, and supply additional information,
-such as I/O address, IRQ, and possibly DMA channels.  The following
-commands are examples:
-
-       /usr/sbin/comedi_config /dev/comedi0 dt282x 0x240,3
-       /usr/sbin/comedi_config /dev/comedi1 atmio-E 0x260,4
-       /usr/sbin/comedi_config /dev/comedi2 dt2817 0x228
-       /usr/sbin/comedi_config /dev/comedi0 pcimio-E
+both comedi.ko and your driver.  If you get unresolved symbols, check
+the FAQ or the mailing list archives.  Also look at the man pages
+for modprobe and insmod.
+
+In order to configure a driver module to use a particular device
+file (/dev/comediN) and a particular device, you need to use the
+command 'comedi_config', which is part of the comedilib
+distribution.  Comedi_config is invoked using
+
+  comedi_config /dev/comedi0 <device name> <option list>
+
+The device name may or may not be the same as the module name.  In
+general, if the device type can be autoprobed (as with ISA PnP or
+PCI devices), the device name will be the same as the module name.
+Otherwise, you will need to check Documentation/comedi/drivers.txt
+for information about what device name is appropriate for your
+hardware.  The option list is to supply additional information,
+such as I/O address, IRQ, DMA channels, and other jumper settings.
+Information about option lists appropriate for a driver is in
+drivers.txt.  The following commands are examples:
+
+  comedi_config /dev/comedi0 dt2821 0x240,3
+  comedi_config /dev/comedi1 ni_atmio 0x260,4
+  comedi_config /dev/comedi2 dt2817 0x228
+  comedi_config /dev/comedi3 ni_pcimio
 
 Try a 'man comedi_config' for information on how to use
-this utility.  The options (numbers at the end, above) have
-different meanings for different drivers, and you should consult
-the file Documentation/comedi/drivers.txt for details about
-each driver.  Scripts have been written for a few of the drivers
-with very complicated command lists -- these are found in the etc
+this utility.  Scripts have been written for a few of the drivers
+with very complicated option lists -- these are found in the etc
 directory.
 
-If you like to autoload your modules, put the lines
+* Module Autoloading:
+
+For recent kernels, module autoloading is handled by udev.  The
+following is only applicable to older kernels.
 
-       alias char-major-98 comedi
-       alias char-major-98-0 your_driver
-       post-install your_driver /usr/sbin/comedi_config /dev/comedi0 your_driver <<options>>
+If you like to autoload your modules, put the following lines
+into /etc/modules.conf (this does not apply for PCMCIA cards):
+
+  alias char-major-98 comedi
+  alias char-major-98-0 your_driver
+  post-install your_driver PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH;comedi_config /dev/comedi0 board_name <<options>>
 
 Alternatively, for complicated option lists, the scripts in etc
 are designed to be copied into /etc, so that you could put the
 following lines into /etc/conf.modules:
 
-       alias char-major-98-0 dt282x
-       post-install dt282x /etc/dt282x.conf
+  alias char-major-98-0 dt282x
+  post-install dt282x /etc/dt282x.conf
+
+* Calibration:
 
-If you have a National Instruments AT-MIO or PCI-MIO board, you probably
-will want to run comedi_calibrate, an autocalibration tool that is part
-of comedilib in a bootup script.
+If your board has self-calibration capabilities,
+will want to run comedi_calibrate, an autocalibration tool that 
+is packaged in a seperate tarball, in a bootup script.
 
-To write programs that use comedi, there are demo programs included
-with comedilib.
+* PCMCIA:
 
+The PCMCIA drivers require at least a 2.6.16 kernel (at for
+unpatched mainline kernels).  You must also have pcmciautils
+and udev installed.  You can write a udev rule to automatically
+run gpib_config after the driver is loaded.
 
-Upgrading:
+Upgrading:
 
 From versions prior to 0.6.0, you will need to edit and recompile
 all programs that use comedi or comedilib, since the names of