DSPRelated.com
Forums

MEMORY QUESTION

Started by ahma...@yahoo.com January 9, 2008
Dear Friens,
-1-I defined the vector section to be at 0:ff80 address but my .text section is at 1:8000.After executing the project when I reset cpu it goes to 1:ff80 adderess.(do you know why?) So I changed the vector section addressing to be at 1:ff80; but now the problem rises after running the first line of my vector.asm progarm which is "BD _c_int00", the assembly equivalent of this instruction is "BD 8400h", which shows that the compiler considered 8400h instead of 1:8400 as the address for c_int00. Do you know why (?) and How must I set the reset address. (I compiled the programm with "-g -fr"$(Proj_dir)\Debug" -d"_DEBUG" -mf" options.)

0-for the first time after reset cpu pc points to 1:ff80 but after running some instructions when I reset cpu for second time it goes to 0:ff80. Do you know why?

1-Do you know the advantages and disadvantages of using DSP/Bios? I think DSP/BIOS is a graphical user interface for setting required setting to work with DSP and we can do all DSP/BIOS features without using DSP/BIOS. DSP/BIOS simplifies settings but required more memory and MIPS; isn't it?

2- Which sections and in which space, data or program, must be defined by SECTION{} in .cmd file for a specified project? In other words there are many sections that can be defined like: cinit,vectors,const,bss,cio,stack,sysmem,data,far,sysinit,trace,hst,gblinit,sys clk,args,PMEM$heap,DMEM$heap(PMEM and DMEM are specified in MEMORY{}).
How can I understand which of these section must be defined?

3-Are the names of sections specified and predefined and limited in linker or user can define himself?

4- If the user didn't define a required section for a project in command file(.CMD) does it work properly? Is displayed a warning or error message by CCS?

5-Is the required physical memory sum of used memories in .map file? Or, does the *.hex file ,produced by hex500, indicate the total physical memory required by source code on DSP or it only represent the bootloader part of project? Please describe why the size of *.hex file is very less than its related *.out file, as I saw in a ready code from SPIRIT Co.?

6- When we include a library (such as rts.lib), do all of its fuctions or only its used functions occupy memory?

regards
Check Out Industrys First Single-Chip, Multi-Format, Real-Time HD Video Transcoding Solution for Commercial & Consumer End Equipment: www.ti.com/dm6467

Ahmad-

> -1-I defined the vector section to be at 0:ff80 address but my .text section
> is at 1:8000.After executing the project when I reset cpu it goes to 1:ff80
> adderess.(do you know why?) So I changed the vector section addressing to be
> at 1:ff80; but now the problem rises after running the first line of my
> vector.asm progarm which is "BD _c_int00", the assembly equivalent of this
> instruction is "BD 8400h", which shows that the compiler considered 8400h
> instead of 1:8400 as the address for c_int00. Do you know why (?) and How
> must I set the reset address. (I compiled the programm with "-g
> -fr"$(Proj_dir)\Debug" -d"_DEBUG" -mf" options.)
>
> 0-for the first time after reset cpu pc points to 1:ff80 but after running
> some instructions when I reset cpu for second time it goes to 0:ff80. Do
> you know why?
>
> 1-Do you know the advantages and disadvantages of using DSP/Bios? I think
> DSP/BIOS is a graphical user interface for setting required setting to work
> with DSP and we can do all DSP/BIOS features without using DSP/BIOS.
> DSP/BIOS simplifies settings but required more memory and MIPS; isn't it?
>
> 2- Which sections and in which space, data or program, must be defined by
> SECTION{} in .cmd file for a specified project? In other words there are
> many sections that can be defined like: cinit,vectors,const,bss,cio,stack,
> sysmem,data,far,sysinit,trace,hst,gblinit,sys clk,args,PMEM$heap,
> DMEM$heap(PMEM and DMEM are specified in MEMORY{}).
> How can I understand which of these section must be defined?
>
> 3-Are the names of sections specified and predefined and limited in linker
> or user can define himself?
>
> 4- If the user didn't define a required section for a project in command
> file(.CMD) does it work properly? Is displayed a warning or error message
> by CCS?
>
> 5-Is the required physical memory sum of used memories in .map file? Or,
> does the *.hex file ,produced by hex500, indicate the total physical
> memory required by source code on DSP or it only represent the bootloader
> part of project? Please describe why the size of *.hex file is very less
> than its related *.out file, as I saw in a ready code from SPIRIT Co.?
>
> 6- When we include a library (such as rts.lib), do all of its fuctions or
> only its used functions occupy memory?

A few comments:

1) When doing a CCS "Reset CPU" function, I doubt that all registers are returned to
their power-on Reset state. Probably the XPC register is not reset, so it stays at
value one instead of returning to zero.

2) If this is C54x device and not a C542x device, you should definitely not change
the vector section to be other than 0xff80.

3) DSP/BIOS is a real-time operating system (RTOS). CCS has a GUI to configure
DSP/BIOS, but that's a "convenience" and has nothing to do with the fundamental
purpose of DSP/BIOS. RTOS is a very basic concept that people would expect you to
learn by yourself. Group members are not going to help you with it so you need to
study the TI documents and do some web searching.

4) Yes you can determine entire memory usage from the .map file.

5) hex500 output file is usually smaller because it doesn't contain debug
information. .out files typically contain symbol table, line number table, section
names, and other text info that allows CCS to perform high-level source code debug
functions.

6) CCS includes only "reachable code" in the final .out file. .lib functions that
are not used will not add to the code space.

-Jeff
Check Out Industrys First Single-Chip, Multi-Format, Real-Time HD Video Transcoding Solution for Commercial & Consumer End Equipment: www.ti.com/dm6467

Daryoosh Goal-

> I am very glad to see your reply and know you as an experienced DSP worker.
> I have a project for c54cst, which its source size is more than a whole page size
> (it is near to 140KB). So I must divide it to multi files and map the resulted .obj
> files in separated sections. But there is two questions: First, How can I construe
> that in which memory region and address space I should map each section (each
> .obj)? Is it arbitrary? Consider that the some of same space, .text for example, of
> all .obj files is more than one page.
> Second, my run time memory is restricted to on-chip memory space, so it seems that
> there is more than one memory regions with same run time address. Is it troubling
> problem in this condition? Have we consider any limitation?
>
> I want to implement my melp based codec on C54CST; did you know this chip and did
> you have any recommendation?
>
> Can I Load my program to c54cst on EVM without using emulator (only by UART and AT
> commands)??? If yes what is the procedure steps?
>
> Also I have problem with simulator about external memory. I tried to add external
> memory by changing the .cfg file. But I couldn't. Is it possible to extend memory
> map (external) for simulator only bye changing .cfg and .gel files?

You have to use external memory, with code allocation controlled by the .cmd file.
Below is an excerpt from a C5416 MELPe .cmd file that we were using in 2004. You can
get some ideas from this.

As far as using the C54CST EVM or CCS simulator with C54CST + external memory, I
don't know. The C54CST is basically a C5403 with factory-programmed ROM, so maybe
that gives you a clue to find more info on the Internet.

-Jeff

PS. Please post to the group, not to me.

/*
MELP/MELPe linker command file
Copyright (C) Signalogic, Inc. 1999-2004
*/

MEMORY {

/* low memory */

PAGE 0: RESERVE1: origin = 0000h length = 800h /* C54xx SCI, DSP BIOS,
etc */

PAGE 0: FFTDATA (RW): origin = 800h length = 400h

PAGE 0: FFT (RWX): origin = 0c00h length = 100h

PAGE 0: RESERVE2: origin = 0d00h length = 200h /* scratch */

PAGE 0: ISR (RWX): origin = 0f00h length = 0f0h /* isr_code */

PAGE 0: DMA (RW): origin = 0ff0h length = 10h /* reserved area for DMA
controller */

PAGE 0: DARAM (RWIX): origin = 1000h length = 100h /* talker */
/* .bss section, .stack, .sysmem (heap) */

PAGE 1: DATA0 (RW): origin = 1200h length = 2100h
/* .text (code) */

PAGE 0: CODE (RWX): origin = 3300h length = 4d00h
/* .const, temp_const, bss2, .data, .data_buf */

PAGE 1: DATA1 (RW): origin = 08000h length = 07fe0h
/* far mode extension to code area, use 2nd, 3rd, and 4th 32k sections of
available ext SRAM (C549, C5409), or onchip program memory sections of
C5416. In C549/C5409 case, 1st offchip 32k section is data memory at
0x8000; in C5416 case 0x8000 is onchip data memory */

PAGE 0: EXT0 (RWX): origin = 18000h length = 8000h /* not used */

PAGE 0: EXT1 (RWX): origin = 28000h length = 8000h

PAGE 0: EXT2 (RWX): origin = 38000h length = 8000h
}
SECTIONS {

HI_START 100h: {.h; } PAGE 0
RESET 80h: { } PAGE 0
PCDATA 200h: {. 0h;} PAGE 0
INIT 400h: { } PAGE 0
MEMINI 500h: { } PAGE 0
VARS 42Fh: { } PAGE 0
DPRAM 1000h: {.0h;} PAGE 0

ffttab: > FFT PAGE 0

fftdata: > FFTDATA PAGE 0 /* must align on 0x800 */

isr_code: > ISR PAGE 0

DMAMEM: > DMA PAGE 0

.text: > CODE PAGE 0

twiddles: > DATA1 PAGE 1

bss2: > DATA1 PAGE 1 {

alg_obj\idftreal.obj (.bss)
alg_obj\coeff.obj (.bss)
alg_obj\fs_lib.obj (.bss)
alg_obj\lsf_vq.obj (.bss)

melp_rt.obj (.bss)
}

.bss: > DATA0 PAGE 1 {

_bssBeg = .;
*(.bss)
_bssSize = . - _bssBeg -1;
}

.stack: > DATA0 PAGE 1

.sysmem: > DATA0 PAGE 1, align 2

.const: > DATA1 PAGE 1, align 2

.data: > DATA1 PAGE 1

/* 0x900 data space reserved for audio I/O and sync. serial I/O
buffers; see data_buf.asm for .usect declaration and melp_rt.c
and ss_comm.c for pointer assignments */

.data_buf: > DATA1 PAGE 1, align 2

.cinit: > EXT1 PAGE 0

far_sect: > EXT1 PAGE 0 {

melp_rt.obj (.text)

alg_obj\melp_chn.obj (.text)

alg_obj\fec_code.obj (.text)
alg_obj\melp_sub.obj (.text)

bsp.obj (.text)
sd4_init.obj (.text)
ss_init.obj (.text)
ss_comm.obj (.text)
alg_obj\trnscode.obj (.text)
alg_obj\qnt12a.obj (.text)

alg_obj\sc12_ana.obj (.text)

alg_obj\pitch_vq.obj (.text)
alg_obj\gain_vq.obj (.text)

alg_obj\lsf_vq.obj (.text)
rtc_periph.obj (.text)
}

far_sect2: > EXT2 PAGE 0 {

alg_obj\qnt12_cb.obj (.const)
}
}
Check Out Industry's First Single-Chip, Multi-Format, Real-Time HD Video Transcoding Solution for Commercial & Consumer End Equipment: www.ti.com/dm6467
Daryoosh / Ahmad-

What part of "please post to the group not to me" is not clear? If your supervisor reads this, he/she will be having
a talk with you about learning how to follow instructions.

> It is tedious but please answer questions separately.

Again, please post to the group, not to me. I'm not your personal answer supplier.

-Jeff
> I know that I should post to group not to you directly but Due to attached file I send
> to you now. The attached it the source project for MELPe as you know. I have write a
> main for testing it (test1.c) but it did not work because of my bad cmd file(on
> simulator). Could you please modify my main function (test1.c) and if possible .cmd
> file???????????????
>
> I ordered a EVM but waiting for it I am working by simulator (sim5406).
>
> You did not some questions in previous email like: "Can I Load my program to c54cst
> on EVM without using emulator
> (only by UART and AT commands)??? If yes what is the procedure steps?"
>
> I know it is to some extent ambitious request; but would you please send me the
> whole MELPe project on c5416 or evenc54cst?!
>
> Did you work with 54cst?
>
> It is tedious but please answer questions separately.
>
> sincerely yours
> -Ahmad

Check Out Industry's First Single-Chip, Multi-Format, Real-Time HD Video Transcoding Solution for Commercial & Consumer End Equipment: www.ti.com/dm6467
Daryoosh / Ahmad-

> I am not fluent in english but I think you are stupid, because I told you
> that because of my attached file ( which was
> the source code for melpe and is not public) I sent you the email.
>
> I am sure you are not my supplier but also sure that you are a dupe which
> want to represent yourself by general and
> incomplete responses.

Setting aside your non-professional personal comments...

1) The point of the group is that's its a group. If you can't post your questions and answers for everyone to see,
and to allow others to possibly gain something from reading the exchange, then don't use the group.

2) Nobody asked for your proprietary files. You're using that as an excuse to avoid posting to the group and instead
trying to get individuals to respond to help you.

3) I gave you specific advice -- I told you that you need to use external memory and I included working .cmd file
examples of how to do it. I also told you clearly your chip is a 5403, not a 5406. Part of your problem may be that
you don't have correct simulator settings.

4) I told you I don't know about the C54CST or EVM C54CST. For a question about program boot on the EVM, you can ask
Spirit Corp. They should be able to send you a manual for the EVM.

-Jeff

> Jeff Brower wrote: Daryoosh / Ahmad-
>
> What part of "please post to the group not to me" is not clear? If your supervisor reads this, he/she will be having
> a talk with you about learning how to follow instructions.
>
>> It is tedious but please answer questions separately.
>
> Again, please post to the group, not to me. I'm not your personal answer supplier.
>
> -Jeff
>> I know that I should post to group not to you directly but Due to attached file I send
>> to you now. The attached it the source project for MELPe as you know. I have write a
>> main for testing it (test1.c) but it did not work because of my bad cmd file(on
>> simulator). Could you please modify my main function (test1.c) and if possible .cmd
>> file???????????????
>>
>> I ordered a EVM but waiting for it I am working by simulator (sim5406).
>>
>> You did not some questions in previous email like: "Can I Load my program to c54cst
>> on EVM without using emulator
>> (only by UART and AT commands)??? If yes what is the procedure steps?"
>>
>> I know it is to some extent ambitious request; but would you please send me the
>> whole MELPe project on c5416 or evenc54cst?!
>>
>> Did you work with 54cst?
>>
>> It is tedious but please answer questions separately.
>>
>> sincerely yours
>> -Ahmad

Check Out Industry's First Single-Chip, Multi-Format, Real-Time HD Video Transcoding Solution for Commercial & Consumer End Equipment: www.ti.com/dm6467