Hallo,
ich versuche eine Test-Anwendung für eine risc-v cpu zu erstellen.
Das Problem welches ich dabei habe ist das der StartUp-code hinter das
eigentliche Programm gestellt wird und es direkt "Abstürzt" da z.B. der
StackPointer etc. nicht korrekt intialisiert ist.
Ich vermute das liegt an meinem linker script.
Ich muss zugeben ich habe was das angeht nur "gefährliches Halbwissen"
und benötige etwas Erklärung / Unterstützung um das hinzubiegen.
Der Speicher meines Test-Systems ist folgendermaßen aufgebaut:
RAM : 0x00000000 - 0x00007FFF - Bereich in dem stack , heap usw liegen.
sollen
ROM : 0x00008000 - 0x00009FFF - Bereich in dem der StartUp und Programm
code, Konstanten usw. liegen soll
Das linker script "linker.ld", den StartUp-code "crt.S" und ein
object-dump der Anwendungsdatei "object-dump.txt" habe ich angehängt.
Wenn ich mir jetzt den object-dump anschaue steht die Sektion
.start_jump hinter .memory, meiner Meinung nach müsste das aber
umgekehrt sein.
Das linker script und den StartUp-code habe ich von einem VexRiscV -
Murax Soc - Demo übernommen (Mein Test-System ist eine VexRiscV soft-cpu
in einem FPGA) und angepasst -> was wohl auch das Problem ist,
wahrscheinlich ist es ein sehr trivialer Fehler aber ich bin irgendwie
zu "stumpf" um ihn zu finden.
Evtl. hat jemand Lust und Zeit sich das anzuschauen und kann kurz
erläutern wo der Fehler steckt.
Danke.