Skip to content

doniexun/rtos

 
 

Repository files navigation

[femos]  >> Fast E M bedded Operating System <<  [femos]
--------------------------------------------------------

    Real Time Operating System for Eos system
    Real Time Application System for Eos system

University of Waterloo, Canada

This is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3.0, as published by the Free Software Foundation.  See file COPYING.

Author 	: 	INSOP SONG, Michael Cole
email	: 	isong@uwaterloo.ca
Date 	: 	June 15, 2001

Directory explanation:

task	:	task descriptor table 
		ready queue stuff
kernel	: 	kernel main, init
bsp	:	board specific code 
hal	: 	hardware abstraction layer
util	:	usful stuffs
clock	: 	clock server and notifier
serial	: 	char bounded buffer for serial communcation
	:	we don't have serial server, we have those functions
	:	inside kernel
name	: 	name server
ipc	: 	inter process communication
syscall	:	system call stuffs, syscall
include	: 	header files
lib	:	object files
name_server:	name server implementation

sensor	:	sensor releated and other serial related files
train	:	trainTask class, and trainTaskMail files
central_control : centralControl class and main files
pathfind:	shortest path find using dijkstra algorithm
buffer_server	: some bounded buffer server (which are not used for
this demonstration)
black_blard	: blackboard class and files (which are not used for
this demonstration)


onestep : 	make each step command generation
schedular:	scheduling for multiple trains
tokenizer:	command input parsing files


--------------------------------------------------------
[femos]  >> Fast E M bedded Operating System <<  [femos]



General thing: 

Class implementation files usually starts with narmal
name such as, kernel, trainTask, centralControl. And the real files
which use thoses objects(Kernel, TrainTask, CentralControl..) is ends
with "Main" such as kernelMain, trainTask, centralControlMain.


Install:

1. make clean
2. make all(it generate object files and copy into "lib" directory


Run:

0. all the files for download are at 'kernel' directory including
Bindfile and 'kernelMain' and other user tasks programs

1. main kernel : "kernelMain"

2. refer "Bindfile"


---------------------------------------------------

kernelMain              KernelMain              62000
init                    Init                    700
idle                    Idle                    300
stat                    Stat                    400
nameServer              NameServer              1900
commandSrv              CommandSrv              1500
sensorSrv               SensorSrv               1500
sensorSchen             SensorSched             500
trainTaskMain           TrainTaskMain           34000
centralControlMain      CentralControlMain      40000
blackBoardMain          BlackBoardMain          10000
pathfind                PathFind                5000
onestep                 OneStep                 5000
schedular               Schedular               10000
tokenizer               Tokenizer               2700
matrix                  Matrix                  900
sensorReporter          SensorReporter          1000

----------------------------------------------------


Using program:

1. Please use the Eos on track B(our kernel needs lots of memeory)
I tested with 64 full tasks(with matrix like taksks) today(25) without
any problem(just in case, if you don't like such things ,undefine
"MATRIX_TASKS" at "kernel\init.c"files

2. When it starts 
it asks you "which track" you can press A or B

3. it asks you about trains
such as " do you want to use train 1?" you can press y or n for
chosing.

One thing: 52 trains runs well, because we got this train's speed
table.

4. If you answer about all train(1,6,12,52,55,57)

then you can command as follows
train 52 -s a01 -e d15
> means train 52 starts from current position and end position d15
> our parser is stubbrn so you have to type exactly same as I typed
> starting position has no meaning, though.Because our system assumes
> that current position is start position(last tripped sensor
> position)

>* it may finished at next to the end position(We give many constraint
>on the way but we give lots of flexibility at stop position for the
>future implementation. multiple train.)

5. or you may type "run random"
it runs 5 times random run in a row.

6. current other command"hal, run init.." are not provided
> you can use "train 52 -a a01 -e d05" and "run random" with one train
and two train.

7. when program runs it tells its command set first
and if train passes it command set sensor, it tells you about
current positoin estimation and real position and differences with
percentage.

Most of the position estimation is below 10% except start
postion(because train starts from somewhere out of the sensor, but
when it runs We can calibrate everytime train passes the sensor, and
the same login end position may have little large difference
percentage.

8. Out output is bit differcult follow, because we made this for Java
Terminal. We dump many information because using Java terminal cature
many system information and check those later not like WYSE. We use only "\n" for our Write primitives which give strange output at WYSE but not on our java terminal. 
Pleas count on this point.

9. If you have any question, please email me 
using 
insop@watfor.uwaterloo.ca (PAMI group systems design engineering)
or
isong@student.math.ueaterloo.ca

Thank you very much


July 26, 2001
by Insop song

About

Real-time OS (RTOS) FEMOS (Fast EMbedded OS). [search keywords: Waterloo CS452]

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 71.5%
  • C++ 22.0%
  • Shell 1.7%
  • Assembly 1.6%
  • Makefile 1.5%
  • Roff 1.3%
  • Other 0.4%