Forum: Compiler & IDEs uim Hex-File steht offensichtlich quatsch


von Der Albi (Gast)


Lesenswert?

Hallo. Ich habe bisher den ICCAVR von ImageCraft genutzt. Zwecks
Evalution-Version kann dort mein Programm aber nicht größer als 4Kb
werden.
Ich habe mir deswegen von Atmel das AVR-Studio heruntergeladen und
nutze das AVR-GCC-Plugin. Ich hab auch schon mein Projekt zum
Compilieren gebracht.
Nun wollte ich das Hex-File auf den AVR aufspielen und nix ging. Ich
hab dann mal die Hexen mit einander verlgichen (also das vom ICCAVR und
GCC) und festgesellt, dass bereits die Interrupt-Vector-Tabelle, die ja
am Anfang steht sehr komisch aussieht. Dass die verwendeten Stings
jetzt am Ende stehen, ist sicherlich nicht weiter schlimm, aber das die
Interrupt-Addressen mit Müll anstatt mit FF gefüllt sind, stört mich
schon...
muss ich noch irgendwas beachten??

Ich bitte um Hilfe.

MFG

von Wolfgang Horn (Gast)


Lesenswert?

Hi, Albi,

"dass bereits die Interrupt-Vector-Tabelle, die ja
am Anfang steht sehr komisch aussieht. Dass die verwendeten Stings
jetzt am Ende stehen, ist sicherlich nicht weiter schlimm, aber das
die
Interrupt-Addressen mit Müll anstatt mit FF gefüllt sind"

Wie ist das zu verstehen?

":100000000C942A000C9445000C94E4000C94B3006A" So müßte der Hex-Code
anfangen, und hier enthält er Sprungbefehle mit "0C94..."

Poste doch mal, was Du für "Soll" hältst, und was Du als "Ist"
gefunden hast.

Ciao
Wolfgang Horn

von Der Albi (Gast)


Lesenswert?

Vom GCC (geht nicht):
:100000000C9446000C9463000C9463000C94630001
:100010000C9463000C9463000C9463000C946300D4
:100020000C9463000C9463000C9463000C946300C4
:100030000C94A0000C9463000C9463000C94EC00EE
:100040000C9463000C9463000C9463000C946300A4
:100050000C9463000C9463000C9463000C94630094
:100060000C9463000C9463000C9463000C94630084
:100070000C9463000C9463000C9403010C946300D3
:100080000C9463000C9463000C94630011241FBE55
:10009000CFEFD0E1DEBFCDBF11E0A0E0B1E0EEE3F5
......

Vom ICC (geht)
:040000000C94BD009F
:04002C000C94960298
:040038000C94090318
:040074000C941B03CA
:14008C004465616B7469766965727400416B746976696572A5
:1400A000742020004465616B7469766965727420202020207C
:1400B40000416B746976696572742020202020202000416EF6
:1400C8002020202020536574202020417573004772656E7AC9
:1400DC00653A202020202020004772656E7A653A202020208C
:1400F000202020004772656E7A653A202020202020202020D7
:14010400002D20202020202053657420202020202B00552F7F
:1401180073656300552F68202000552F6D696E002020202024
:14012C002020202020202020202020200020204B65696E2058
:140140005369676E616C20202000447265687A61686C3A2061
......

von Der Albi (Gast)


Lesenswert?

Also ich habs jetzt wenigstend mal hinbekommen, dass er was macht.
Aber bei jedem Interrupt, der auftrittt, springt mein AVR wieder in die
Main-Funktion. Was soll das?
(Es ist dabei egal, ob der Interrupt mit einer Rotiene abgehandelt
wird, ober ob er nicht Programmteschnisch behandelt wird - also
irgendwas ist mit der Vector-Tabelle noch faul)

MFG

von Der Albi (Gast)


Lesenswert?

Ok.. wie ein Stückchen selber hinbekommen:
ISR(__vector_default) { }
führt zumindest dazu, dass der AVR bei einem Interrupt nicht wieder bei
Main anfängt. Jedoch werden jetzt alle Interrupts auf diese Rotiene
umgeleitet... hat jemand ein Tipp?

MFG

von johnny.m (Gast)


Lesenswert?

Code? Kleiner Tipp: Wenn Du im AVR-Studio unter 'Project |
Configuration Options' das Häkchen in das Kästchen 'Genarate List
File' machst, erzeugt der Compiler eine .lss-Datei, in der genau
drinsteht, welcher Assembler-Code aus welchen C-Anweisungen gemacht
wurde. Schau Dir da mal die Vektortabelle an.

Weitere Infos gibts nur mit Code...

von Der Albi (Gast)


Angehängte Dateien:

Lesenswert?

Der ASM Text sieht OK aus...
Code? Viel Code gibts da nicht...

ISR(_VECTOR(12))
{
... // Wird eh nie erreicht

}

ISR(_VECTOR(15))
{
... // Wird eh nie erreicht
}

ISR(_VECTOR(30))
{
... // Wird eh nie erreicht
}

ISR(__vector_default)
{
 //Hier kommen alle interrupts an.
}

Die jeweiligen Interrupts die ich eigentlich anbfangen wollte, werden
freigegeben. Die kommen ja auch an - nur in der falschen Prozedur.

MFG

von Der Albi (Gast)


Lesenswert?

ach herjee... kann mir den keiner mal sagen, das _VECTOR(12) der 13.
anstatt der 12. Interrupt-Vektor in der Tabelle war!? :-D

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Warum kommst du denn auf die Idee, deine Vektoren selbst zu
nummerieren?

von Karl heinz B. (kbucheg)


Lesenswert?

> ISR(_VECTOR(12))

Schon mal davon gehört, dass es dafür Makros
gibt, die den Interrupt Vektor mit einem sprechenden
Namen (na ja) identifizieren?

von Der Albi (Gast)


Lesenswert?

Ja, aber ich bin mitdem Compiler und dessen Includes noc nicht so
vertraut.... das nummerieren bin ich halt gewoht... naja jetzt geht
wieder alles.. zum Glück...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.