uim Hex-File steht offensichtlich quatsch

Gast #367113
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
Gast #367114
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
Gast #367115
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
......
Gast #367116
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
Gast #367117
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
Gast #367118
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...
Gast #367119
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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren