123456789101112131415161718 |
- - alter Gedankengang war falsch
- - FreeRTOS hat bei ecall instr. blockiert, für immer, daher wurden layered interr. ausgeschalten, aber das war nicht richtig
- - beim stöbern im code ist mir aufgefallen, dass die Semantik d. ecall instr. womöglich eine andere ist...
- - nachlesen im priv. spec. hat ergebn dass ecall/ebreak exceptions sind, keine interrupts (war nicht klar wegen mehrdeutiger Sprache, aber ein Blick auf die Tabelle v. exception priorities offenbart es auch)
- - alte changes reverted: keine layered interrupts
- - außerdem steht im spec an irgend einer Stelle, dass bei ecall NICHT mepc <- pc + 4 gesetzt werden soll (sondern mepc <- pc)
- - ecall/ebreak Semantik behoben
- - softw. int. nur noch auslösbar über "mip" write
- - ecall: "env. call from M-mode" exception
- - ebreak: "breakpoint" exception
- - unit tests anpassen (TODO)
- - test programme anpassen (TODO)
- - jetzt funktioniert das task switching richtig: start scheduler -> schedule task 1 -> suspend task 1 -> schedule task 2 -> suspend task 2 -> schedule idle task (indefinitely) (+ tick interrupts)
- - aber task 1/2 werden kein 2-tes mal gescheduled, ähnliche Ausgangslage zu vorher...
- - wahrschienlich falscher mepc Wert, wird übernommen im idle Task
- - leider mehr debugging... (TODO)
- - SPIKE ISA simulator debugging (?) (TODO)
|