There are two types of internal memory on the TI TMS320C549
DSP: SARAM (Single Access RAM) and DARAM (Dual AccessRAM). The first 8K of internal memory is DARAM; the next 24K
is SARAM. The difference between these two types of memory isthat while SARAM can only be read or written once in a cycle,
DARAM can be read or written twice in a cycle. This isrelevant because the TMS320C549 DSP core can access memory up
to three times in each cycle: two accesses in Data RAM to reador write operands, and one access in Program RAM to fetch the
next instruction. Both DARAM and SARAM are divided into"pages"; access to memory located in different "pages" will
never conflict. If, however, two operands are fetched from thesame "page" of SARAM (which is divided into 8K word pages:
2000h
-
3FFFh
,
4000h
-
5FFFFh
, and
6000h
-
7FFFh
) in the same cycle, a
one-cycle stall will occur while the second memory location isaccessed. Due to the pipeline, two memory accesses in the
same instruction execute in different cycles. However, if twosuccessive instructions access the same area of SARAM, a stall
can occur.
Part of the SARAM (from
6000h
to
7FFFh
) is used for storing your program code; a
small amount of SARAM below
6000h
is also used
for storing the DSP's stack. Part of the DARAM (from
0800h
to
0FFFh
) is used for the
input and output buffers and is also unavailable. Ensure thatany code you write does not use any of these reserved sections
of data memory. In addition, the core file reserves sixlocations in scratch-pad RAM (
060h
to
065h
); do not use these locations in your program
code.
Sections and the linker
You can use the
.text
directive to declare
program code, and the
.data
directive to declare
data. However, there are many more sections defined by thelinker control file. Note that the core file uses memory in
some of these sections.
You can place program code in the following sections using the
.sect
directive:
-
.text
: (.sect ".text"
) SARAM between6000h
and7FFFh
(8192 words) -
.etext
: (.sect ".etext"
) External RAM between8000h
andFEFFh
(32,512 words) The test-vector version of the DSP core stores the test vectors in the.etext
section.
-
.data
: (.sect ".data"
) DARAM between1000h
and1FFFh
(4096 words) -
.sdata
: (.sect ".sdata"
) SARAM between2000h
and5EFFh
(16,128 words) -
.ldata
: (.sect ".ldata"
) DARAM between0080h
and07FFh
(1,920 words) -
.scratch
: (.sect ".scratch"
) Scratchpad RAM between0060h
and007Fh
(32 words) -
.edata
: (.sect ".edata"
) External RAM between8000h
andFFFFh
(32,768 words) (Requires special initialization; if you need to use thismemory, load and run the thru6.asm application before you load your application to initialize the EVM properly.)