.var _user_tx_buf[6];
.var _user_tx_ready;
.var _user_rx_buf[6];
.var _user_rx_ready;
.ENDSEG;
Note that these variables have a leading underscore to make them C-compatible. If writing in
assembly code, include the following segment within the data variable declaration section in
the same assembly codec file as the DSP code:
.SEGMENT/DM seg_bnk3;
.VAR user_tx_buf[6]; !
.VAR user_tx_ready; ! Codec isr (set up by the kernel)
flags and buffers
.VAR user_rx_buf[6]; !
.VAR user_rx_ready; !
.ENDSEG;
In addition to the variable declaration, the users needs to tell the linker to place these
variables in the specified monitor kernel program locations for the codec in bank 3. This is
done by including the following lines in the Linker Description File:
MEMORY
{
seg_bnk3 { TYPE(DM RAM) START(0x030FFF00)
END(0x030FFFFF) WIDTH(32) }
}
PROCESSOR p0
{
SECTIONS
{
seg_bnk3
{
INPUT_SECTIONS( $OBJECTS(seg_bnk3)
$LIBRARIES(seg_bnk3))
} >seg_bnk3
}
}
This ensures that the linked variables reside as follows:
•
DM(user_tx_buf)
is placed at addresses 0x030FFF00 - 0x030FFF05
•
DM(user_tx_ready)
is placed at address 0x030FFF06
•
DM(user_rx_buf)
is placed at addresses 0x030FFF07 - 0x030FFF0C
•
DM(user_rx_ready)
is placed at address 0x030FFF0D
For examples on how these codec variables are declared and linked together with ADSP-
31
www.BDTIC.com/ADI