Hallo zusammen,
ich hab einen Bootloader, der funktioniert, wenn ich ihn ohne
"-nostartfiles" baue. Wenn "-nostartfiles" aktiv ist, läuft er nicht
immer.
Ich konnte das Problem darauf zurückführen, daß das RAM nicht immer
sauber gelöscht wird.
Nun hab ich ein wenig den erzeugten Code verglichen und dabei fällt mir
folgendes auf:
1. Ohne "-nostartfiles":
Im 2. Code meine ich, folgenden Bug zu sehen:
Das RAM wird mit dem Inhalt von R1 beschrieben, aber R1 wird zuvor nicht
gelöscht. Dies würde mein Problem erklären.
Was meint Ihr?
Hi
>Das RAM wird mit dem Inhalt von R1 beschrieben, aber R1 wird zuvor nicht>gelöscht. Dies würde mein Problem erklären.
Was denkst du denn, was
eor r1, r1
macht?
MfG Spess
Dosmo schrieb:> Was meint Ihr?
Dass es mich nicht verwundert, denn schließlich sagst du ihm mit
-nostartfiles ja explizit, dass er den Startup-Code weglassen soll (zu
dem auch das Ausnullen des Zero-Reg gehört).
Und was ist _jumpMain? Das sieht nach was "eigenem" aus. Das ist dann
schlicht falsch platziert.
Stefan Ernst schrieb:> Dosmo schrieb:>> Was meint Ihr?>> Dass es mich nicht verwundert, denn schließlich sagst du ihm mit> -nostartfiles ja explizit, dass er den Startup-Code weglassen soll (zu> dem auch das Ausnullen des Zero-Reg gehört).
Also mich verwundert es schon, daß das do_bss_clear vorhanden ist,
welches voraussetzt, daß R1 zuvor gelöscht wurde, aber eben dieses
Löschen des R1 fehlt.
> Und was ist _jumpMain? Das sieht nach was "eigenem" aus. Das ist dann> schlicht falsch platziert.
Ja, ist es eigenes (aber der Bootloader ist nicht von mir, ich darf nur
die Fehler suchen).
Dosmo schrieb:> Also mich verwundert es schon, daß das do_bss_clear vorhanden ist,> welches voraussetzt, daß R1 zuvor gelöscht wurde, aber eben dieses> Löschen des R1 fehlt.
Das ist eine Funktion, die aus der Library hinzugelinkt wird. Und wie
sämtlicher Library-Code, geht sie von einer korrekt aufgesetzten
Umgebung aus. Wenn du -nostartfiles verwendest, bist du halt selbst
dafür verantwortlich, die Grundlagen zu schaffen, und zwar vorher.