*
* file: README - 2/1/94
*
* uC/OS for the ARM processor, by Marco Graziano (marcog@crl.com).
*

This directory contains the uC/OS kernel for the ARM processor.
uC/OS is a real-time kernel wrote by Jean J. Labrosse for the x86
processor and published on the "Embedded Systems Programming" 
magazine in 1992.

The ARM port has been done by me while at VLSI Technology Inc. in
San Jose. I would like to thank my management for allowing me to
put this work in the public domain.

For more information about uC/OS I recommend the book by Jean J. Labrosse
"uC/OS The Real-Time Kernel" distributed by Prentice Hall, ISBN 0-13-031352-1.

To use this version of uC/OS you need the ARM Software Development Toolkit,
distributed among others by VLSI Technology Inc., and the ARM600-based
PID board by VLSI Technology Inc. In case you need to contact VLSI Technology 
the right person to talk to about the ARM development tools is Mike Kaskowitz 
(mike.kaskowitz@vlsi.com).

uC/OS for the ARM CPU includes support for the PID board, and it assumes that 
it is running on a PID hardware. It should be straightforward to remove or 
to replace PID specific code, if necessary.

Some information on the specific routines for the PID board and the uC/OS
functions is in the file ucosman.ps. 

To compile uC/OS and to build the examples, the ARM (cross-)compiler, linker and
assembler must be in your path. Read the Makefile for details. 
Worthless to say, everything is setup for a Sun machine.

To run the examples, I download the code with the ARM remote debugger
"armsd -SERIAL -li example1", and I start it. To see the examples' output, 
I run the command "tip -9600 /dev/ttya" in another window and kill armsd
(with "^Z" followed by "kill %1"). This because for the time being there is no 
support for the ROM resident debug monitor nor for the remote debug protocol 
(RDP) in uC/OS. In case you wonder how to stop tip running like a bat out of
hell (or like me on the freeway), type on a new line, a tilde followed by a 
dot "~." 

Performance (worst cases):

	task context switch in example1:	< 25 usec
		(from a task coded in 'C' to another 'C' task)

	IRQ dispatch latency:			< 45 usec
		(hw interrupt to uC/OS task pending on a semaphore that is
		 posted by the interrupt handling routine. All coded in 'C')

Measured with a 200MHz logic analyzer and running uC/OS on a PID board.


Comments and suggestions to marcog@crl.com.

Enjoy,


-Marco Graziano


Disclaimer: This software is released "AS IS" and the authors do not assume any
liability arising out of this program or use thereof.

