This is the second offical release of the RoBiOS(tm) Project. Todays date: 09.06.1997 This is RoBiOS version 1.1 What is it: =========== RoBiOS is a small bios for the 68332 microcontroller based Eyebot Platform of the University of Stuttgart. It provides basic functions necessary to control mobile robots based upon the Eyebot Platform, like: - LCD output (text and graphic) - Key input - Connectix Quickcam (color and b/w) input - serial input/output - system timer - multithreading - audio output - basic image processing (a image processing lib with further functions is provided) - loadable user programs - servo and motor control - various sensor input The directories: ================ ldfiles the linker description files for RAM/ROM programs and hdt data libgraph graphic lib libimpro an image processing lib which could be used with robios but currently isn`t because it makes things much bigger :) this lib is provided "as-is". librobi linklib to adapt C functions (e.g. printf) to robios functions libs the normal C linklibs which I included to make sure everyone uses the same libs, libs that work fine hex the latest RoBiOS and hdtdata versions robios the RoBiOS itself hdtdata various hdt datas demos various demo programs everyone feel free to write one !!! The files in the robios dir: ============================ Makefile change this to compile for your board revision Makefile.dos makefile for the dos crosscompiler Makefile.linux makefile for the Linux crosscompiler adconv.s a/d converter routines by Klaus Schmitt audio.s audio routines by Klaus Schmitt boot.s exception vectors, jumptable, exhandle.s exception handlers hdt.c basic HDT functions init.s init routines for hardware components ip.s image processing routines keys.s keyboard functions lcd.s lcd functions main.c Bios main routine latch.s out/inlatch write/read by Klaus Schmitt psd_driv.s PSD sensor driver by Klaus Schmitt qcam.s quickcam functions sample.s audio samples serial.s serial i/o routines by Klaus Schmitt sm_driv.s servo/motor control by Rainer Leonhardt srec.s srecord download by Barbara Linn system.s lowlevel system utils tasking.c functions fuer multithreading timer.c system timers user.s routines to handle user programs Changes: ======== V1.1: - renamed robibin to hex - cleaned up, especially /mc/demos - expanded INFO structure in hdts - added new walker demo - added function OSReadInLatch - fixed color cam zoom function - fixed MOTORDrive (hopefully) - changed strcmp in librobi to own routine - improved support for Eyebot Platforms with more ROM/RAM - moved hdtdata from robios to extra data files (/mc/hdtdata/) - added libc2 test lib - added two new minidemos - added new audio.s, psd_driv.s, serial.s, srec.s, adconv.s - added new HDT based hardware test under hrd/tst - removed set/svo - fixed CS4 setting for vehicle - added A/D converter functions - added outlatch functions - added PSD sensor support - added demos/psd - changed /demos/threads to test preemtive mt - added functions OSPermit, OSForbid and preemtive MT mode - added new /demos/impro - replaced MT demo in main with sema demo - changed OSSpawn interface, spawn now uses malloc - added demos/motor - added more HDT functionality - added Camera Zoom option - added HDT skeleton again - changed KEYGet to KEYGetBuf and added new KEYGet V1.0: (first offical release) - added new srec.s - added new /demos/impro - waiting on multiple serial support - removed HDT skeleton again, because completion will take too long pre4V1.0: (second V1.0 prerelease) - added serial I/O via fopen,fscanf,fprintf - fixed bug in OSPutVar - added first HDT skeleton - added function OSGetCount() - prepared everything to support multiple serial interfaces - added new servo.s - added new srec.s - expanded EXECLIB - reserved Romspace for HDT and added HDTBase definition pre2V1.0: (first V1.0 prerelease) - added function OSError(char *,int,BOOL) - added byte save feature for OSGetVar and OSPutVar - improved user program handling (Del/Ld with instant abort) - added /mc/demos/serial - added new functions OSStartRS232(), OSStopRS232() - improved CamInit again ! - added new /mc/demos/impro - improved USRResident, now old binaries don`t cause crashes ATTENTION: binary format changed again - added new srec.s, serial.s - renamed /mc/demos/threads2 to /mc/demos/sema and added new version - added /mc/libgraph a graphic lib - added /mc/demos/graph a small graphic demo - added /mc/DPROGS a description of all demo programs - added /mc/demos/mini/etch.c V0.9: (seventh beta release) - removed compile option IRPROB, since so many depends on working interrupts , timer, multithreading, even downloading. - added /mc/demos/test for test purpose - added function USRResident(char *name,BOOL mode) now user programs can survive reset ATTENTION: binary format has changed ! - added function OSSleep(int n), waits and reschedules - moved ServoInit from init.s to servo.s - added new audio.s, now with microphone support - added adconv.s by K.Schmitt (not yet used) - removed serial I/O routines from srec.s (actually Klaus did that :) - added serial.s by K. Schmitt, interrupt driven serial I/O routines - added /mc/demos/sound by K.Schmitt - fixed too short camera timeout - fixed timer bug for boards with IRPROB - changed LCDMenu again, now only menu entrys that are overwritten are cleared V0.8: (sixth beta release) - fixed wrong value in %a5 bug that caused strange hangups - added new srec.s, now with flowcontrol/noflowcontrol option - fixed LCDMenu, it now clears the menu line before writing a new one - fixed scheduler bug, thread2 demo now works correctly - added new audio.s version, audio is now completely switched of by NOAUDIO - added uid to tcb structure, access with: OSGetUID(thread) - fixed diff operator crash - improved camera init problem (please test) - added serial handshake setup menu, value also stored in tpupram - added LCDSetPixel,LCDGetPixel and LCDInvertPixel (who writes a nice graphic lib ??:) - added funktion OSWait(n), waits n*1/100 seconds - added startvalue parameter to OSInitSem - added Thomas Braeunel`s multithreading demo /mc/demos/threads2 - added Thomas Braeunel`s Makefiles for Linux - added serial baudrate setting saving to tpupram, so that it survives reset V0.7: (fifth beta release) - added /mc/demos/threads a demo on HOWTO do threads - added /mc/demos/impro a first image processing demo skeleton by B.Linn - added /mc/demos/walker a first demo skeleton for the 6leged walker by R.Leonhardt - removed /mc/test - moved /mc/user to /mc/demos/example - removed zbar and zfoo - added clock functions for user programs - added new srec.s, now with progress report and RTS/CTS handshake - added servo support by Rainer Leonhardt (servo.s) (will only work if your board has a working TPUclk2) - added cooperative multithreading and semaphores - added EXECLIB, description of all RoBiOS functions - added assember system routines descriptions in source files - moved HOWTO from /mc/user to /mc and added further howto topics V0.6: (fourth beta release) - added small HOWTO make your own userprogramm in /mc/user - moved user/include to librobi/include - added makefile entry for T.B.`s board - added nice header to all my sources - moved running clock from startupscreen to the end of menu - added stackframe output to Guru Mediation - added serial port speed selection (default 57600) - added bidirectional port support for color cam - added new srec.s version V0.5: (third beta release) - object files are no longer provided with this archive (a flashable version of RoBiOS can be found under /mc/robibin/robios.hex) (!! this version is for the latest (fully functional) board revision only !!) - added meta-makefile (doesn`t work under DOS, sorry) (you can now do 'make' and 'make clean' in the /mc dir for all subdirs) - fixed startup problem on older boards (it`s not really a fix, it`s a nasty workaround, I had to switch of all interrupts -> no timer :) - added sample.s which contains audio samples - fixed wrong .section directives - added new audio version - added color quickcam support - added srecord download by Barbara Linn (srec.s), currently only 9600 (does not work on some boards) V0.4: (second beta release) - added audio support by Klaus Schmitt (audio.s) - added clock function (only for the bios) - added first bits of multitasking (very early state) - added autobrightness for camera - removed obscure addq #0x02 in all lcd,qcam,ip routines - added nibble remapping in CAM_GetFrame - many bugfixes and codechanges in the b/w quickcam code - release versions will now be called robios[version].tgz V0.3: (first beta release) - now hopefully all comments are in english - added camera detection - added keyrepeat function Known bugs: =========== - NONE Remarks: ======== IRPROB: These people who needed the IRPROB option now have their old problems back. Sorry ! But since RoBiOS more and more relys on a working interrupt I can no longer support this option. Sorry again ! The only solution, as it was before, if your board doesn`t start up try to unplug and replug the power supply. If this doesn`t help through your board away and get a new one or stay with V0.8 of robios. But keep in mind that programs developed under V0.8 might not work with newer RoBiOS versions. Compatibility: ============== I tried to make robios configurable for all existing eyebot board revision. And it should work on all further coming boards revision out of the box. Currently RoBiOS only uses 128kB flashrom and 256kB RAM which can be changed easily. Incompatibility: ================ I need to overwrite an address register when I call C funktions over the jumptable. I choose %a0 because this seems to be used only as scratch register by gcc-m68k 2.7.2. If this should change in the future RoBiOS can not be compiled with this new compiler version. RoBiOS and Eyebot on the net: ============================= Online documentation and updates: http://www.informatik.uni-stuttgart.de/ipvr/bv/eyebot For any bugreport and suggestions mail: robios@lamparts.dialup.informatik.uni-stuttgart.de