--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/drivers/ecos_lpc2138_sja1000/ReadMe.txt Wed May 10 16:59:40 2006 +0200
@@ -0,0 +1,247 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+ ____ _ _ _
+ / ___| / \ | \ | | ___ _ __ ___ _ __
+| | / _ \ | \| |/ _ \| '_ \ / _ \ '_ \
+| |___ / ___ \| |\ | (_) | |_) | __/ | | |
+ \____/_/ \_\_| \_|\___/| .__/ \___|_| |_|
+ |_|
+ ____ _
+ / ___|__ _ _ __ __ _ __| | __ _
+ | | / _` | '_ \ / _` |/ _` |/ _` |
+ | |__| (_| | | | | (_| | (_| | (_| |
+ \____\__,_|_| |_|\__,_|\__,_|\__,_|
+
+ canfestival@canopencanada.ca
+/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MARKETING or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+
+CanFestival driver for the Philips ARM7 model LPC2138 , with a Philips
+SJA1000 CAN controler, and running on the eCOS operating system.
+
+Driver Features:
+Full CANfestival-3 support including:
+DS-150/205: CAN Power Management Layer specification (sleep/wake-up)
+DS-201: CAN low level layer
+DS-301: CANopen Application layer and Communication Profile (basic CANopen specification)
+DS-303-1: LED diagnostic usage (led.c)
+DS-305: Layer Setting Service (lss.c) to set the baudrateand node ID in a PnP fashion.
+NVRAM: Non Volatil Ram (nvram.c) Full support for internal Philips IAT programming FLASH mode
+
+
+To use this driver, you need to proceed to do all these steps.
+NB: We choose to leave this driver in .o object code to keep the capability
+to make on-the-fly redefinition of some parameters for all examples.
+
+Step 1
+-----------
+Have a developpement workstation. To build everything, we chose to use
+an old AMD K6/2-300Mhz running with FreeBSD-5.2-RELEASE freely available
+at http://www.freebsd.org/.
+To install freebsd, download the two floppy images from
+ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/5.2-RELEASE/floppies
+and copy them to a simple floppy disk by typeing:
+ dd if=./image.dd of=/dev/fd0
+ dd if=./image2.dd of=/dev/fd0
+and proceed to boot on them.
+You can use Linux or Windows also or any other O/S where you can use GCC.
+
+on FreeBSD, you need to configure the serial port by editing the /etc/rc/serial
+config file by adding this entry:
+
+lpc2000 () {
+ # Philips LPC2000 serial port configuration for 57600 bauds connection.
+
+ ci=$1; shift
+ co=$1; shift
+
+ for i in $*
+ do
+ # Lock clocal on, hupcl off.
+ # XON-XOFF printer
+ stty < /dev/ttyi${ci}${i} clocal -hupcl ixon -imaxbel -ixany -ixoff -crtscts 57600
+ stty < /dev/ttyl${ci}${i} clocal hupcl
+ stty < /dev/cuai${co}${i} clocal -hupcl ixon -imaxbel -ixany -ixoff -crtscts 57600
+ stty < /dev/cual${co}${i} clocal hupcl
+ done
+}
+
+###############
+lpc2000 d a 0 1 # to configure COM1 and COM2, mean, /dev/cuaa0 and /dev/cuaa1
+###############
+
+Step 2
+-----------
+Find an upload tool to be able to flash the LPC2138.
+We found the lpc2isp at the address:
+
+ http://guest.engelschall.com/~martin/lpc21xx/isp/index.html
+
+ You can use this upload script to call it with proper arguments.
+
+#!/bin/sh
+lpc21isp -term -control build/terminal.hex /dev/cuaa1 57600 14746
+
+
+Step 3
+-----------
+Proceed to build a GCC cross compiler to be able to produce ARM7TDMI compatible
+binary. Go to the port directory of your FreeBSD
+
+ cd /usr/ports/devel/arm-elf-binutils
+ gmake install
+
+ cd /usr/ports/devel/arm-elf-gcc295
+ gmake install
+
+And add the installation binary PATH to your environment variables.
+
+ cd /etc
+ vi profile
+
+ export PATH=$PATH:/usr/local/armelf/bin
+
+
+Step 4
+-----------
+Build an eCOS tree for the LPC2138.
+Download eCOS from http://www.ecoscentric.com and proceed to compile
+the configtool program.
+
+ cd /usr/ports/devel/ecos-tools/
+ gmake install
+
+ untar our special package for eCOS named eCOS-OLIMEX-p2138.tgz in
+ the eCOS three on your files system.
+
+Start now your configtool for eCOS:
+ configtool
+
+Choose the right target
+For our purpose, we choose to use an OLIMEX P2138 target board.
+This target is not in the list, we created it from a derivative of
+the OLIMEX P2106. We simply selected an other processor in the pulldown menu
+of the configtool. The LPC2138. Adjust some memory capacity, and that's it.
+
+When all you need is properly selected in the configtool, you click on
+Save_As and you suggest a name like My2138.
+After, you click on Generate Build Tree.
+ cd My2138_build
+ gmake depend
+ gmake
+ gmake install
+ And now you have you own eCOS tree for your project in My2138_install
+
+Step 5
+-----------
+Prepare the hardware board for this project. We chose to use an
+http://www.olimex.com/ board, the P2138.
+Any other LPC2138 evaluation could made the job.
+On the P2138 board, we have a little area that we can use to solder
+the SJA1000 controler.
+See can_controler.gif to know how to solder all wires.
+
+Warning: If you want to use different GPIO (General Purpose Input Output)
+pin to fit with your own project,
+you can choose a different one, but you need
+to be sure to properly define then in the lpc2138_pinout.h
+
+Step 6
+-----------
+Put the CANfestival-3.tar.gz stuff in My2138_install/src/CANfestival-3
+ cd My2138_install/src/CANfestival-3
+ ./configure target=ecos-lpc2138-sja1000
+ gmake
+ cd My2138_install/lib
+ ln -s My2138_install/src/CANfestival-3/src/libcanfestival.a
+ cd My2138_install/src
+ ln -s My2138_install/src/CANfestival-3/driver/ecos-lpc2138-sja1000
+
+Step 7
+-----------
+Now you are ready to build our demo.
+ cd My2138_install/src/CANfestival-3/examples/DS-406Master_ecos
+ gmake
+
+ cd My2138_install/src/CANfestival-3/examples/TerminalSlave_ecos
+ gmake
+Step 8
+-----------
+To test, upload both .hex file to both targets with lpc21isp and
+see the DS-406 absolut rotary encoder transmiting his absolute value to the
+terminal.
+
+ For more info about this project, see http://www.oremeq.qc.ca/
+Step 9
+-----------
+For your own project, you can copy all the examples files in your own
+directory and modify them.
+
+What is important to understand is:
+
+driver/ecos_lpc2138_sja1000:
+
+ build_baudrate.c is a commande line tool to generate the proper
+ timing file for your sja1000 regarding your sja1000 clk.
+ see the Makefile for adjustment.
+
+ canOpenDriver.c is the only link between the libcanfestival and
+ the hardware.
+ f_can_send
+ f_can_receive
+ interrupts
+ nvram_save/load
+ baudrate
+
+ eCOS-OLIMEX-p2138.tgz eCOS package for the OLIMEX p2138 evaluation board
+ you have to untar that files in your eCOS three.
+
+ sja1000.c containe only function for initialization or
+ configuration of the CAN controler. All this stuff is
+ _not_ use by the libcanfestival. You have to call them
+ from your main() to enable CAN with your needed configuration.
+
+ hardware init
+
+ lpc2138.c All the basic stuff to run the LPC2138
+ iat_flash user programmable internal flash of the lpc2138
+
+ lpc2138_pinout.h Is your LPC2138 pinout definition. Modify this file
+ if you want to redefine your pinout affectation.
+
+ time_slicer.c eCOS implementation of the CANfestival scheduler.
+ settimer
+ alarm
+
+ applicfg.h is your configuration file for the libcanfestival
+
+ lpc2138_pinout.h define all your GPIO to fit macros.
+
+
+objdictedit:
+ Objdictedit will produce the dictionary.
+ Generate your dictionnary. (Or use an already made YourFile.od with
+ the tool: objdictgen.py
+ The job is to implement all functions define in the YourFIle.c in
+ your own project files.
+
+Enjoye!!!!
+ Canopen Canada core team
+ canfestival@canopencanada.ca