www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zwei Programme zusammenhängen


Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich möchte auf einen AVR zwei Programme laden. Ich möchte folgendes 
machen: Nach einem Reset liest der AVR einen Schalter ein und springt 
dann entweder zum ersten oder zum zweiten Programm.
Kann der AVR-GCC anstelle einer hex Datei nur Assembler machen? Dann 
könnte ich den Programmstart in ASM schreiben und das ganze so 
zusammenhängen. Oder hat jemand einen anderen Vorschlag?

Danke für eure Hilfe

Autor: Frank L. (hermastersvoice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schreib deine Programme in Assembler.

Autor: Rudolph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So etwa?

---
main_one(void)
{
 while(1)
 {

 }
}

main_two(void)
{
 while(1)
 {

 }
}

int main(void)
{
 uint8_t x=0;

 DDRA = 0x00;
 x = PINA;
 x &= 0x01;

 if(x == 0)
 {
  main_one();
 }
 else if(x == 1)
 {
  main_two();
 }

}
---

Autor: Durchblicker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst Du mit zwei Programmen? Zwei Projekte, die beide in den AVR 
sollen? Oder nur einen Aufruf von zwei unterschiedlichen Unterprogrammen 
in ein- und demselben Projekt?

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sind unabhängige Projekte. Aber ich habe eine Lösung: Ich 
disassembliere die HEX Datei, die mir der GCC gemacht hat, und bau die 
zwie ASM Files zusammen.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was soll dann passieren? Die beiden Programme haben doch garkeinen 
Bezug zueinander.

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor allem gibt es so etwas wie absolute Sprungadressen, 
Interrupt-Vektoren, Konstanten im Flash an aboluten Adressen etc.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philipp wrote:
> Es sind unabhängige Projekte. Aber ich habe eine Lösung: Ich
> disassembliere die HEX Datei, die mir der GCC gemacht hat, und bau die
> zwie ASM Files zusammen.

Viel Spass.
Da dürfte es wesentlich einfacher sein ein drittes Projekt
aufzusetzen, welches die Teile aus den beiden vorhandenen
Projekten in Quellcodeform wiederverwendet. Dazu müssen
wahrscheinlich die beiden Originalprojekte etwas verändert
werden, vorallem wirst du in main() etwas aufräumen müssen
und möglicherweise eine Zwischenfunktion so wie das oben
schon mal gezeigt wurde, einbauen, aber das hat wenigstens
Zukunft und ist zum Laufen zu bringen.

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.