Software Integration
What it takes to make an embedded controller work
Software programs that an embedded controller
executes are generally developed on a PC using a software development system. For many
embedded controllers, the development system consists of a software editor, a compiler,
and a debuggerall of which are separate items that are not always guaranteed to
cooperate.
An alternative to utilizing separate editors,
compilers, and debuggers is to use a software development system that integrates all the
components into one software development tool. This alleviates potential problems,
guaranteeing all three development tools will work properly.
An integrated software development system, such
as Z-Worlds Dynamic C, provides a direct and fast means of developing and debugging
programs for an embedded controller. Moreover, because the target controller can be used
during program development, the software and the hardware can be considered as one unit.
Multitasking Software
Simple computers usually execute one program at a time. Embedded computers often
execute more than one task at a time through the use of multitasking software.
Multitasking simply means that a computer can perform multiple tasks simultaneously.
In reality, a single processor can only execute
one instruction at a time. Multiple tasks interleave their execution, only appearing to
execute together. The tasks are actually sharing the processors time. Two common
types of multitasking are preemptive and cooperative.
Preemptive Multitasking
Preemptive multitasking means that some top-priority eventusually an alarm,
a timer interrupt, or a supervisory task (often referred to as a
kernel)takes control of the processor from the task currently running
and turns it over to another task. In this scenario, program tasks compete for the
processors time.
Tasks have no control over when they may be
preempted, and usually have no information about other tasks. Cooperation, coordination,
and communication among tasks that get asynchronously preempted is a major application
problem. Preemptive multitasking requires special attention during software development.
Cooperative Multitasking
Cooperative multitasking solves some of the development headaches associated with
preemptive multitasking. Under cooperative multitasking, each task voluntarily yields
control so other tasks can execute.
The advantages of cooperative multitasking
include:
Explicit control of the points a task begins and ends logical subsections of its
overall job.
Easier to create tasks.
Lower and less indeterminate interrupt latency.
Simplified programming.
NetworkingA Form of
Multiprocessing
Multiprocessing refers to hardware and multitasking refers to softwareyet
the two often go together and have much in common. Multiprocessing means, literally,
having multiple processors.
Some applications may require more input and
output ports than a single controller can provide, but the application may not support two
separate programs running on two separate controllers. Or, in other cases, running
numerous input and output lines throughout a machine to and from a single controller might
be physically unsafe or impractical.
Although software can execute across multiple
processors in many different fashions, a simple and straightforward approach to
multiprocessing is to create a multiprocessing system by establishing a network of
controllers communicating over industry-standard RS-485 serial lines.
|