mikrocontroller.net

Forum: Compiler & IDEs C Funktionen mit Linker an spezielle Stelle (zB Bootloader)


Autor: Günther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hab hier im Forum etwas herumgesucht, aber bin noch nicht so ganz fündig 
geworden.

Möchte die Applikation und Bootloader im Projekt zusammenfassen.
Also hätte folgendes vor:

a) Eine Funktion (einzelne oder mehrere C-Funktionen für Bootloader) 
soll so weit wie möglich am Ende des Flash platziert werden. Der 
Bootloader braucht keine Interrupts, macht also alles mit Polling.  --> 
Wahrscheinlich durch Declaration einen neuen Section im Source und 
Angabe im Linker?
b) Der Resetvektor soll fix auf diese Funktion 'a)' hüpfen --> mit 
declaration eines Pointers auf diese Funktion?
c) Der eigentliche Code (.text) kann dann den Rest im Flash ausfüllen, 
wobei die Startroutine immer an fixer Stelle sein muß (dort soll ja der 
Bootloader dann nach vollendeter Tat landen)

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Günther,

Ja, wenn ich Dich richtig verstehe, dann möchtest Du ein Programm 
entwerfen, mit main() in der Application Flash Section und 
Bootloader-Funktion (also ohne eigenes main() in der Boot Flash Section.

Für unmöglich halte ich das nicht. Mein nächster Ansatz, dies weiter zu 
denken, wäre das Betrachten der Sections, die der Compiler einrichten 
kann.

Als geborener Projektmanager denke ich aber zeitlich ungekehrt - ich 
denke erst den letzen Schritt und dann den zweitletzten, drittletzten.

Und fürchte ich mich vor dem Debuggen. Mit Atmel Studio habe ich das 
Debuggung in der Bootloadflasch-Section nie in die Gänge gebracht.

Ich denke erst weiter, wenn Studio mehr als eine
Section beherrscht.


Ciao
Wolfgang Horn

Autor: Günter R. (galileo14)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann doch den Bootloader zunächst mal als ganz normales Programm im 
Application-Bereich entwickeln und debuggen. Erst wenn alles fertig ist, 
plaziert man ihn in den Bootloader-Bereich, und dann ist auch seine 
main() dort, denn da gehört sie m.E. auch hin.

Autor: Günther (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
gleich mal danke für die Posts.

Ich möchte gar keine Bootloadersection verwenden, also vollen Zugriff 
auf den kompletten Flash in den Config Registern zulassen. Der 
Bootloader (also die Funktion) selbst muß aufpassen, daß er sich nicht 
wegflashed.

Das Debuggen sollte dann auch funktioneren, ist ja alles ein Programm.

Habe so einen Bootloader auch schon auf einer Menge PICs mit HiTech und 
Assembler gemischt erstellt, daß funzt prima.

Wahrscheinlich kann man mit attrib o.ä. einer Funktion eine neue 
Section zuweisen und diese dann beim Linken an eine spezielle Stelle 
platzieren lassen.

Dann müßte man die .start section im Reset Vektor umdrehen und diese auf 
den Bootloader zeigen lassen. Der Bootloader muß dann wieder zurück in 
die .start section hüpfen.

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.