DSPRelated.com
Forums

C6711 Problem (Wrong memory settings?)

Started by tamas_harczos October 16, 2003
Hi there,

I am trying to implement a realtime codec on a C6711. I use HWI_INT9
for an ISR function (driven by MCSP_0_Transmit) to read in and write
out samples simultaneously. I am using a NON-ISR function to process
data already read in. Now, if I add one more line (that actually does
something and is not 'optimized out' by the compiler) to that NON-ISR
function, then the compiled and uploaded program goes to an undefined
state and 'does nothing'. Since that function is not part of the ISR,
it cannot be a 'not enough time for processing' problem. I guess I've
run out of memory.

I don't really understand yet how memory is organized and divided
into parts for use. I am simply using the default Memory Map settings
(generated by GEL->Memory Map->SetMemoryMap).

Any idea how to solve that problem? Thanks in advance,

Tam




Hello Tamas,
 
A couple of things that might help.  When you talk about "memory" in TI DSPland there can be some confusing nomenclature.  Before I cover memory stuff, make sure that you set your compiler settings to generate a '.map' file, it will tell you the memory addresses that the compiler is trying to use.  Now for some 'memory terms' [this information is buried in variuos places in TI docs]:
 
CCS memory map - this is normally created by a GEL file or by using the CCS menu Opion->Memory_Map.  This memory map only tell CCS where the memory is, what type it is, what types of accesses CCS will make to it.  It does not affect program execution, but it does affect what CCS does and shows [breakpoints, display, etc]
 
Linker Command File [*.cmd] - This file is part of your project and tells the linker where you want it to 'put stuff in memory'.  This should reflect your hardware configuration [or at least the hardware that you want the compiler to know about].  This can be very simple, defining only a range of memory that you want the linker to 'use as it sees fit'.  Or it can be extremely fine grained [like one generated by DSP/BIOS] telling the linker where to put every function and buffer.
 
Physical memory [hardware] - this is the memory that is actually available to you.  Some of it is fixed in size [like SDRAM] while some of it may vary in size [like 6711 internal memory] depending on how it is configured [cache size vs. internal RAM size].  You should always understand the answer to this question before you begin programming.
 
I realize that this may be more than you wanted to know, but similar questions come up regularly [and i was on a roll...
 
mikedunn

tamas_harczos <n...@freemail.hu> wrote:
Hi there,

I am trying to implement a realtime codec on a C6711. I use HWI_INT9
for an ISR function (driven by MCSP_0_Transmit) to read in and write
out samples simultaneously. I am using a NON-ISR function to process
data already read in. Now, if I add one more line (that actually does
something and is not 'optimized out' by the compiler) to that NON-ISR
function, then the compiled and uploaded program goes to an undefined
state and 'does nothing'. Since that function is not part of the ISR,
it cannot be a 'not enough time for processing' problem. I guess I've
run out of memory.

I don't really understand yet how memory is organized and divided
into parts for use. I am simply using the default Memory Map settings
(generated by GEL->Memory Map->SetMemoryMap).

Any idea how to solve that problem? Thanks in advance,

Tam

_____________________________________
Note: If you do a simple "reply" with your email client, only the author of this message will receive your answer. You need to do a "reply all" if you want your answer to be distributed to the entire group.

_____________________________________
About this discussion group:

To Join: Send an email to c...@yahoogroups.com

To Post: Send an email to c...@yahoogroups.com

To Leave: Send an email to c...@yahoogroups.com

Archives: http://www.yahoogroups.com/group/c6x

Other Groups: http://www.dsprelated.com