mikrocontroller.net

Forum: Compiler & IDEs Funktion aus.S in.bootloader section packen - wie?


Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich habe ein kleines Problem dabei, ein bestehendes Projekt (komplett in 
C geschrieben) um einen in Assembler geschriebenen Bootloader zu 
erweitern. Am Ende soll also ein hexfile herauskommen, das sowohl den 
Bootloader als auch eine erste Version der Betriebssoftware enthaelt.
Ich habe es nach langem umherprobieren nun endlich hinbekommen, eine 
C-Funktion in die Bootloader-section an 0x0c00 zu verschieben - 
funktioniert soweit. Dies bringt mir jedoch noch dann etwas, wenn ich 
aus dieser C-Funktion heraus eine ASM-Funktion inline aufrufen kann 
(sonst liegt diese Funktion ja unter Umstaenden nicht im 
Bootloaderbereich des Flashs). Leider scheitert es daran, denn die 
Funktion wird immer ueber ein Rcall aufgerufen und liegt sonstwo.

Praktisch waere es nun, wenn ich die ganze Geschichte mit der die 
ASM-Funktion aufrufenden C-Funktionbleiben lassen und dem GCC 
stattdessen mitteilen koennte, dass er die nackte ASM-Funktion direkt an 
die Startadresse des Bootloaders im Flash schreiben soll. An diesem 
Punkt bin ich dann jedoch leider gescheitert, da ich "__attribute__ 
((naked, section (".bootloader")));" nicht in die .S einbauen kann. Die 
.S schaut bisher so aus (dient vorerst nur dazu, den ganzen Compilerkram 
ueberhaupt ans Laufen zu bekommen):

.global asmbl
.func asmbl
asmbl:
  nop
  nop
  nop
.endfunc

Hat fuer dieses Problem irgendwer eine Loesung parat?

Vielen Dank und beste Gruesse,
André

Autor: Jörg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Getrennt erstellen, und erst die .hex-Files "zusammen-bauen", d.h. von 
einem den "end-record"(letzte Zeile) entfernen und das andere 
dranhängen.
Das ist die bei weitem einfachste Lösung, das Thema gab's hier schon 
öfters...

hth. Jörg

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.