This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi Everyone,
This is the first time I have developed an application for a TI DSP so please bear with me if I ask really stupid questions.
I am using the eZdsp 28335 Evaluation kit. I am running a sample application and have run into a few things that don't make
sense related to the following memory map included with the "volume" demo/tutorial application:
----------------------------------------------------------------------------------
-stack 400
-heap 400
MEMORY
{
PAGE 0 : PROG(R) : origin = 0x3F8000, length = 0x10000 <----------- Problem 1 and 2
PAGE 0 : RESET(R) : origin = 0x3FFFC0, length = 0x2 <----------- Problem 3
PAGE 0 : VECTORS(R) : origin = 0x3FFFC2, length = 0x3E
PAGE 1 : M0RAM(RW) : origin = 0x000000, length = 0x400
PAGE 1 : M1RAM(RW) : origin = 0x000400, length = 0x400
PAGE 1 : L0L1RAM(RW) : origin = 0x008000, length = 0x2000
PAGE 1 : H0RAM(RW) : origin = 0x3F8000, length = 0x2000
}
SECTIONS
{
/* 22-bit program sections */
.reset : > RESET, PAGE = 0
.vectors : > VECTORS, PAGE = 0
.pinit : > PROG, PAGE = 0
.cinit : > PROG, PAGE = 0
.text : > PROG, PAGE = 0
/* 16-Bit data sections */
.const : > L0L1RAM, PAGE = 1
.bss : > L0L1RAM, PAGE = 1
.stack : > M1RAM, PAGE = 1
.sysmem : > M0RAM, PAGE = 1
.cio : > M0RAM, PAGE = 1
/* 32-bit data sections */
.ebss : > H0RAM, PAGE = 1
.econst : > H0RAM, PAGE = 1
.esysmem : > H0RAM, PAGE = 1
}
-----------------------------------------------------------------------------------------
Here are my questions:
Problem 1 - Orignally this file had 0x3E8000 as the origin of the PROG memory block. I believe that it is
a bug and should actually be 0x3F8000 since that is where L0 SARAM starts. Does this make sense?
This issue is moot based on my next question but I wanted to make sure I was not missing something.
Problem 2 - L0 SARAM Memory at address 0x3F8000 is also mapped to 0x8000. I am assuming I should change
the origin to 0x8000 which will also correct the fact that you can only access 64k contiguously starting
at 0x8000 and not 0x3F8000. As defined in the example, the length is incorrect.
Problem 2 - The 28335 has a bootrom starting at address 0x3FFFC0. That is a read-only portion of memory. Why does the link command
file need to have a reference to it? If I take it out, the linker is trying to place something in that section from vectors.asm.
If I leave it there, the flash programmer gets a data verification error at 0x3FFFC0. I can understand trying to create a reference to something
in read-only memory but why try to set it?
The eZdsp board is configured to boot from SPI (default). Is this correct?
Thanks in advance for any help you can provide!
Victor
Victor,
Sorry that you've had troubles with the example. It does unfortunatly look like the memory map file is incorrect, as you have observed, and out of date for the 2833x device. I'll file a report that these examples need to be corrected.
My suggestion is to start with the examples in the C2833x/2823x C/C++ Header Files and Peripheral Examples download. These examples are more interesting as they use the peripherals on the device and will give you a better start. There is a quickstart guide in the /doc folder of the download.
http://focus.ti.com/docs/toolsw/folders/print/sprc530.html
Regards,
Lori