Datum: 29.10.2008 14:09
Moin, Ich arbeite jetzt seit ein paar Wochen mit dem TMS320F2808 und den JTAG-Adapter von Olimex. Das Programm wird immer größer und es kommt wohl das Problem auf, dass ich zu wenig RAM habe um beim Debuggen das Programm zu speichern.
>> error: can't allocate IQmath, size 00000099 (page 0) in PRAMH0 (avail:
00000070)
|
Ich habe schon etwas DRAM0 Speicher für PRAM0 benutzt... aber auch da werde ich schnell an die grenze kommen. Bisheriger Stand:
PRAMH0 : origin = 0x3FA000, length = 0x001000 DRAMH0 : origin = 0x3FB000, length = 0x001000 |
Laut Memory Map geht der Speicher bei 0x3F8000 los - warum schlägt das Programm-Laden fehl, wenn ich folgendes mache:
PRAMH0 : origin = 0x3F8000, length = 0x003000 DRAMH0 : origin = 0x3FB000, length = 0x001000 |
Hat jemand eine andere Lösung, um an mehr Speicher zu kommen? MfG Alex
Datum: 29.10.2008 15:32
Sieh dir mal das *.map-File an - dort sind ein paar Infos zur Speicherbelegung zu finden. Vielleicht hilft dir das. Ansonsten musst du hier mehr Infos rausrücken.
Datum: 29.10.2008 17:26
Hi Micha, Die Map hilft mir momentan nicht wirklich - da steht ja nur welche Teile vom Compiler/Linker/... an welche Position gekommen sind. Welche Infos brauchst du denn um mir weiterhelfen zu können? MfG Alex
Datum: 30.10.2008 06:54
Alex wrote: > Moin, > Ich arbeite jetzt seit ein paar Wochen mit dem TMS320F2808 und den > JTAG-Adapter von Olimex. Hi! Ist es schon der USB Adapter? Würde gerne wissen wie gut die USB Lösung von Olimex ist.
Datum: 30.10.2008 11:30
Tach auch !!! > Die Map hilft mir momentan nicht wirklich - da steht ja nur welche Teile > vom Compiler/Linker/... an welche Position gekommen sind. Im ersten Teil der Memory-Map steht aber schon, von welchem Block wieviel Speicher verbraten wurde. Entsprechend kann man das "Linker-Command-File" anpassen. Es gibt neben den Sektionen "L0", "L1" "H0" auch noch die Bereiche "M0" und "M1". Verwendest Du die? Wie sieht denn Dein "Linker-Command-File" aus? Gruss Jan
Datum: 30.10.2008 12:28
Moin, @ Tim R.: es ist der Parallel @all Ich benutze eine leicht veränderte CMD File die bei irgendeinem Sample-Projekt dabei war. M0 und M1 benutze ich meines Wissens noch nicht, aber da schaue ich gleich mal nach. CMD:
MEMORY
{
PAGE 0 :
/* For this example, H0 is split between PAGE 0 and PAGE 1 */
/* BEGIN is used for the "boot to SARAM" bootloader mode */
BEGIN : origin = 0x000000, length = 0x000002
RAMM0 : origin = 0x000002, length = 0x0003FE
RAML0 : origin = 0x008000, length = 0x001000
/* PRAMH0 : origin = 0x3FA000, length = 0x001000 */
PRAMH0 : origin = 0x3FA000, length = 0x001200
RESET : origin = 0x3FFFC0, length = 0x000002
BOOTROM : origin = 0x3FF000, length = 0x000FC0
PAGE 1 :
/* For this example, H0 is split between PAGE 0 and PAGE 1 */
BOOT_RSVD : origin = 0x000400, length = 0x000080 /* Part of M1, BOOT rom will use this for stack */
RAMM1 : origin = 0x000480, length = 0x000380 /* on-chip RAM block M1 */
// DRAMH0 : origin = 0x3FB200, length = 0x000800
DRAMH0 : origin = 0x3FB000, length = 0x001000
}
SECTIONS
{
/* Setup for "boot to SARAM" mode:
The codestart section (found in DSP28_CodeStartBranch.asm)
re-directs execution to the start of user code. */
codestart : > BEGIN, PAGE = 0
ramfuncs : > RAMM0 PAGE = 0
.text : > PRAMH0, PAGE = 0
.cinit : > RAMM0, PAGE = 0
.pinit : > RAMM0, PAGE = 0
.switch : > RAMM0, PAGE = 0
.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */
.stack : > RAMM1, PAGE = 1
.ebss : > DRAMH0, PAGE = 1
.econst : > DRAMH0, PAGE = 1
.esysmem : > RAMM1, PAGE = 1
IQmath : > PRAMH0, PAGE = 0
IQmathTables : > BOOTROM, type = NOLOAD, PAGE = 0
}
|
MAP:
PAGE 0: BEGIN 00000000 00000002 00000002 RWIX
RAMM0 00000002 000003fe 0000017a RWIX
RAML0 00008000 00001000 00000000 RWIX
PRAMH0 003fa000 00001200 00001092 RWIX
BOOTROM 003ff000 00000fc0 00000b50 RWIX
RESET 003fffc0 00000002 00000000 RWIX
PAGE 1: BOOT_RSVD 00000400 00000080 00000000 RWIX
RAMM1 00000480 00000380 00000200 RWIX
DEV_EMU 00000880 00000180 000000d0 RWIX
FLASH_REGS 00000a80 00000060 00000008 RWIX
CSM 00000ae0 00000010 00000010 RWIX
ADC_MIRROR 00000b00 00000010 00000010 RWIX
CPU_TIMER0 00000c00 00000008 00000008 RWIX
CPU_TIMER1 00000c08 00000008 00000008 RWIX
CPU_TIMER2 00000c10 00000008 00000008 RWIX
PIE_CTRL 00000ce0 00000020 0000001a RWIX
PIE_VECT 00000d00 00000100 00000100 RWIX
ECANA 00006000 00000040 00000034 RWIX
ECANA_LAM 00006040 00000040 00000040 RWIX
ECANA_MOTS 00006080 00000040 00000040 RWIX
ECANA_MOTO 000060c0 00000040 00000040 RWIX
ECANA_MBOX 00006100 00000100 00000100 RWIX
ECANB 00006200 00000040 00000034 RWIX
ECANB_LAM 00006240 00000040 00000040 RWIX
ECANB_MOTS 00006280 00000040 00000040 RWIX
ECANB_MOTO 000062c0 00000040 00000040 RWIX
ECANB_MBOX 00006300 00000100 00000100 RWIX
EPWM1 00006800 00000022 00000022 RWIX
EPWM2 00006840 00000022 00000022 RWIX
EPWM3 00006880 00000022 00000022 RWIX
EPWM4 000068c0 00000022 00000022 RWIX
EPWM5 00006900 00000022 00000022 RWIX
EPWM6 00006940 00000022 00000022 RWIX
ECAP1 00006a00 00000020 00000020 RWIX
ECAP2 00006a20 00000020 00000020 RWIX
ECAP3 00006a40 00000020 00000020 RWIX
ECAP4 00006a60 00000020 00000020 RWIX
EQEP1 00006b00 00000040 00000040 RWIX
EQEP2 00006b40 00000040 00000040 RWIX
GPIOCTRL 00006f80 00000040 00000040 RWIX
GPIODAT 00006fc0 00000020 00000020 RWIX
GPIOINT 00006fe0 00000020 0000000a RWIX
SYSTEM 00007010 00000020 00000020 RWIX
SPIA 00007040 00000010 00000010 RWIX
SCIA 00007050 00000010 00000010 RWIX
XINTRUPT 00007070 00000010 00000010 RWIX
ADC 00007100 00000020 0000001e RWIX
SPIB 00007740 00000010 00000010 RWIX
SCIB 00007750 00000010 00000010 RWIX
SPIC 00007760 00000010 00000010 RWIX
SPID 00007780 00000010 00000010 RWIX
I2CA 00007900 00000040 00000022 RWIX
CSM_PWL 003f7ff8 00000008 00000008 RWIX
DRAMH0 003fb200 00000800 00000704 RWIX
|
MfG Alex
Datum: 31.10.2008 08:43
Du kannst mal das *.cmd-File von hier http://focus.ti.com/general/docs/techdocsabstract.... nehmen und modifizieren. Vielleicht hilft dir das weiter. Das erleichtert dir später auch das Speichern ins Flash, weil du dann einfach das andere *.cmd-File nehmen kannst.
Datum: 31.10.2008 09:02
Also mir fällt da folgendes auf: 1.) Warum sind die Speicherbereiche mal mit Adressen vom unteren und mal vom oberen Bereich angelegt (verwirrt doch nur)? Den RAM-Speicher gibt's nämlich nur einmal. Er hat nur aus Kompatibilätsgründen mit der 24xx-Reihe zwei Zugriffsadressen gekriegt (ich verwende eigentlich immer die unteren Adressen). 2.) Es macht eigentlich keinen Sinn so viele verschiedene Speicherbereiche anzulegen. So legst Du z.B. einen Bereich "RAML0" an (1000h = 4096dez), den Du überhaupt nicht verwendest. Dir scheint der Mechanismus nicht ganz klar zu sein: Erst werden die Speicherbereiche festgelegt (entsprechend der DSP-Memory-Map) dann werden die Sektionen den verschiedenen Speicherbereichen zugewiesen (hierzu gibt's diverse TI-AN). 3.) Meines Wissens funktioniert "//" beim Linker-Commend-File nicht zum Auskommentieren. Man muss "/* ... */" verwenden. Auf die Schnelle sollten Dir folgenden Änderungen weiterhelfen: PAGE 0 : /* RAML0 : origin = 0x008000, length = 0x001000 */ PRAMH0 : origin = 0x00A000, length = 0x002000 PAGE 1 : /* // DRAMH0 : origin = 0x3FB200, length = 0x000800 */ /* DRAMH0 : origin = 0x3FB000, length = 0x001000 */ DRAMH0 : origin = 0x008000, length = 0x001000 Gruss Jan
Datum: 01.11.2008 20:00
Moin, @Micha: Das muss ich mir erst genauer ansehen... auf den ersten Blick habe ich da nur Flash Sachen gesehen. @Jan: Das hilft mir wirklich schonmal weiter :-). Wie gesagt... ich hatte die Datei bisher von eiem Example Projekt kopiert und mir keine Gedanken darüber gemacht. Mit 8kB Speicher sollte ich erstmal eine Weile hinkommen :-). Vielen Dank an Alle :-) MfG Alex
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel


