diff -r 0d84d95790d9 -r 16c8ceea8f18 drivers/ecos_lpc2138_sja1000/ReadMe.txt --- a/drivers/ecos_lpc2138_sja1000/ReadMe.txt Tue Feb 13 17:21:19 2007 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,247 +0,0 @@ -/* -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