Hallo,
jetzt habe ich ein ähnliches Problem, ich habe aber bereits eine
Vermutung, dennoch möchte ich Euch zu Eurer Meinung fragen:
Fehlermeldung lautet:
error: can't allocate .cinit (sz: 000004ea page: 0) in HOSARAM
(avail:
is not in the project "C:\xyz\xyz.pjt"
Diese Fehlermeldung erscheint im Output - Fenster beim Linken, genauer
gesagt nach der Meldung:
[Linking...] "C:\Programme\TI\c2000\cgtools\bin\cl2000"
-@"Debug.lkf"
<Linking>
Dieser Fehler tritt nur auf, wenn ich eine .h Datei einbinden will,
also
#include "xyz.h".
Wenn ich diese eine .h Datei einbinde, und dafür eine andere aus dem
Projekt rausschmeisse, geht alles glatt. Es liegt also nicht an der
Datei selbst. Sie ist auch im Projektordner. Ich vermute, daß das
Projekt zu groß ist. Falls ich eine der beiden .h Dateien weg lasse und
erfolgreich compiliere, hat das /Debug-Verzeichnis 183KB. Die
(uncompilierte) Datei, die ich einfügen möchte, hat 255Byte.
Oder ist es ein ganz anderer Fehler?
Gruß, Martin
P.S.: Code Composer, mit TMS320F2812-Board, wie gehabt :)
nein, ist nicht selbst aufgesetzt. Ist das Beispielprogramm "Volume2",
welches ich modifiziert habe. An der Linkerdatei habe ich aber (noch)
nichts gemacht. Muß ich das denn?
Hallo Martin,
Deine Vermutung ist richtig. Ich vermute, dass Du aus dem RAM heraus
debugst und nicht jedes mal den DSP flasht? Das Projekt ist zu groß und
passt nicht mehr in den Teil des RAM, in den der Linker es legen will.
Du musst also das Linkerfile anpassen und Teile in andere Bereiche des
RAM mappen.
Gruß Andreas
@hebel23
Kannst Du mir grob schildern, wie das geht? Bzw. wo ich darüber was
herausfinden kann?
@Michael
Ich habe das Beispielprogramm gerade nicht hier, ich werde es aber
hochladen. Meinst Du das Originalprogramm oder das von mir modifizierte
(Ist etwas umfangreich!)?
Gruß, Martin
Hi!
Also die Linkadressen stehen im *.cmd - File (bei Dir wahrscheinlich
F2812.cmd).
Wenn Du da mal reinschau´st, findest Du MEMORY und SECTIONS -
Definitionen.
Unter MEMORY werden die Speicherplätze mit Startadresse und Größe
deklariert. Unter SECTIONS werden bestimmte Teile Deines Codes
bestimmten Speicherplätzen zugewiesen.
z.B.:
.text : > FLASHA PAGE = 0
bedeutet, dass Dein kompilierter Code in den unter FLASHA deklarierten
Speicherbereich gemappt wird. Das wäre der Fall, wenn Du das Programm
aus dem Flash starten (und vorher hineinschreiben) willst. Im
Debugmodus läuft aber auch der Programmcode aus dem (internen) RAM
heraus.
In Deinem *.map - File siehst Du anschließend, ob und wo der Linker die
Teile hingemappt hat.
Sieh Dir die Dateien und auch die Memory-Map im Datenblatt mal genauer
an. Das Ganze ist ziemlich kryptisch und erfordert ein bissl Gedult
beim Anpassen an das jeweilige Projekt. Ich hab jetzt leider nicht so
viel Zeit, um genauer darauf einzugehen.
(Heute abend vielleicht...)
Gruß Andreas
Mein Projekt heißt HDR, und deshalb heißt die CMD-Datei auch
HDRcfg.cmd.
Die wurde automatisch erstellt, als ich die HDR.cdb-Datei erstellt und
gespeichert habe.
Zu Beginn steht da ein Kommentar(in HDRcfg.cmd):
/* Do not directly modify this file. It was */
/* generated by the Configuration Tool; any */
/* changes risk being overwritten. */
Nachdem ich mich damit abgefunden habe, daß ich das Programm in den
Flash laden und von dort starten muß, habe ich mal mit der Recherche
begonnen. Ich habe mit die Memory Map angeschaut und auch die
*.map-Datei. Dort fand ich folgendes:
MEMORY CONFIGURATION
name origin length used attr
---------------------- -------- --------- -------- ----
PAGE 0: OTP 003d7800 00000400 00000000 RWIX
FLASH 003d8000 0001fff6 00000000 RWIX
H0SARAM 003f8000 00002000 00001b46 RWIX
BOOTROM 003ff000 00000fc0 00000000 RWIX
PAGE 1: M0SARAM 00000000 00000800 00000480 RWIX
PIEVECT 00000d00 00000100 00000100 RWIX
L0SARAM 00008000 00002000 00001adf RWIX
Ich bin mir nicht 100%ig sicher, aber es scheint mit tatsächlich so,
daß beim H0SARAM von 00002000 nun 00001b46 voll sind. Flash ist noch
völlig unbenutzt.
Nun zu meiner Frage: Wie kann ich das Programm in den Flash laden und
von dort starten (im Kommentar in der Datei HDRcfg.cmd steht ja, ich
soll diese Datei NICHT ändern). Geht das denn im Code Composer unter
DSP/BIOS Config -> HDR.cdb unter "System" -> "MEM Memory Section
Manager"? Wenn ich bei diesem "MEM Memory Section Manager"
"Properties" auswähle, kann ich sehr viel einstellen. Ich weiß aber
weder, was ich da genau tue, noch, worüber ich darüber Infos finden
könnte. Die Code Composer Studio Help gibt nicht viel her.
Muß ich auch noch einen Jumper umstecken?
Ich hoffe, ich konnte mein Problem gut schildern!
Grüße, Martin
@Michael
Hier ist das Beispielprogramm von TI. Wird in den Tutorials unter
"Developing a Simple Program" genauer erklärt.
Allerdings muß ich dazu sagen, daß ich nun selbst ein neues Projekt
erstellt habe und meine Quelldateien darin eingefügt habe - mit dem
gleichen Ergebnis. Die Fehlermeldung ist also nicht von diesem Beispiel
abhängig.
Gruß, Martin
Hallo Martin,
also ich hab hier die Version 2.12 aber bei Integrated Enviroment steht
2.10 (statt bei Dir 2.20).
Auf jeden Fall gibt es bei mir kein DSP/Bios Config - Menü und auch
kein File mit der Endung *.cdb .
Ich hab die Einstellungen im *.cmd-File daher immer per Hand gemacht.
Wenn Du das Programm aus dem Flash laufen lassen willst, musst Du den
Jumper 7 auf 2-3 (boot from flash) stellen.
Lässt sich Dein DSP schon aus CCS flashen oder musst Du auch über den
Umweg Sd-Flash gehen?
Andreas
Hallo,
ich weiß nicht genau wie das geht, das war je meine Frage. Ich kann in
diesem Config-Menü irgendwie einen Speicherbereich einstellen, habe
aber auch noch dieses Sd-Flash in meinem Windows-Startmenü...
Gruß, Martin
@Andreas:
Noch eine Frage:
Kannst Du nicht im CCS unter File - New - DSP/BIOS Configuration eine
solche Configurationsdatei erstellen? Wenn man die neu erstellt und
dann speichert, wird bei mir diese *.cmd, *.cdb und noch ein paar
andere estellt.
Gruß, Martin
Hallo nochmal,
es gibt tatsächlich unter New/ einen Eintrag namens DSP/Bios
Configuration. Das ist aber inaktiv (grau). Ich meine mich zu erinnern,
dass ich, als ich damals mit dem 2812-DSP anfing, gelesen zu haben, dass
das in dieser Version noch nicht unterstützt wird. Es waren damals noch
nicht mal die richtigen "Serien-DSP´s" sonderd die Prototypen
(TMP320F2812) zu kriegen. Desshalb hab´ ich dann mühsam das
Linker-Commandfile selber zusammengestrickt.
In Deinem Fall kann ich Dir also leider dazu keine Auskunft geben, da
ich diesen ominösen Configuration-Dialog nicht kenne.
Leider hat TI auch eine sehr eigenwillige Softwarestrategie, so dass
ich nicht mal auf die neueste Version (offenbar V2.20) updaten kann.
Gruß Andreas
Die neueste Version ist V2.23. Ich habe die Version 2.20.Ich finde aber
auf der ganzen Seite keinen Link wo ich das Update bekomme ich werde
mich am Montag mal ans Telfon hängen. So kann das ja auch nicht
sein....
Hi Michael,
Deine Bemühungen werden wohl ohne Erfolg bleiben. Von TI ist es soviel
ich weiß nicht vorgesehen, dass man die Software kostenlos updaten
kann. Ich kann z.B. nur Patches für genau meine Version (2.12)
downloaden und das auch nur ein Jahr lang. Für jede weitere, höhere
Version müsste ich bzw. meine Firma etwas bezahlen. Das nennt sich dann
"Annual Subscription" und ist wie der Name schon sagt jährlich neu zu
bezahlen. Wie gesagt, TI hat eine sehr eigenwillige Softwarestrategie.
Eine neuere Version würde Dir aber nichts nützen, da Du ja eigentlich
schon die komfortablere Lösung und offenbar einen Editor für das *cmd -
File dabei hast. Da wirst Du Dich wohl oder übel mit dem Tool
beschäftigen müssen oder das *cmd-File doch per Hand editieren.
Andreas
Kann es wirklich war sein, daß es bei TI keinerlei Doku darüber gibt,
wie man ein Programm in den Flash laden kann? Das muß doch irgendwo
erklärt sein, oder nicht?
Hi Martin,
versuch's mal damit "TMX320F281x Flash API". Hat mir aber auch noch
nicht wirklick weitergeholfen....
Ich weiß eigentlich auch immer nicht so genau was API jetzt wirklich
ist. Hat da jemand eine Idee????
Michael
Hallo zusammen,
ich habe die beiden Beispielprogramme (SPRA958D + TMX320F281x Flash
API) geöffnet. Ich konnte Sie zwar compilieren, aber beim Übertragen
kommt die Fehlermeldung (siehe Anhang). Funktioniert das bei Euch? Habt
ihr noch irgendwo etwas umgestellt (z.B. Jumper,..)?
Vielleicht ist der Prozessor schon hinüber?
Gruß, Martin
Hallo Martin,
ich habe gerade das Beispiel "example_BIOS_flash.pjt" ausprobiert.
Bei mir funktioniert das einwandfrei. Zu Deiner Fehlermeldung habe ich
leider keine Idee.
Was ich noch aber gar nicht hinbekomme ist, das Beispiel auf meinen
Code zu portieren. Das ist mir ein Rätsel. Vielleicht sollte ich das
Beispiel aushöhlen und meinen Code da reinstecken.
Aber am Ende habe ich dann wieder keine Ahnung :-(....
Noch eine andere Frage. Ich benutze das *.cdb nur zum Einstellen der
Interrupts und der zum Einstellen der Memory Sections. Aber ich benutze
es nicht zur Erstellung eines BIOS. Ist das jetzt ein DSP/BIOS oder ein
nonDSP/BIOS.
Michael
@Michael:
Hast Du das Beispiel "example_BIOS_flash.pjt" im CCS compiliert und
übertragen? Oder hast Du es im CCS compiliert und mit dem SD-Flash-Tool
übertragen?
Gruß, Martin
Hallo Martin,
wenn Du auf's Flash was laden willst, dann mußt Du immer den "On-Chip
Flash Programmer" benutzen, ansonsten bekommst Du Fehlermeldungen. Beim
Compilieren ist kein Unterschied. Da nimmst Du einfach immer nur die
"Build" bwz. "Rebuild All" Option.
Michael