Computer Hardware Algorithm Standard User's Guide
Table Of Contents
- Table of Contents
- Preface
- 1 Overview
- 2 General Programming Guidelines
- 3 Algorithm Component Model
- 3.1 Interfaces and Modules
- 3.1.1 External Identifiers
- 3.1.2 Naming Conventions
- 3.1.3 Module Initialization and Finalization
- 3.1.4 Module Instance Objects
- 3.1.5 Design-Time Object Creation
- 3.1.6 Run-Time Object Creation and Deletion
- 3.1.7 Module Configuration
- 3.1.8 Example Module
- 3.1.9 Multiple Interface Support
- 3.1.10 Interface Inheritance
- 3.1.11 Summary
- 3.2 Algorithms
- 3.3 Packaging
- 3.1 Interfaces and Modules
- 4 Algorithm Performance Characterization
- 5 DSP-Specific Guidelines
- 6 Use of the DMA Resource
- 6.1 Overview
- 6.2 Algorithm and Framework
- 6.3 Requirements for the Use of the DMA Resource
- 6.4 Logical Channel
- 6.5 Data Transfer Properties
- 6.6 Data Transfer Synchronization
- 6.7 Abstract Interface
- 6.8 Resource Characterization
- 6.9 Runtime APIs
- 6.10 Strong Ordering of DMA Transfer Requests
- 6.11 Submitting DMA Transfer Requests
- 6.12 Device Independent DMA Optimization Guideline
- 6.13 C6xxx Specific DMA Rules and Guidelines
- 6.14 C55x Specific DMA Rules and Guidelines
- 6.15 Inter-Algorithm Synchronization
- A Rules and Guidelines
- B Core Run-Time APIs
- C Bibliography
- D Glossary
www.ti.com
5.5.3 Program Models
5.5.4 Relocatability
TMS320C55x Rules and Guidelines
Rule 32
All C55x algorithms must access all static and global data as far data; also, the algorithms should be
instantiable in a large memory model.
Only the large memory model is supported for the program memory. So there are no special program
memory requirements for this processor. Just to reemphasize the point, all the program code must be
completely relocatable and must not necessarily require placement in on-chip memory.
Rule 33
C55x algorithms must never assume placement in on-chip program memory; i.e., they must properly
operate with program memory operated in instruction cache mode.
The above rule can be interpreted as to the algorithm code must not have any assumptions on the timing
information to guarantee the functionality.
Some of the C55X devices have a constraint that the data accessed with the B-bus (coefficient
addressing) must come from on-chip memory. The data that is accessed by B-bus can be static-data or
heap-data. All C55x algorithms that access data (static or heap) with the B-bus must adhere to the
following rule.
Rule 34
All C55x algorithms that access data by B-bus must document:
• the instance number of the IALG_MemRec structure that is accessed by the B-bus (heap-data),
and
• the data-section name that is accessed by the B-bus (static-data).
Example 1
Int algAlloc(IALG_Params *algParams,
IALG_Fxns **p,
IALG_MemRec memTab[])
{
EncoderParams *params = (EncoderParams *)algParams;
If (params == NULL) {
params = &ENCODERATTRS;
}
memTab[0].size = sizeof (EncoderObj);
...
memTab[1].size = params->frameDuration * 8 * sizeof(int);
...
memTab[3].size = params->sizeInBytes;
...
return (2);
}
Suppose, in the above example, the memTab[1] and memTab[3] are accessed by the B-bus. Then this
must be documented as per the Rule 34 as follows:
Number of memTab blocks that are accessed by B-bus Block numbers
2 1,3
SPRU352G – June 2005 – Revised February 2007 DSP-Specific Guidelines 53
Submit Documentation Feedback