Ja, nö.
Is ja auch so popeleinfach, irgendnen Code voll ausm Kontext gerissen zu
erklären.
Du weißt bestimmt deutlich mehr, wozu der Code gehört und was er machen
soll und überhaupt, welcher CPU-Core, als Du hier verraten willst.
Peter
nfs2k schrieb:
> mehr ist leider in dieser File nicht an code drinnen !?
Nicht mehr Code, sondern grundsätzliche Projektinformationen.
Dann ist eben nicht mehr Antwort drin, die Kristallkugeln sind nämlich
grade alle zur Reparatur.
Peter
SWI #0 => Aufruf von init_ser
SWI #1 => Aufruf von putchar
SWI #2 => Aufruf von getchar
SWI sonst => undefiniert, lies: Handler ist Schrott.
Zeile für Zeile erklärt dir ein ARM Handbuch.
Moin, also SWIs sind 'ne Möglichkeit anderen Programmen Funktionen von
dem Code der die Interrupts verwaltet zugänglich zu machen. Ich hab'
z.B. 'n Bootloader geschrieben der gleichzeitig auch eine Interrupt
getriebene serielle USB Schnitstelle bereitstellt. Damit dann das
Programm, das hochgeladen wird nicht den ganzen Interrupt code und den
für USB CDC/ACM nochmal beinhalten muss mache ich dann die putc, getc,
... via SWIs sichtbar.
ldr sp, STACK <- setzt den Stack Pointer auf Adresse
STACK
stmfd sp!, {lr} <- wirft die ReturnAddr. auf den Stack
ldr ip,[r14, #-4] <- holt den auslösenden SWI opcode
bic ip, ip, #0xff000000 <- extrahiert SWI Nummer
mov ip, ip, lsl #2
ldr lr, =SWIJumpTable ablegen
ldr ip, [lr, ip] <- lädt SWI-Fkt. Adresse
mov lr, pc
mov pc, ip <- ruft SWI-Fkt auf
ldmfd sp!, {pc}^ <- return;
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.