LUFA Scheduler Overview

THE LUFA SCHEDULER IS NOW DEPRECATED AND WILL BE REMOVED IN A FUTURE RELEASE. EXISTING CODE SHOULD CONVERT TO STANDARD LOOPS AS SHOWN IN THE CURRENT LIBRARY DEMOS.

The LUFA library comes with a small, basic round-robbin scheduler which allows for small "tasks" to be executed continuously in sequence, and enabled/disabled at runtime. Unlike a conventional, complex RTOS scheduler, the LUFA scheduler is very simple in design and operation and is essentially a loop conditionally executing a series of functions.

Each LUFA scheduler task should be written similar to an ISR; it should execute quickly (so that no one task hogs the processor, preventing another from running before some sort of timeout is exceeded). Unlike normal RTOS tasks, each LUFA scheduler task is a regular function, and thus must be designed to be called, and designed to return to the calling scheduler function repeatedly. Data which must be preserved between task calls should be declared as global or (preferably) as a static local variable inside the task.

The scheduler consists of a task list, listing all the tasks which can be executed by the scheduler. Once started, each task is then called one after another, unless the task is stopped by another running task or interrupt.

If desired, the LUFA scheduler does not need to be used in a LUFA powered application. A more conventional approach to application design can be used, or a proper scheduling RTOS inserted in the place of the LUFA scheduler. In the case of the former the USB task must be run manually repeatedly to maintain USB communications, and in the case of the latter a proper RTOS task must be set up to do the same.

For more information on the LUFA scheduler, see the Scheduler.h file documentation.


Generated on Sun Nov 22 16:00:10 2009 for LUFA (Formerly MyUSB) Library by  doxygen 1.6.1