And, code lines 1303 and 1304 in combination specify that the requested memory block is to be persistent and should be located in on-chip dual-access memory. FIG. The IG723ENC interface is defined in the ig723enc.h header file. These memory spaces include: Dual-access memory (DARAM)—on-chip memory that allows two simultaneous memory accesses in a single instruction cycle, Single-access memory (SARAM)—on-chip memory that allows only a single memory access per instruction cycle. Algorithm module 2010 then initializes the region of memory to create algorithm instance 2011 in step 2008b. :An interface defined by a C header whose functions are implemented by a single module, within a system. When execution begins, the framework will call algAlloc( ) for each algorithm module in turn to determine the memory usage requirements. This is good coding practice and motivates reentrant code since all references to the code and data will be through a pointer to the object. In step 2611a, client 12606 calls alginit( ) to initialize the instance object. A huge number of DSP algorithms are needed in today's marketplace, including modems, vocoders, speech recognizers, echo cancellation, and text-to-speech. A module's header file defines a concrete interface. Extension of the present invention to include these should be obvious to one skilled in the art. The ALG module provides a generic interface used to create, delete, and invoke algorithms on data. If the algorithm instance needs a parent object to be created, the pointer *parentFxns is set to a non-NULL value that points to a valid IALG_Fxns structure, the parent's IALG implementation. 11 could be used, for example, to execute any implementation of the IFIR interface on a set of buffers. The function algFree( ), an example implementation of which is shown in FIG. The algorithm modules would then be linked with a framework that is able to call the functions of the memory interface at the appropriate times with correct parameter values. Poor system performance could be the result if some of your, Refers to which bytes are most significant in multi-byte data types. 26. 5. Other programming rules or guidelines may also be applied such as those described previously herein. The following condition is true immediately after returning from this function. In this embodiment, all algorithms are implemented as modules. Most operating systems and modern computer languages also support, A property of a scheduler that allows one task to asynchronously interrupt the execution of, the currently executing task and switch to another task. 27 is an example digital system that embodies the present invention, this example being a wireless telephone. * in order for an application to use the FIG algorithm. Framework 104 interacts with any real-time peripherals (including other processors in the system) and defines the I/O interfaces for the algorithms 105. Unfortunately, due to limitations of traditional linkers, an identifier must sometimes have external scope even though it is not part of the algorithm API. Table 21 contains a code fragment illustrating the use of RTC_set. extern Void FIR_apply(FIR_Handle fir, Int in, Int out); = = = = = = = = FIR_create = = = = = = = =. 23A. Any application that wants to use the functions provided by implementation 302 in the FIR module must include the header fir.h. Thus, this module does not, have a “process” method, it only implements “activate”, = = = = = = = = FIG_Params = = = = = = = =, Filter group instance creation parameters. static inline FIR_Handle FIR_create(const IFIR_Fxns *fxns. Abstract interfaces define functions that are implemented by more than one module in a system. Thus, like traditional microprocessors, there is very little use of Commercial Off-the-Shelf (COTS) software components for DSPs. extern Int FIG_TI_alloc(const IALG_Params *,IALG_Fxns **, extern Int FIG_TI_free(IALG_Handle, IALG_MemRec *), extern Void FIG_TI_getStatus(IFIG_Handle handle, IFIG_Status, const IALG_MemRec *, IALG_Handle, const IALG Params, * Example use of FIG, FIR and ALG modules. 09/666,629. The code fragment in Table 17 shows an example use of ALG_create. Note that the algorithms conforming to an embodiment of the present invention are modules of a special type, which are referred to as algorithm modules herein. Conversely, the framework can elect to send just the “standard” parameters or an implementation-specific set of parameters. The function rtcBind( ) sets the module's current output log. For any module that implements the IRTC interface, the module instance object is also the trace instance object. In step 2609, client 12606 calls algAlloc( ) to get the actual memory requests and algorithm module 2607 responds with the information requested. In step 806, the algDeactivate( ) function is executed to notify the current algorithm instance that it is about to be deactivated. Moreover, no single algorithm vendor has all the algorithms for all their customers. ), = = = = = = = = FIR_TI_exit = = = = = = = =, = = = = = = = = FIR_TI_init = = = = = = = =, = = = = = = = = FIR_TI_IALG = = = = = = = =, TI's implementation of FIR's IALG interface, = = = = = = = = FIR_TI_IFIR = = = = = = = =, TI's implementation of FIR's IFIR interface, = = = = = = = = FIR_TI_IRTC = = = = = = = =, TI's implementation of FIR's IRTC interface, = = = = = = = = Vendor specific methods = = = = = = = =, The remainder of this file illustrates how a vendor can. The filter group module, FIG, is an example that illustrates how multiple instances of an algorithm can be grouped together to share common coefficients. The sub-classes of IALG define other entry points to algorithmic processing supported by algorithm modules. Given the large number of incompatibilities between these various frameworks and the fact that each framework has enjoyed success in the market, any model for algorithm reuse should ideally make few requirements on existing frameworks. For example, for a vendor “TI”, TI's implementation of the FIR module must only contain external identifiers of the form FIR_TI_. This module must also implement the IALG interface used to construct the ALG_Obj structure. By placing each of these functions in a separate file or output section, a linker can be used to eliminate those methods that are unnecessary for frameworks that do not require run-time object creation. Each vendor has hundreds and sometimes thousands of customers. RTC_create performs a run-time check to insure these two interface implementations are consistent. If the framework wants to use creation parameters other than those provided in the interface, the framework makes a local copy of the default algorithm parameters and modifies the desired fields before creating an instance.