5 design-time object creation, 6 run-time object creation and deletion, Object – Texas Instruments TMS320 DSP User Manual

Page 29

Advertising
background image

www.ti.com

FIR_Config FIR;

FIR_init();

FIR_exit();

FIR_create();

FIR

firObject

Creates

firObject

FIR

FIR_create();

Creates

firObject

Int length;

Int coeff[];

Int delay[];

Read-only
coefficient array

Filter input
history buffer

3.1.5 Design-Time Object Creation

3.1.6 Run-Time Object Creation and Deletion

Interfaces and Modules

Figure 3-2. Module Object Creation

Figure 3-3

illustrates an object appropriate for a finite impulse response filter implemented by a module

named FIR.

Figure 3-3. Example Module Object

Many embedded systems are very static in nature; memory, MIPS, and I/O peripherals are statically
partitioned among a fixed set of functions that operate continuously until power is removed. Static systems
admit a number of performance optimizations that simply are not possible in dynamic systems. For
example, there is no need for a memory manager in a static system and general data structures, such as
linked lists, can be often replaced with much simpler and more efficient structures, such as fixed length
arrays. These optimizations not only reduce the system's Code size requirements; they may also have a
significant effect on the execution performance of the system.

When designing a system that is very cost sensitive, must operate with limited power, or has limited MIPS,
designers look for portions of the system that can be fixed at design time (i.e., made static). Even if the
entire system cannot be static, often certain sub-systems can be fixed at design time. It is important,
therefore, that all modules efficiently support static system designs.

Guideline 3

All modules that support object creation should support design-time object creation.

In practice, this simply means that all functions that are only required for run-time object creation be
placed either in separate compilation units or separate COFF output sections that can be manipulated by
the linker. Ideally, every function should be in a separate compilation unit. This allows the system
integrator to eliminate run-time support that is unnecessary for a static system.

Modules may optionally support run-time object creation and deletion. In some applications, run-time
creation and deletion is a requirement. For example, without the ability to remove unneeded objects and
reuse memory, the physical constraints of the system make it impossible to create rich multi-function
applications.

Run-time creation of objects is valuable even in systems that do not support or require run-time deletion of
these objects. The precise nature of the objects, the number of objects, and even the type of objects
created may be a function of parameters that are only available at run-time. For example, you may want to
create a single program that works in a variety of hardware platforms that differ in the amount of memory
available and this amount is determinable at run-time.

SPRU352G – June 2005 – Revised February 2007

Algorithm Component Model

29

Submit Documentation Feedback

Advertising