This is a variation of RTLinux for kernel 2.0.33 by Barabanov, Yodaiken and company, NMT, New Mexico, USA. (http://rtlinux.cs.nmt.edu/~rtlinux/) People at NMT must be praised for their nice work without which this variant would not exist. It fixes the fpu supports so that all the stuff now works, without causing unpredictable jitters, either if the fpu is used or not. This new version of the variant is for uniprocessor (UP) PCs and allows now to chose between a periodic and a oneshot timing, a feature found in the official RTLinux SMP alpha release 1.2a for 2.1.90. The fix ticking is less flexible but, with the usual PC hardware (UPs cannot use APICs), much more efficient. So it is up to you which one to choose. It should be noted that the real time is now measured on the base of the CPU clock (time stamp clock) and not on the 8254 chip, that is used only to generate interrupts. I think that such a feature is not available on 486 machines and thus this variant requires Pentium and onward machines. If you have a 486 use version 0.6. It has a correct fpu support but only a periodic scheduler. It needs to calibrate the clock. You have two choices: - the first, and less precise, gets the cpu frequency from bogomips. Just type "cat /proc/cpuinfo" and read it; - the second requires running the module "rt_cal.o" from the directory "calibration" included in this distribution. Yuo'll get something better than bogomips in about ten seconds. If you want to get full precision let it run still the least significant digit is stabilized. See README in "calibrate" for a more precise description. This variant of rtlinux has also more services including: timings, semaphores, messages and remote procedure calls, that makes it easier to develop complex real time applications. Its installation requires that you already know how to install rtlinux-0.6. What to do: 1 - Apply the rtlinux-0.6 patch for linux 2.0.33, as explained in the NMT official distribution, do "make menuconfig" but do not "make zImage" immediatly; 2 - Copy the files rt_time.c, rt_time.h, time.c, ksyms.c, rt_sched.h and rt_prio_sched.c of this distribuition over, i.e.replace, their corresponding in the appropriate linux directories. The file "copyto" (included), appropriately edited and made executable, can be of help; 3 - Carry out the compilation of the kernel by "make zImage"; 4 - Get the cpu frequency as described above and set the macro CPU_FREQ in rt_prio_sched.c accordingly. 5 - Do "make modules"; Before carrying on step 2 it is suggested to save the original file to be overwritten. Note again that the script file "copyto" does this already. The file "ldmod" and "remod" can be used to insmod and rmmod the scheduler and the fifo modules. Now you are done and can try the test cases. Be carefull in setting the macro TICK_PERIOD in the various examples to a value appropriate to your machine (nanosecs). The one now used works for a 200Mhz PentiumPro and can be too demanding for lower class Pentiums. In all the tests the choice of which timer, periodic or oneshot, to use is done by commeting/uncommentig the macro ONE_SHOT. It is important to remark that the default choice of the scheduler is for a periodic timing, to chose the oneshot mode "rt_set_oneshot_mode()" must be called before any time conversion or service is required to the scheduler. In the case of a multi module application set the mode in the very first module to be loaded. You will not see any copyright whatsoever in this software and you can use it as you like but I would like "to be remembered" if you'll find it usefull. As usuall it is "as it is" and I assume no responsability if anything goes wrong. However comments and any feedback are warmly welcomed, email them at: "mantegazza@aero.polimi.it".