Hallo, wenn ich .org benutze, um einen rjmp genau da hin zu legen, wo der Interrupt hinspringt, wo landet der Rest meines Codes? Wird mein gesamter Code soweit nach unten geschoben, dass der eine Befehl an der richtigen Stelle liegt? Womit wird der Anfang aufgefüllt, mit 'nop's? Was wäre, wenn ich zwei .org Direktiven habe, welche aber einige Stellen voneinander auseinanderliegen (also z.B. externer Interrupt INT0addr=$002 und ADC Interrupt ADCCaddr=$020), was kommt dann in den Zwischenraum? Also zwischen $002 und $020? Wird das mit 'nop's ausgefüllt? Danke schonmal...
Bernhard wrote: > Hallo, > > wenn ich .org benutze, um einen rjmp genau da hin zu legen, wo der > Interrupt hinspringt, wo landet der Rest meines Codes? Wird mein > gesamter Code soweit nach unten geschoben, dass der eine Befehl an der > richtigen Stelle liegt? Womit wird der Anfang aufgefüllt, mit 'nop's? Der "Anfang" ist dann nicht definiert. Der Assembler erstellt daraus eine fragmentierte Hexdatei, bei der nicht definierte Teile ausgelassen werden. Was dann in Deinen AVR gebrannt wird, ist Sache Deines ISP-Programms, es kommt halt drauf an, was das mit undefinierten Adressbereichen macht. Ich vermute mal, die meisten ISP-Programme lassen den Flash dann leer, es wird $ffff an den entsprechenden Adressen stehen. Ich selbst vermeide es, Lücken im Code zu haben, es wird aber oft empfohlen und ich möchte diesen Empfehlungen nicht widersprechen. > > Was wäre, wenn ich zwei .org Direktiven habe, welche aber einige Stellen > voneinander auseinanderliegen (also z.B. externer Interrupt > INT0addr=$002 und ADC Interrupt ADCCaddr=$020), was kommt dann in den > Zwischenraum? Also zwischen $002 und $020? Wird das mit 'nop's > ausgefüllt? Nein, die Hexdatei lässt diese Bereiche aus. Sie sind dann nicht definiert. Siehe oben. > > Danke schonmal... Bitte. MfG, Blaubär, der Trollige
Die Org direktive verwendet man nur an Stellen wo man die Uebersicht hat, sich selbst um freien Plaetze kuemmert. Die macht man vor Allem am Anfang des Speichers. zB fuer Sprunglisten, seien das Interrupttabellen, oder Softwareinterrupts. Dasselbe gilt auch fuer das EEPROM. Da kann man bestimmte Variablen an feste Adressen legen, sodass unabhaengige Tools dasselbe immer an derselben Stelle vorfinden. Das unabhaengige Tool kann zb die Applikation sein, die fuer eine gewisse Funktionalitaet in den Bootloadercode springt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.