Welcome to 3L Diamond!
Introduction
Licence
Conventions
Typefaces
Processors
Words, Bytes, and Octets
Links, Ports, and Wires
DMA
Makefiles
Changes from Previous Versions
Attached Processors
Processors
FPGA Processor Types
Wires
Variant Link Types
Link Reset Direction
Diamond FPGA
Custom Proctypes
Installation
Installation Folder
Prerequisites
Code Composer Studio
Available Processor Types
Processor Families
Multiprocessor Modules
FPGA Processor Types
Multi-Processor Systems
Dynamic Libraries
Link Types
Reserved Hardware Resources
Byte Order
Confidence Testing
Development Environments
Support Services
Sample Code
Start Menu
Distribution
Acknowledgements
Getting Started
Abstract Model
The Diamond Model
Processors, Wires, and Links
The Root Processor
The Host Processor
Tasks
Ports & Channels
Input & Output Ports
Virtual & Physical Channels
Multiple Inputs
CPU Tasks
Full & Stand-Alone Tasks
Arguments to main
Threads
FPGA Tasks
Configuring an Application
The Server
Structure of an Application
The Microkernel
Context-switching Performance
Scheduling
Routing Tasks
Stand-alone Applications
Building Diamond applications
Sequential Programs
Compiling
Compiler Option Switches
Calling the Compiler Directly
FAR Data
Using Assembly Language
Linking
Using Linker Command Files
Linker Options
Calling the Linker Directly
Libraries
IDE Libraries
Locating Files
Configuring
The Configuration File
Calling the Configurer
Using the IDE
Running
Running from a Command Prompt
Running from the IDE
Command-line Arguments
Parallel Programs
One User Task
Configuration
Building the Application
More than One User Task
Configuring for More than One Task
Declaring Tasks
Making Connections between Tasks
Assigning Tasks to Processors
Inter-Task Communication
Building a Multi-Task Application
Shutting Down Cleanly
Scheduling
Multiprocessor Applications
Configuring Multi-Processor Applications
Links and Channels
Virtual Channels
Physical Channels
Physical Channel Restrictions
WIRE Usage by Virtual Channels
Error Detection on Virtual Channels
Multiple Inputs
Multi-Threaded Tasks
Creating Threads
Waiting for Threads to Finish
Access to Shared Data
Synchronisation Using Semaphores
Synchronisation Using Channels
Threads and Standard I/O
Synchronizing Server References
Threads versus Tasks
General Reference
The Configurer
Invoking the Configurer
Options
Errors
General Concepts
Processor Types
Memory Use
Logical Memory Areas
Physical memory Areas
Memory Allocation
DATA attribute
Separate Stack and Heap
The OPT Attribute
Explicit Placement of Logical Areas
Logical Area Sizes
Restrictions on Network Configuration
Restrictions on Physical Channels
Configuration Language
Standard Syntactic Metalanguage
Low-level Syntax
Identifiers
String Constants
Numeric Constants
Statements
PROCESSOR statement
TYPE attribute
ATTACH attribute
CACHE attribute
UNCACHED attribute
ROOT attribute
CLOCK attribute
KERNEL attribute
BOOT attribute
AVOID attribute
BUFFERS attribute
L1D attribute
L1P attribute
Heap attribute
WIRE statement
NOBOOT attribute
TASK statement
Port specifiers
INS attribute
OUTS attribute
FILE attribute
Logical Area Attributes
OPT attribute
PRIORITY attribute
URGENT attribute
CONNECT statement
Connection Type attribute
SHORT attribute
PLACE statement
PROCTYPE statement
MAP attribute
MEM attribute
CLEARMEM attribute
BIND statement
DEFAULT statement
UPR statement
OPTION statement
The Server
Starting the Server
Selecting your Board
Selecting an Application
Running the Application
Stopping the Application
Page Mode
Pausing Output
Clearing the Screen
Input
Options
View/Options/General Tab
View/Options/Standard I/O Tab
View/Options/Monitoring Tab
View/Options/Advanced Tab
Shortcut Keys
Help Information
Server Version
Advanced Server Features
Error Messages
Board Properties
Asynchronous Input
Reconnecting the Server
Explicitly Resetting the Network
Internal Details
Loading Applications
Server Structure
Cluster Drivers
Locating Clusters
Cluster Operation
Presentation-layer Drivers
Link-interface Drivers
Extending the Server
Building Your Own Cluster
Accessing Your Cluster from a CPU
The Core Interface (C)
Writing a Board Interface
Replacing the Server GUI
The Communication Object
Replacing the Server
3L Command
Command Syntax
Functions
Targets
Adding Your Own Commands
Command File
Function Name
Operations
Macros
Example
Diamond Libraries
Macros
Format of Synopses
Notes
Headers
Alt Package <alt.h>
Channels <chan.h>
Character Handling <ctype.h>
Common Definitions <stddef.h>
Date and Time <time.h>
Diagnostics <assert.h>
Errors <errno.h>
Events <event.h>
General Utilities <stdlib.h>
String Conversion Functions
Pseudo-Random Sequence Generation Functions
Memory Management Functions
Communication with the Environment
Searching and Sorting Utilities
Integer Arithmetic Functions
Multibyte Character Functions
Multibyte String Functions
Input/Output <stdio.h>
Stream I/O
Text and Binary
Standard Streams
Operations on Complete Files
File Access Functions
Formatted Input/Output Functions
Character Input/Output Functions
Direct Input/Output Functions
File Positioning Functions
Error Handling Functions
Macros
Internal Timer <timer.h>
Limits <float.h> and <limits.h>
Links <link.h>
Localisation <locale.h>
Mathematics <math.h>
Treatment of Error Conditions
Trigonometric Functions
Hyperbolic Functions
Exponential and Logarithmic Functions
Power Functions
Nearest Integer, Absolute Value and Remainder Functions
Nonlocal Jumps <setjmp.h>
Semaphores <sema.h>
Signal Handling <signal.h>
String Handling <string.h>
Copying Functions
Concatenation Functions
Comparison Functions
Search Functions
Miscellaneous Functions
Synchronising Access to the Server <par.h>
Threads <thread.h>
Thread return codes <errcode.h>
Variable Arguments <stdarg.h>
Library Index
A
B
C
chan...
D
E
F
G
H
I
is...
L
M
N
O
P
par...
Q
R
S
str...
T
thread...
U
V
W
_
Diamond FPGA
FPGA Channels
Timing Example
Task Interface
FCD File
Timing Constraints
Task Clock
Task Ports
Conventions
Package File
External Pins
A Design Example
Firmware Domponent Description
Package file
Implementation
Clock domains
Synchronization Between Clock Domains
Syntax
Examples
Using Clock Domains
Implementation of Clock Domains
Designing FPGA Tasks
System Generator
Required Signals
Channels
Driving Pins
Creating the Task
Importing the Task into the IDE
System Generator Configuration
Synthesizing the Task with XST
Verilog
Example
HDL Simulation
Simulating a Task
Simulating a Stand-alone FPGA
Simulating an FPGA Attached to a DSP
Advanced FPGA Features
Loading Via an FPGA
HDL Code Structure
Timing Constraints Syntax
Analysing the Results of the Compilation
Compilation Options
Global Bus
Special Logic
SMT363XC2 Net50+ Chip
TI C6x EMIF Interface
FPGA Pinout Information
Advanced Diamond Features
Kernel Modules
Interrupt Handling
External Interrupts
Interrupt Processing Flow
High-level Interrupt Handlers
Communicating with the Kernel
Enabling and Disabling Global Interrupts
Low-level Interrupt Handlers
Handler structure
Attaching a low-level handler
Taking interrupts
Low-level handler context
Accessing the kernel
Example of a Handler
EDMA
EDMA Channel Availability
EDMA events used by Diamond
SC6xEDMA Functions
SC6xEDMAChannel Functions
EDMA3
EDMA_REG
EDMA Functions
QDMA
Principles of Operation
Using QDMA
QDMA Interface
QDMA Channel
QDMA Transfers
Accessing QDMA Registers
Releasing QDMA Resources
QDMA Functions
A QDMA Example
IDE
The Workspace
The Welcome Screen
Basic Operation
The Workbench
Diamond Buttons
A Simple Application
Creating Tasks
Stack and Heap
Building and Running
Clean
Libraries
Dependencies
Projects and Archives
Processors
Adding Processors
Defining Root
Attached Processors
Order of Attachment
DSP Options
FPGA Options
Tasks
Placing Tasks
Building Tasks
Task Properties
DSP Task Options
FPGA Task Options
Channels
Naming Ports
Connecting Ports
Running the Example
Wires
Objects
Technologies
Importing and Exporting
Importing a Project
Exporting to MAKEFILE
Preferences
Examples
Example-1
Example-2
Example-3
Example-3b
Example: Addone
Example: Correlator
Example: SDR8036
Example: SDR8246
Diamond TCP/IP Stack
TCP Examples
Example: Simple Client
Example: Simple Server
Example: Bandwidth Test Server
Example: Bandwidth Test Client
UDP Examples
Example: Simple Receive
Example: Simple Send
Example: Bandwidth Test Recv
Example: Bandwidth Test Send
Advanced Examples
Example-4
Example-6
Example-7
Example-8
Example: Interrupt-1
Example: Interrupt-1b
Example: Interrupt-2
Example: Interrupt-2b
Example: Interrupt-3
Example: Interrupt-3b
Sundance Features
Sundance TIMs
Link Devices
Comport Links
SDB Links
RSL Links
SRIO Links
Localization on the Board
SMT148FX
SMT338VP
SMT351T
SMT362
SMT365E
SMT368A
SMT368, SMT368-12
Link Connection Restrictions
Performance
Connecting Channels to Links
Application Loading
Loading from the Host
Load Checking
Loading from ROM
ROM
Board Services
Accessing the Board Services Interface
Mailboxes
Carrier-board SRAM
The High Speed Channels
Use of Mailboxes
SRAM
DSP Function Codes
Host Replies
Protocol
DSP Functions
Example
The Global Bus
Accessing PCI Registers
Packaged Services
Status Codes
APP2COFF
Constraints
Using APP2COFF
Loading the Application
App2Coff Error Messages
TCP/IP
Ethernet Connection
Memory Use
Initialization
Berkeley sockets API
Helper Functions and Macros
Examples
Basic Examples
Bandwidth Tests
General
Default Clock Domains
FPGA Framework Resources
SMT362
SMT338-VP
Xilinx Options for RSLs
Special Logic
Register Block
Global Bus
EMAC SMT362
SATA_DSP387G
Debugging DSPs
Debugging with Code Composer
Notes
Troubleshooting
My application does not run
Compilation, Linking, Configuration
compiler cannot be found
compiler cannot find header files
configurer refuses to build application
relocation errors
wrong version of software executed
Complete Failure at Run Time
application hangs or runs wild
application will not load or start
communication with host disrupted
processor locks up
server hangs or runs wild
ANSI Functions
data in file seem to be corrupt
EDOM set in errno
end of file corrupt or absent
ERANGE set in errno
file position is wrong
I/O behaves unexpectedly
NULL returned when allocating memory
output does not appear or is corrupt
time function returns wrong time
variable corrupt
Parallel and Other Functions
channel transfer fails
link functions do not work
thread cannot see changes to shared data
thread hangs
thread_new does not return
thread_new returns NULL
<timer.h> functions do not work
variable corrupt
Glossary

© 2009 3L Ltd