1 Table of Contents ........................................................................................................................... 2
List of abbreviations................................................................................................................................. 5
2 List of figures................................................................................................................................... 5
The SMT6025 SDK provides you with an easy and efficient way to access
Sundance carrier boards. It allows you to control these boards from the host as
well as to exchange data between the carrier board and the host. The
SMT6025 is ideal for customers that wish to develop their own code to interface
with Sundance hardware.
Your application
SMT6025 SDK
Comport
Status
Sundance carrier board
PCI
State control
Figure 1 - The SMT6025 interfaces to Sundance hardware
Figure 1 - shows the SMT6025 forming the link between your application and the
Sundance carrier boards in your system. Having a standard interface such as
the SMT6025 ensures that you do not need to recompile and link your software
when the hardware in the system changes. The SMT6025 hides the details of
the device driver, allowing you to concentrate on the development process.
The SMT6025:
• Provides the host side support for 3L Diamond board services.
• Shorten development time by providing you with a ready-to-use interface to
the hardware.
• Transfer data between the carrier board and the host.
• Gives you a basic building block for more complex systems.
• Provides you with direct access to the hardware registers of the carrier board.
• Provides you with a C++ type interface to the carrier board.
The SMT6025 currently supports the following carrier boards.
Carrier board Description Functionality
SMT300 1 TIM site Compact PCI carrier board Full support
SMT300Q 4 TIM site Compact PCI carrier board Full support
SMT310 1 TIM site PCI carrier board Full support
SMT310Q 4 TIM site PCI carrier board Full support
SMT320 (Obsolete) 4 TIM site PCI carrier board Partial support
SMT327 (Obsolete) 4 TIM site Compact PCI carrier board Partial support
4 Conventions
UINT A 32 bit unsigned value (unsigned int).
DWORD 32 bit unsigned value (unsigned long).
Root TIM The TIM on site 1 of your carrier board.
Root DSP The DSP on TIM site 1.
5 Prerequisites
C++ is used for the software interfaces. Even if you are not familiar with C++, you
should be able to find your way by referring to the samples. The samples have
been compiled and tested with Microsoft Visual Studio Version 6.0.
6 Software Installation and Setup
Insert the SMT6025 CD into your CD drive. The setup program should start
automatically; if it doesn’t you can start it yourself by opening Explorer, browsing
to the CD, and then double-clicking Setup.exe. The installation program will give
you the option of installing samples. We recommend that you become familiar
with the SMT6025 by installing and reviewing the sample code.
The default directory is “C:\Program Files\Sundance\SMT6025”. Installation
should give you the directory structure shown below.
Figure 2 - Directory structure after installing the SMT6025
Applications need access to smtdrv.h and smtdrv.lib. You need to arrange that
these files can be found during compilation and linking. We strongly recommend
that you do not make copies of these files, but access them from the installation
directory as follows:
6.1 Configuring Visual Studio
The installation process configures the examples to compile and link correctly
without any user intervention. However, for your own applications, you need to
configure visual studio to add the paths to the include and lib directories to your
compiler options.
You do this as follows:
• Open Visual studio.
• Select "Tools->Options" from the menu.
• Select the “Directories” tab.
• Select “Include files” from the "Show directories for" drop down list.
• Add the path to the include directory for the SMT6025 installation to the
You need to be aware of the assumptions the SMT6025 makes about hardware
resources. This section provides a basic overview of the main hardware features
and shows how the SMT6025 interacts with them. The carrier board’s User
Manual contains a more detailed description of the hardware.
CPLD (BAR 1)
Comport
IntD
PCI Bridge (BAR 0)
Comport
IntA
PCI
LINT (IIOF2)
Comport
IIOF1
IIOF2
IIOF0
Reset
The Bridge chip forms the link between the host and the DSP.
The mailbox registers are contained in the bridge chip.
TIM site 1
(Boot loader
supports
loading binary
files from
comport)
TIM site
2
TIM site
3
TIM site
4
Figure 5 - Overview of the hardware.
The figure above illustrates the main hardware concepts of a typical Sundance
carrier board.
8.1 Comport
A comport is a general mechanism for transferring data between components of
your system. Most TIM modules have several comports that can connect to
other TIMs or the host. These connections are usually made with FMS cables,
but some boards have built-in connections that can be controlled by carrier
board registers; the User Manual for your board will describe these registers in
detail. The standard board configuration will connect comport 3 on TIM site 1 to
the host.
8.2 The CPLD
The CPLD is used to configure the carrier board. It allows you to select the
direction of signals on the carrier board, select interrupt sources and set the
routing of the IIOF lines. The CPLD registers are mapped in BAR1 of the PCI
bridge chip. The carrier board’s User Manual gives more information about the
CPLD.
8.3 State of the IIOF lines
The LINT (local interrupt) line on the global bus side of the PCI bridge chip can
be switched to any of the IIOF lines that go to the DSP.
The initial configurations of the IIOF lines are as follows:
Line Use or direction
IIOF0 Host to DSP
IIOF1 DSP to Host
IIOF2 Used internally by the SMT6025 to signal mailbox interrupts
to the DSP.
Table 1 - Initial state of the IIOF lines when the SMT6025 starts up.
8.4 The PCI bridge chip
The bridge chip forms the link between the host and the carrier board. It
connects the local bus on the carrier board with the PCI bus of the host and
provides apertures that allow the local bus access to the PCI bus. These
apertures act like windows through which the local bus can access data on the
PCI bus.
The internal PCI bridge registers are mapped in BAR0, allowing access by both
the local bus (DSP side) and the PCI bus (host side). Contained in the bridge
chip are the 16 x 8-bit mailbox registers (Section 14).
The bridge chip provides a local bus interrupt line (LINT) as well as a PCI bus
interrupt line (IntA). These interrupt lines allow both the host and the DSP to
interrupt each other.
More information about the bridge chip can be found at
The design makes use of a C++ style interface pointer to the hardware.
SmtDrv.dll exports functions that gather information about the installed boards
and provide an interface pointer for later use.
To use the SMT6025, you need to:
• Obtain an interface pointer to the hardware by calling SmtOpenBoard().
• Use the interface pointer to call functions related to the hardware.
Example:
IFHw *pBoard = SmtOpenBoard(0); // open the first board found
pBoard->ResetTIMs();
pBoard->BinaryLoad("MyFile.app");
10 Functions exported by SmtDrv.dll
This section describes each of the functions exported by SmtDrv.dll. These
functions are described in the header file SmtDrv.h.
10.1 SmtOpen
Initialise the SMT6025 library. Applications must call this function before using
any other features of the library.
Prototype
SMTRet SmtOpen( void );
Return value
The function returns SMT_OK on successful completion; other return values
indicate failure. SmtGetError() can be used to translate error values into
descriptive strings.
10.2 SmtGetBoardCount
Return the number of Sundance carrier boards found in the system.
Prototype
Return value
DWORD SmtGetBoardCount(void);
The number of Sundance carrier boards found in the system.
nIndex The zero based index of the carrier board. nIndex should
be in the range 0 <= nIndex < GetBoardCount().
Return value
The return value is an interface of type IFHw that can be used to access the
carrier board. Refer to section 11 for a description of the functions provided
by this interface. NULL (0) is returned on error.
10.4 SmtCloseBoard
Close an interface to a board. You should not use the interface pointer any
more after calling SmtCloseBoard().
Prototype
void SmtCloseBoard( UINT nBoard );
Parameters
nBoard The index of the board that should be closed. nIndex
should be in the range 0 <= nIndex < GetBoardCount().
10.5 SmtGetBoardIndex
Find the zero based index for the board at the specified base address.
Prototype
INT SmtGetBoardIndex( UINT nBaseAddress );
Parameters
nBaseAddress The board base address. The base address is the PCI
address that the host operating system has assigned to
the carrier board.
Return value
The zero based index of the board at base address nBaseAddress.
Return information about a carrier board. For a description of the information
returned see the remarks.
Prototype
SMTRet SmtGetBoardInfo( UINT nIndex, SMTBI& info );
Parameters
nIndex The zero based index of the board.
info The structure that is to be filled in with the board
information.
Return value
The function returns SMT_OK on successful completion; other return values
indicate failure. SmtGetError() can be used to translate error values into
descriptive strings.
Remarks
The information is returned in the SMTBI structure described below: