Zwei Programme zusammenhängen

Gast #688378
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
Gast #688391
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();
 }

}
---
#689025
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren