www.mikrocontroller.net

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


Autor: Der Albi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Der Albi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
......

Autor: Der Albi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Der Albi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Der Albi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Der Albi (Gast)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum kommst du denn auf die Idee, deine Vektoren selbst zu
nummerieren?

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Der Albi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail ü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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.