From 5eec97bef957200db55cf2092cd3dd65376a57d9 Mon Sep 17 00:00:00 2001 From: ccckmit Date: Sat, 14 Nov 2020 11:31:33 +0800 Subject: [PATCH] init --- .gitignore | 9 ++ 01-HelloOs/Makefile | 20 ++++ 01-HelloOs/README.md | 19 ++++ 01-HelloOs/os.c | 22 +++++ 01-HelloOs/os.ld | 46 +++++++++ 01-HelloOs/start.s | 26 +++++ 02-ContextSwitch/Makefile | 20 ++++ 02-ContextSwitch/README.md | 21 +++++ 02-ContextSwitch/lib.c | 16 ++++ 02-ContextSwitch/lib.h | 12 +++ 02-ContextSwitch/os.c | 24 +++++ 02-ContextSwitch/os.h | 9 ++ 02-ContextSwitch/os.ld | 46 +++++++++ 02-ContextSwitch/riscv.h | 35 +++++++ 02-ContextSwitch/start.s | 26 +++++ 02-ContextSwitch/sys.h | 8 ++ 02-ContextSwitch/sys.s | 52 ++++++++++ 03-MultiTasking/Makefile | 20 ++++ 03-MultiTasking/README.md | 56 +++++++++++ 03-MultiTasking/lib.c | 16 ++++ 03-MultiTasking/lib.h | 12 +++ 03-MultiTasking/os.c | 26 +++++ 03-MultiTasking/os.h | 12 +++ 03-MultiTasking/os.ld | 46 +++++++++ 03-MultiTasking/riscv.h | 35 +++++++ 03-MultiTasking/start.s | 26 +++++ 03-MultiTasking/sys.h | 8 ++ 03-MultiTasking/sys.s | 52 ++++++++++ 03-MultiTasking/task.c | 30 ++++++ 03-MultiTasking/task.h | 16 ++++ 03-MultiTasking/user.c | 30 ++++++ 04-TimerInterrupt/Makefile | 20 ++++ 04-TimerInterrupt/README.md | 25 +++++ 04-TimerInterrupt/lib.c | 146 ++++++++++++++++++++++++++++ 04-TimerInterrupt/lib.h | 17 ++++ 04-TimerInterrupt/os.c | 15 +++ 04-TimerInterrupt/os.h | 12 +++ 04-TimerInterrupt/os.ld | 46 +++++++++ 04-TimerInterrupt/riscv.h | 116 +++++++++++++++++++++++ 04-TimerInterrupt/start.s | 26 +++++ 04-TimerInterrupt/sys.h | 8 ++ 04-TimerInterrupt/sys.s | 163 ++++++++++++++++++++++++++++++++ 04-TimerInterrupt/timer.c | 41 ++++++++ 04-TimerInterrupt/timer.h | 11 +++ 05-Preemptive/Makefile | 20 ++++ 05-Preemptive/README.md | 68 +++++++++++++ 05-Preemptive/lib.c | 146 ++++++++++++++++++++++++++++ 05-Preemptive/lib.h | 17 ++++ 05-Preemptive/os.c | 27 ++++++ 05-Preemptive/os.h | 13 +++ 05-Preemptive/os.ld | 46 +++++++++ 05-Preemptive/riscv.h | 116 +++++++++++++++++++++++ 05-Preemptive/start.s | 26 +++++ 05-Preemptive/sys.h | 8 ++ 05-Preemptive/sys.s | 163 ++++++++++++++++++++++++++++++++ 05-Preemptive/task.c | 30 ++++++ 05-Preemptive/task.h | 16 ++++ 05-Preemptive/timer.c | 42 +++++++++ 05-Preemptive/timer.h | 12 +++ 05-Preemptive/user.c | 30 ++++++ AUTHORS | 5 + LICENSE | 26 +++++ README.md | 54 +++++++++++ doc/Background.md | 178 +++++++++++++++++++++++++++++++++++ doc/Threads.md | 83 ++++++++++++++++ doc/Uart.md | 5 + doc/freeRtosRef.md | 101 ++++++++++++++++++++ doc/img/InterruptHandler.png | Bin 0 -> 304894 bytes doc/xv6ref.md | 101 ++++++++++++++++++++ 69 files changed, 2775 insertions(+) create mode 100644 .gitignore create mode 100644 01-HelloOs/Makefile create mode 100644 01-HelloOs/README.md create mode 100644 01-HelloOs/os.c create mode 100644 01-HelloOs/os.ld create mode 100644 01-HelloOs/start.s create mode 100644 02-ContextSwitch/Makefile create mode 100644 02-ContextSwitch/README.md create mode 100644 02-ContextSwitch/lib.c create mode 100644 02-ContextSwitch/lib.h create mode 100644 02-ContextSwitch/os.c create mode 100644 02-ContextSwitch/os.h create mode 100644 02-ContextSwitch/os.ld create mode 100644 02-ContextSwitch/riscv.h create mode 100644 02-ContextSwitch/start.s create mode 100644 02-ContextSwitch/sys.h create mode 100644 02-ContextSwitch/sys.s create mode 100644 03-MultiTasking/Makefile create mode 100644 03-MultiTasking/README.md create mode 100644 03-MultiTasking/lib.c create mode 100644 03-MultiTasking/lib.h create mode 100644 03-MultiTasking/os.c create mode 100644 03-MultiTasking/os.h create mode 100644 03-MultiTasking/os.ld create mode 100644 03-MultiTasking/riscv.h create mode 100644 03-MultiTasking/start.s create mode 100644 03-MultiTasking/sys.h create mode 100644 03-MultiTasking/sys.s create mode 100644 03-MultiTasking/task.c create mode 100644 03-MultiTasking/task.h create mode 100644 03-MultiTasking/user.c create mode 100644 04-TimerInterrupt/Makefile create mode 100644 04-TimerInterrupt/README.md create mode 100644 04-TimerInterrupt/lib.c create mode 100644 04-TimerInterrupt/lib.h create mode 100644 04-TimerInterrupt/os.c create mode 100644 04-TimerInterrupt/os.h create mode 100644 04-TimerInterrupt/os.ld create mode 100644 04-TimerInterrupt/riscv.h create mode 100644 04-TimerInterrupt/start.s create mode 100644 04-TimerInterrupt/sys.h create mode 100644 04-TimerInterrupt/sys.s create mode 100644 04-TimerInterrupt/timer.c create mode 100644 04-TimerInterrupt/timer.h create mode 100644 05-Preemptive/Makefile create mode 100644 05-Preemptive/README.md create mode 100644 05-Preemptive/lib.c create mode 100644 05-Preemptive/lib.h create mode 100644 05-Preemptive/os.c create mode 100644 05-Preemptive/os.h create mode 100644 05-Preemptive/os.ld create mode 100644 05-Preemptive/riscv.h create mode 100644 05-Preemptive/start.s create mode 100644 05-Preemptive/sys.h create mode 100644 05-Preemptive/sys.s create mode 100644 05-Preemptive/task.c create mode 100644 05-Preemptive/task.h create mode 100644 05-Preemptive/timer.c create mode 100644 05-Preemptive/timer.h create mode 100644 05-Preemptive/user.c create mode 100644 AUTHORS create mode 100644 LICENSE create mode 100644 README.md create mode 100644 doc/Background.md create mode 100644 doc/Threads.md create mode 100644 doc/Uart.md create mode 100644 doc/freeRtosRef.md create mode 100644 doc/img/InterruptHandler.png create mode 100644 doc/xv6ref.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0eedd1f --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*~ +*.o +*.elf +*.bin +*.list +*.swp +*.bak +bak + diff --git a/01-HelloOs/Makefile b/01-HelloOs/Makefile new file mode 100644 index 0000000..02f0d22 --- /dev/null +++ b/01-HelloOs/Makefile @@ -0,0 +1,20 @@ +CC = riscv64-unknown-elf-gcc +CFLAGS = -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 + +QEMU = qemu-system-riscv32 +QFLAGS = -nographic -smp 4 -machine virt -bios none + +OBJDUMP = riscv64-unknown-elf-objdump + +all: os.elf + +os.elf: start.s os.c + $(CC) $(CFLAGS) -T os.ld -o os.elf $^ + +qemu: $(TARGET) + @qemu-system-riscv32 -M ? | grep virt >/dev/null || exit + @echo "Press Ctrl-A and then X to exit QEMU" + $(QEMU) $(QFLAGS) -kernel os.elf + +clean: + rm -f *.elf diff --git a/01-HelloOs/README.md b/01-HelloOs/README.md new file mode 100644 index 0000000..01cc50c --- /dev/null +++ b/01-HelloOs/README.md @@ -0,0 +1,19 @@ +# 01-Hello OS + +## Build & Run + +``` +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/01-HelloOs (master) +$ make clean +rm -f *.elf + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/01-HelloOs (master) +$ make +riscv64-unknown-elf-gcc -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 -T os.ld -o os.elf start.s os.c + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/01-HelloOs (master) +$ make qemu +Press Ctrl-A and then X to exit QEMU +qemu-system-riscv32 -nographic -smp 4 -machine virt -bios none -kernel os.elf +Hello OS! +``` diff --git a/01-HelloOs/os.c b/01-HelloOs/os.c new file mode 100644 index 0000000..6a51dc9 --- /dev/null +++ b/01-HelloOs/os.c @@ -0,0 +1,22 @@ +#include + +// ref: https://www.activexperts.com/serial-port-component/tutorials/uart/ +#define UART 0x10000000 +#define UART_THR (uint8_t*)(UART+0x00) // THR:transmitter holding register +#define UART_LSR (uint8_t*)(UART+0x05) // LSR:line status register +#define UART_LSR_EMPTY_MASK 0x40 // LSR Bit 6: Transmitter empty; both the THR and LSR are empty + +int lib_putc(char ch) { + while ((*UART_LSR & UART_LSR_EMPTY_MASK) == 0); + return *UART_THR = ch; +} + +void lib_puts(char *s) { + while (*s) lib_putc(*s++); +} + +int os_main(void) +{ + lib_puts("Hello OS!\n"); + return 0; +} diff --git a/01-HelloOs/os.ld b/01-HelloOs/os.ld new file mode 100644 index 0000000..9c1a7df --- /dev/null +++ b/01-HelloOs/os.ld @@ -0,0 +1,46 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + ram (wxa!ri) : ORIGIN = 0x80000000, LENGTH = 128M +} + +PHDRS +{ + text PT_LOAD; + data PT_LOAD; + bss PT_LOAD; +} + +SECTIONS +{ + .text : { + PROVIDE(_text_start = .); + *(.text.init) *(.text .text.*) + PROVIDE(_text_end = .); + } >ram AT>ram :text + + .rodata : { + PROVIDE(_rodata_start = .); + *(.rodata .rodata.*) + PROVIDE(_rodata_end = .); + } >ram AT>ram :text + + .data : { + . = ALIGN(4096); + PROVIDE(_data_start = .); + *(.sdata .sdata.*) *(.data .data.*) + PROVIDE(_data_end = .); + } >ram AT>ram :data + + .bss :{ + PROVIDE(_bss_start = .); + *(.sbss .sbss.*) *(.bss .bss.*) + PROVIDE(_bss_end = .); + } >ram AT>ram :bss + + PROVIDE(_memory_start = ORIGIN(ram)); + PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram)); +} diff --git a/01-HelloOs/start.s b/01-HelloOs/start.s new file mode 100644 index 0000000..aec0240 --- /dev/null +++ b/01-HelloOs/start.s @@ -0,0 +1,26 @@ +.equ STACK_SIZE, 8192 + +.global _start + +_start: + # setup stacks per hart + csrr t0, mhartid # read current hart id + slli t0, t0, 10 # shift left the hart id by 1024 + la sp, stacks + STACK_SIZE # set the initial stack pointer + # to the end of the stack space + add sp, sp, t0 # move the current hart stack pointer + # to its place in the stack space + + # park harts with id != 0 + csrr a0, mhartid # read current hart id + bnez a0, park # if we're not on the hart 0 + # we park the hart + + j os_main # hart 0 jump to c + +park: + wfi + j park + +stacks: + .skip STACK_SIZE * 4 # allocate space for the harts stacks diff --git a/02-ContextSwitch/Makefile b/02-ContextSwitch/Makefile new file mode 100644 index 0000000..8ba6c3c --- /dev/null +++ b/02-ContextSwitch/Makefile @@ -0,0 +1,20 @@ +CC = riscv64-unknown-elf-gcc +CFLAGS = -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 + +QEMU = qemu-system-riscv32 +QFLAGS = -nographic -smp 4 -machine virt -bios none + +OBJDUMP = riscv64-unknown-elf-objdump + +all: os.elf + +os.elf: start.s sys.s lib.c os.c + $(CC) $(CFLAGS) -T os.ld -o os.elf $^ + +qemu: $(TARGET) + @qemu-system-riscv32 -M ? | grep virt >/dev/null || exit + @echo "Press Ctrl-A and then X to exit QEMU" + $(QEMU) $(QFLAGS) -kernel os.elf + +clean: + rm -f *.elf diff --git a/02-ContextSwitch/README.md b/02-ContextSwitch/README.md new file mode 100644 index 0000000..db1e0dc --- /dev/null +++ b/02-ContextSwitch/README.md @@ -0,0 +1,21 @@ +# 03-ContextSwitch + +## Build & Run + +``` +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/03-ContextSwitch (master) +$ make clean +rm -f *.elf + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/03-ContextSwitch (master) +$ make +riscv64-unknown-elf-gcc -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 -T os.ld -o os.elf start.s sys.s lib.c os.c + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/03-ContextSwitch (master) +$ make qemu +Press Ctrl-A and then X to exit QEMU +qemu-system-riscv32 -nographic -smp 4 -machine virt -bios none -kernel os.elf +OS start +Task0: Context Switch Success ! +QEMU: Terminated +``` diff --git a/02-ContextSwitch/lib.c b/02-ContextSwitch/lib.c new file mode 100644 index 0000000..6d05c4e --- /dev/null +++ b/02-ContextSwitch/lib.c @@ -0,0 +1,16 @@ +#include "lib.h" + +void lib_delay(volatile int count) +{ + count *= 50000; + while (count--); +} + +int lib_putc(char ch) { + while ((*UART_LSR & UART_LSR_EMPTY_MASK) == 0); + return *UART_THR = ch; +} + +void lib_puts(char *s) { + while (*s) lib_putc(*s++); +} diff --git a/02-ContextSwitch/lib.h b/02-ContextSwitch/lib.h new file mode 100644 index 0000000..cdcb753 --- /dev/null +++ b/02-ContextSwitch/lib.h @@ -0,0 +1,12 @@ +#ifndef __LIB_H__ +#define __LIB_H__ + +#include "riscv.h" +#include +#include + +extern void lib_delay(volatile int count); +extern int lib_putc(char ch); +extern void lib_puts(char *s); + +#endif diff --git a/02-ContextSwitch/os.c b/02-ContextSwitch/os.c new file mode 100644 index 0000000..d2f7d81 --- /dev/null +++ b/02-ContextSwitch/os.c @@ -0,0 +1,24 @@ +#include "os.h" + +#define STACK_SIZE 1024 +uint8_t task0_stack[STACK_SIZE]; +struct context ctx_os; +struct context ctx_task; + +extern void sys_switch(); + +void user_task0(void) +{ + lib_puts("Task0: Context Switch Success !\n"); + while (1) {} // stop here. +} + +int os_main(void) +{ + lib_puts("OS start\n"); + ctx_task.ra = (reg_t) user_task0; + ctx_task.sp = (reg_t) &task0_stack[STACK_SIZE-1]; + sys_switch(&ctx_os, &ctx_task); + return 0; +} + diff --git a/02-ContextSwitch/os.h b/02-ContextSwitch/os.h new file mode 100644 index 0000000..3c308d7 --- /dev/null +++ b/02-ContextSwitch/os.h @@ -0,0 +1,9 @@ +#ifndef __OS_H__ +#define __OS_H__ + +#include "riscv.h" +#include "lib.h" + +extern int os_main(void); + +#endif diff --git a/02-ContextSwitch/os.ld b/02-ContextSwitch/os.ld new file mode 100644 index 0000000..9c1a7df --- /dev/null +++ b/02-ContextSwitch/os.ld @@ -0,0 +1,46 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + ram (wxa!ri) : ORIGIN = 0x80000000, LENGTH = 128M +} + +PHDRS +{ + text PT_LOAD; + data PT_LOAD; + bss PT_LOAD; +} + +SECTIONS +{ + .text : { + PROVIDE(_text_start = .); + *(.text.init) *(.text .text.*) + PROVIDE(_text_end = .); + } >ram AT>ram :text + + .rodata : { + PROVIDE(_rodata_start = .); + *(.rodata .rodata.*) + PROVIDE(_rodata_end = .); + } >ram AT>ram :text + + .data : { + . = ALIGN(4096); + PROVIDE(_data_start = .); + *(.sdata .sdata.*) *(.data .data.*) + PROVIDE(_data_end = .); + } >ram AT>ram :data + + .bss :{ + PROVIDE(_bss_start = .); + *(.sbss .sbss.*) *(.bss .bss.*) + PROVIDE(_bss_end = .); + } >ram AT>ram :bss + + PROVIDE(_memory_start = ORIGIN(ram)); + PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram)); +} diff --git a/02-ContextSwitch/riscv.h b/02-ContextSwitch/riscv.h new file mode 100644 index 0000000..d5772ac --- /dev/null +++ b/02-ContextSwitch/riscv.h @@ -0,0 +1,35 @@ +#ifndef __RISCV_H__ +#define __RISCV_H__ + +#include + +#define reg_t uint32_t // RISCV32: register is 32bits +// define reg_t as uint64_t // RISCV64: register is 64bits + +// ref: https://www.activexperts.com/serial-port-component/tutorials/uart/ +#define UART 0x10000000 +#define UART_THR (uint8_t*)(UART+0x00) // THR:transmitter holding register +#define UART_LSR (uint8_t*)(UART+0x05) // LSR:line status register +#define UART_LSR_EMPTY_MASK 0x40 // LSR Bit 6: Transmitter empty; both the THR and LSR are empty + +// Saved registers for kernel context switches. +struct context { + reg_t ra; + reg_t sp; + + // callee-saved + reg_t s0; + reg_t s1; + reg_t s2; + reg_t s3; + reg_t s4; + reg_t s5; + reg_t s6; + reg_t s7; + reg_t s8; + reg_t s9; + reg_t s10; + reg_t s11; +}; + +#endif diff --git a/02-ContextSwitch/start.s b/02-ContextSwitch/start.s new file mode 100644 index 0000000..aec0240 --- /dev/null +++ b/02-ContextSwitch/start.s @@ -0,0 +1,26 @@ +.equ STACK_SIZE, 8192 + +.global _start + +_start: + # setup stacks per hart + csrr t0, mhartid # read current hart id + slli t0, t0, 10 # shift left the hart id by 1024 + la sp, stacks + STACK_SIZE # set the initial stack pointer + # to the end of the stack space + add sp, sp, t0 # move the current hart stack pointer + # to its place in the stack space + + # park harts with id != 0 + csrr a0, mhartid # read current hart id + bnez a0, park # if we're not on the hart 0 + # we park the hart + + j os_main # hart 0 jump to c + +park: + wfi + j park + +stacks: + .skip STACK_SIZE * 4 # allocate space for the harts stacks diff --git a/02-ContextSwitch/sys.h b/02-ContextSwitch/sys.h new file mode 100644 index 0000000..4355ab3 --- /dev/null +++ b/02-ContextSwitch/sys.h @@ -0,0 +1,8 @@ +#ifndef __SYS_H__ +#define __SYS_H__ + +#include "riscv.h" +extern void sys_timer(); +extern void sys_switch(struct context *ctx_old, struct context *ctx_new); + +#endif diff --git a/02-ContextSwitch/sys.s b/02-ContextSwitch/sys.s new file mode 100644 index 0000000..3aab89b --- /dev/null +++ b/02-ContextSwitch/sys.s @@ -0,0 +1,52 @@ +# This Code derived from xv6-riscv (64bit) +# -- https://github.com/mit-pdos/xv6-riscv/blob/riscv/kernel/swtch.S + +# ============ MACRO ================== +.macro ctx_save base + sw ra, 0(\base) + sw sp, 4(\base) + sw s0, 8(\base) + sw s1, 12(\base) + sw s2, 16(\base) + sw s3, 20(\base) + sw s4, 24(\base) + sw s5, 28(\base) + sw s6, 32(\base) + sw s7, 36(\base) + sw s8, 40(\base) + sw s9, 44(\base) + sw s10, 48(\base) + sw s11, 52(\base) +.endm + +.macro ctx_load base + lw ra, 0(\base) + lw sp, 4(\base) + lw s0, 8(\base) + lw s1, 12(\base) + lw s2, 16(\base) + lw s3, 20(\base) + lw s4, 24(\base) + lw s5, 28(\base) + lw s6, 32(\base) + lw s7, 36(\base) + lw s8, 40(\base) + lw s9, 44(\base) + lw s10, 48(\base) + lw s11, 52(\base) +.endm + +# ============ Macro END ================== + +# Context switch +# +# void sys_switch(struct context *old, struct context *new); +# +# Save current registers in old. Load from new. + +.globl sys_switch +.align 4 +sys_switch: + ctx_save a0 # a0 => struct context *old + ctx_load a1 # a1 => struct context *new + ret # pc=ra; swtch to new task (new->ra) diff --git a/03-MultiTasking/Makefile b/03-MultiTasking/Makefile new file mode 100644 index 0000000..9d97198 --- /dev/null +++ b/03-MultiTasking/Makefile @@ -0,0 +1,20 @@ +CC = riscv64-unknown-elf-gcc +CFLAGS = -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 + +QEMU = qemu-system-riscv32 +QFLAGS = -nographic -smp 4 -machine virt -bios none + +OBJDUMP = riscv64-unknown-elf-objdump + +all: os.elf + +os.elf: start.s sys.s lib.c task.c os.c user.c + $(CC) $(CFLAGS) -T os.ld -o os.elf $^ + +qemu: $(TARGET) + @qemu-system-riscv32 -M ? | grep virt >/dev/null || exit + @echo "Press Ctrl-A and then X to exit QEMU" + $(QEMU) $(QFLAGS) -kernel os.elf + +clean: + rm -f *.elf diff --git a/03-MultiTasking/README.md b/03-MultiTasking/README.md new file mode 100644 index 0000000..38dd11c --- /dev/null +++ b/03-MultiTasking/README.md @@ -0,0 +1,56 @@ +# 04-MultiTasking + +## Build & Run + +``` +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/04-MultiTasking (master) +$ make clean +rm -f *.elf + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/04-MultiTasking (master) +$ make +riscv64-unknown-elf-gcc -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 -T os.ld -o os.elf start.s sys.s lib.c task.c os.c user.c + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/04-MultiTasking (master) +$ make qemu +Press Ctrl-A and then X to exit QEMU +qemu-system-riscv32 -nographic -smp 4 -machine virt -bios none -kernel os.elf +OS start +OS: Activate next task +Task0: Created! +Task0: Now, return to kernel mode +OS: Back to OS + +OS: Activate next task +Task1: Created! +Task1: Now, return to kernel mode +OS: Back to OS + +OS: Activate next task +Task0: Running... +OS: Back to OS + +OS: Activate next task +Task1: Running... +OS: Back to OS + +OS: Activate next task +Task0: Running... +OS: Back to OS + +OS: Activate next task +Task1: Running... +OS: Back to OS + +OS: Activate next task +Task0: Running... +OS: Back to OS + +OS: Activate next task +Task1: Running... +OS: Back to OS + +OS: Activate next task +Task0: Running... +QEMU: Terminated +``` diff --git a/03-MultiTasking/lib.c b/03-MultiTasking/lib.c new file mode 100644 index 0000000..6d05c4e --- /dev/null +++ b/03-MultiTasking/lib.c @@ -0,0 +1,16 @@ +#include "lib.h" + +void lib_delay(volatile int count) +{ + count *= 50000; + while (count--); +} + +int lib_putc(char ch) { + while ((*UART_LSR & UART_LSR_EMPTY_MASK) == 0); + return *UART_THR = ch; +} + +void lib_puts(char *s) { + while (*s) lib_putc(*s++); +} diff --git a/03-MultiTasking/lib.h b/03-MultiTasking/lib.h new file mode 100644 index 0000000..cdcb753 --- /dev/null +++ b/03-MultiTasking/lib.h @@ -0,0 +1,12 @@ +#ifndef __LIB_H__ +#define __LIB_H__ + +#include "riscv.h" +#include +#include + +extern void lib_delay(volatile int count); +extern int lib_putc(char ch); +extern void lib_puts(char *s); + +#endif diff --git a/03-MultiTasking/os.c b/03-MultiTasking/os.c new file mode 100644 index 0000000..f0c0228 --- /dev/null +++ b/03-MultiTasking/os.c @@ -0,0 +1,26 @@ +#include "os.h" + +void os_kernel() { + task_os(); +} + +void os_start() { + lib_puts("OS start\n"); + user_init(); +} + +int os_main(void) +{ + os_start(); + + int current_task = 0; + while (1) { + lib_puts("OS: Activate next task\n"); + task_go(current_task); + lib_puts("OS: Back to OS\n"); + current_task = (current_task + 1) % taskTop; // Round Robin Scheduling + lib_puts("\n"); + } + return 0; +} + diff --git a/03-MultiTasking/os.h b/03-MultiTasking/os.h new file mode 100644 index 0000000..355a523 --- /dev/null +++ b/03-MultiTasking/os.h @@ -0,0 +1,12 @@ +#ifndef __OS_H__ +#define __OS_H__ + +#include "riscv.h" +#include "lib.h" +#include "task.h" + +extern void user_init(); +extern void os_kernel(); +extern int os_main(void); + +#endif diff --git a/03-MultiTasking/os.ld b/03-MultiTasking/os.ld new file mode 100644 index 0000000..9c1a7df --- /dev/null +++ b/03-MultiTasking/os.ld @@ -0,0 +1,46 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + ram (wxa!ri) : ORIGIN = 0x80000000, LENGTH = 128M +} + +PHDRS +{ + text PT_LOAD; + data PT_LOAD; + bss PT_LOAD; +} + +SECTIONS +{ + .text : { + PROVIDE(_text_start = .); + *(.text.init) *(.text .text.*) + PROVIDE(_text_end = .); + } >ram AT>ram :text + + .rodata : { + PROVIDE(_rodata_start = .); + *(.rodata .rodata.*) + PROVIDE(_rodata_end = .); + } >ram AT>ram :text + + .data : { + . = ALIGN(4096); + PROVIDE(_data_start = .); + *(.sdata .sdata.*) *(.data .data.*) + PROVIDE(_data_end = .); + } >ram AT>ram :data + + .bss :{ + PROVIDE(_bss_start = .); + *(.sbss .sbss.*) *(.bss .bss.*) + PROVIDE(_bss_end = .); + } >ram AT>ram :bss + + PROVIDE(_memory_start = ORIGIN(ram)); + PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram)); +} diff --git a/03-MultiTasking/riscv.h b/03-MultiTasking/riscv.h new file mode 100644 index 0000000..d5772ac --- /dev/null +++ b/03-MultiTasking/riscv.h @@ -0,0 +1,35 @@ +#ifndef __RISCV_H__ +#define __RISCV_H__ + +#include + +#define reg_t uint32_t // RISCV32: register is 32bits +// define reg_t as uint64_t // RISCV64: register is 64bits + +// ref: https://www.activexperts.com/serial-port-component/tutorials/uart/ +#define UART 0x10000000 +#define UART_THR (uint8_t*)(UART+0x00) // THR:transmitter holding register +#define UART_LSR (uint8_t*)(UART+0x05) // LSR:line status register +#define UART_LSR_EMPTY_MASK 0x40 // LSR Bit 6: Transmitter empty; both the THR and LSR are empty + +// Saved registers for kernel context switches. +struct context { + reg_t ra; + reg_t sp; + + // callee-saved + reg_t s0; + reg_t s1; + reg_t s2; + reg_t s3; + reg_t s4; + reg_t s5; + reg_t s6; + reg_t s7; + reg_t s8; + reg_t s9; + reg_t s10; + reg_t s11; +}; + +#endif diff --git a/03-MultiTasking/start.s b/03-MultiTasking/start.s new file mode 100644 index 0000000..aec0240 --- /dev/null +++ b/03-MultiTasking/start.s @@ -0,0 +1,26 @@ +.equ STACK_SIZE, 8192 + +.global _start + +_start: + # setup stacks per hart + csrr t0, mhartid # read current hart id + slli t0, t0, 10 # shift left the hart id by 1024 + la sp, stacks + STACK_SIZE # set the initial stack pointer + # to the end of the stack space + add sp, sp, t0 # move the current hart stack pointer + # to its place in the stack space + + # park harts with id != 0 + csrr a0, mhartid # read current hart id + bnez a0, park # if we're not on the hart 0 + # we park the hart + + j os_main # hart 0 jump to c + +park: + wfi + j park + +stacks: + .skip STACK_SIZE * 4 # allocate space for the harts stacks diff --git a/03-MultiTasking/sys.h b/03-MultiTasking/sys.h new file mode 100644 index 0000000..4355ab3 --- /dev/null +++ b/03-MultiTasking/sys.h @@ -0,0 +1,8 @@ +#ifndef __SYS_H__ +#define __SYS_H__ + +#include "riscv.h" +extern void sys_timer(); +extern void sys_switch(struct context *ctx_old, struct context *ctx_new); + +#endif diff --git a/03-MultiTasking/sys.s b/03-MultiTasking/sys.s new file mode 100644 index 0000000..3aab89b --- /dev/null +++ b/03-MultiTasking/sys.s @@ -0,0 +1,52 @@ +# This Code derived from xv6-riscv (64bit) +# -- https://github.com/mit-pdos/xv6-riscv/blob/riscv/kernel/swtch.S + +# ============ MACRO ================== +.macro ctx_save base + sw ra, 0(\base) + sw sp, 4(\base) + sw s0, 8(\base) + sw s1, 12(\base) + sw s2, 16(\base) + sw s3, 20(\base) + sw s4, 24(\base) + sw s5, 28(\base) + sw s6, 32(\base) + sw s7, 36(\base) + sw s8, 40(\base) + sw s9, 44(\base) + sw s10, 48(\base) + sw s11, 52(\base) +.endm + +.macro ctx_load base + lw ra, 0(\base) + lw sp, 4(\base) + lw s0, 8(\base) + lw s1, 12(\base) + lw s2, 16(\base) + lw s3, 20(\base) + lw s4, 24(\base) + lw s5, 28(\base) + lw s6, 32(\base) + lw s7, 36(\base) + lw s8, 40(\base) + lw s9, 44(\base) + lw s10, 48(\base) + lw s11, 52(\base) +.endm + +# ============ Macro END ================== + +# Context switch +# +# void sys_switch(struct context *old, struct context *new); +# +# Save current registers in old. Load from new. + +.globl sys_switch +.align 4 +sys_switch: + ctx_save a0 # a0 => struct context *old + ctx_load a1 # a1 => struct context *new + ret # pc=ra; swtch to new task (new->ra) diff --git a/03-MultiTasking/task.c b/03-MultiTasking/task.c new file mode 100644 index 0000000..3316b00 --- /dev/null +++ b/03-MultiTasking/task.c @@ -0,0 +1,30 @@ +#include "task.h" +#include "lib.h" + +uint8_t task_stack[MAX_TASK][STACK_SIZE]; +struct context ctx_os; +struct context ctx_tasks[MAX_TASK]; +struct context *ctx_now; +int taskTop=0; // total number of task + +// create a new task +int task_create(void (*task)(void)) +{ + int i=taskTop++; + ctx_tasks[i].ra = (reg_t) task; + ctx_tasks[i].sp = (reg_t) &task_stack[i][STACK_SIZE-1]; + return i; +} + +// switch to task[i] +void task_go(int i) { + ctx_now = &ctx_tasks[i]; + sys_switch(&ctx_os, &ctx_tasks[i]); +} + +// switch back to os +void task_os() { + struct context *ctx = ctx_now; + ctx_now = &ctx_os; + sys_switch(ctx, &ctx_os); +} diff --git a/03-MultiTasking/task.h b/03-MultiTasking/task.h new file mode 100644 index 0000000..1ac7e39 --- /dev/null +++ b/03-MultiTasking/task.h @@ -0,0 +1,16 @@ +#ifndef __TASK_H__ +#define __TASK_H__ + +#include "riscv.h" +#include "sys.h" + +#define MAX_TASK 10 +#define STACK_SIZE 1024 + +extern int taskTop; + +extern int task_create(void (*task)(void)); +extern void task_go(int i); +extern void task_os(); + +#endif diff --git a/03-MultiTasking/user.c b/03-MultiTasking/user.c new file mode 100644 index 0000000..5dfdad6 --- /dev/null +++ b/03-MultiTasking/user.c @@ -0,0 +1,30 @@ +#include "os.h" + +void user_task0(void) +{ + lib_puts("Task0: Created!\n"); + lib_puts("Task0: Now, return to kernel mode\n"); + os_kernel(); + while (1) { + lib_puts("Task0: Running...\n"); + lib_delay(1000); + os_kernel(); + } +} + +void user_task1(void) +{ + lib_puts("Task1: Created!\n"); + lib_puts("Task1: Now, return to kernel mode\n"); + os_kernel(); + while (1) { + lib_puts("Task1: Running...\n"); + lib_delay(1000); + os_kernel(); + } +} + +void user_init() { + task_create(&user_task0); + task_create(&user_task1); +} diff --git a/04-TimerInterrupt/Makefile b/04-TimerInterrupt/Makefile new file mode 100644 index 0000000..b1977eb --- /dev/null +++ b/04-TimerInterrupt/Makefile @@ -0,0 +1,20 @@ +CC = riscv64-unknown-elf-gcc +CFLAGS = -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 + +QEMU = qemu-system-riscv32 +QFLAGS = -nographic -smp 4 -machine virt -bios none + +OBJDUMP = riscv64-unknown-elf-objdump + +all: os.elf + +os.elf: start.s sys.s lib.c timer.c os.c + $(CC) $(CFLAGS) -T os.ld -o os.elf $^ + +qemu: $(TARGET) + @qemu-system-riscv32 -M ? | grep virt >/dev/null || exit + @echo "Press Ctrl-A and then X to exit QEMU" + $(QEMU) $(QFLAGS) -kernel os.elf + +clean: + rm -f *.elf diff --git a/04-TimerInterrupt/README.md b/04-TimerInterrupt/README.md new file mode 100644 index 0000000..93887ac --- /dev/null +++ b/04-TimerInterrupt/README.md @@ -0,0 +1,25 @@ +# 04-TimerInterrupt + +## Build & Run + +``` +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/04-TimerInterrupt (master) +$ make clean +rm -f *.elf + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/04-TimerInterrupt (master) +$ make +riscv64-unknown-elf-gcc -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 -T os.ld -o os.elf start.s sys.s lib.c timer.c os.c + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/04-TimerInterrupt (master) +$ make qemu +Press Ctrl-A and then X to exit QEMU +qemu-system-riscv32 -nographic -smp 4 -machine virt -bios none -kernel os.elf +OS start +timer_handler: 1 +timer_handler: 2 +timer_handler: 3 +timer_handler: 4 +timer_handler: 5 +QEMU: Terminated +``` diff --git a/04-TimerInterrupt/lib.c b/04-TimerInterrupt/lib.c new file mode 100644 index 0000000..3538b9d --- /dev/null +++ b/04-TimerInterrupt/lib.c @@ -0,0 +1,146 @@ +#include "lib.h" + +void lib_delay(volatile int count) +{ + count *= 50000; + while (count--); +} + +int lib_putc(char ch) { + while ((*UART_LSR & UART_LSR_EMPTY_MASK) == 0); + return *UART_THR = ch; +} + +void lib_puts(char *s) { + while (*s) lib_putc(*s++); +} + + +int lib_vsnprintf(char * out, size_t n, const char* s, va_list vl) +{ + int format = 0; + int longarg = 0; + size_t pos = 0; + for( ; *s; s++) { + if (format) { + switch(*s) { + case 'l': { + longarg = 1; + break; + } + case 'p': { + longarg = 1; + if (out && pos < n) { + out[pos] = '0'; + } + pos++; + if (out && pos < n) { + out[pos] = 'x'; + } + pos++; + } + case 'x': { + long num = longarg ? va_arg(vl, long) : va_arg(vl, int); + int hexdigits = 2*(longarg ? sizeof(long) : sizeof(int))-1; + for(int i = hexdigits; i >= 0; i--) { + int d = (num >> (4*i)) & 0xF; + if (out && pos < n) { + out[pos] = (d < 10 ? '0'+d : 'a'+d-10); + } + pos++; + } + longarg = 0; + format = 0; + break; + } + case 'd': { + long num = longarg ? va_arg(vl, long) : va_arg(vl, int); + if (num < 0) { + num = -num; + if (out && pos < n) { + out[pos] = '-'; + } + pos++; + } + long digits = 1; + for (long nn = num; nn /= 10; digits++) + ; + for (int i = digits-1; i >= 0; i--) { + if (out && pos + i < n) { + out[pos + i] = '0' + (num % 10); + } + num /= 10; + } + pos += digits; + longarg = 0; + format = 0; + break; + } + case 's': { + const char* s2 = va_arg(vl, const char*); + while (*s2) { + if (out && pos < n) { + out[pos] = *s2; + } + pos++; + s2++; + } + longarg = 0; + format = 0; + break; + } + case 'c': { + if (out && pos < n) { + out[pos] = (char)va_arg(vl,int); + } + pos++; + longarg = 0; + format = 0; + break; + } + default: + break; + } + } + else if(*s == '%') { + format = 1; + } + else { + if (out && pos < n) { + out[pos] = *s; + } + pos++; + } + } + if (out && pos < n) { + out[pos] = 0; + } + else if (out && n) { + out[n-1] = 0; + } + return pos; +} + +static char out_buf[1000]; // buffer for lib_vprintf() + +int lib_vprintf(const char* s, va_list vl) +{ + int res = lib_vsnprintf(NULL, -1, s, vl); + if (res+1 >= sizeof(out_buf)) { + lib_puts("error: lib_vprintf() output string size overflow\n"); + while(1) {} + } + lib_vsnprintf(out_buf, res + 1, s, vl); + lib_puts(out_buf); + return res; +} + +int lib_printf(const char* s, ...) +{ + int res = 0; + va_list vl; + va_start(vl, s); + res = lib_vprintf(s, vl); + va_end(vl); + return res; +} diff --git a/04-TimerInterrupt/lib.h b/04-TimerInterrupt/lib.h new file mode 100644 index 0000000..e338c8e --- /dev/null +++ b/04-TimerInterrupt/lib.h @@ -0,0 +1,17 @@ +#ifndef __LIB_H__ +#define __LIB_H__ + +#include "riscv.h" +#include +#include + +#define lib_error(...) { lib_printf(__VA_ARGS__); while(1) {} } } + +extern void lib_delay(volatile int count); +extern int lib_putc(char ch); +extern void lib_puts(char *s); +extern int lib_printf(const char* s, ...); +extern int lib_vprintf(const char* s, va_list vl); +extern int lib_vsnprintf(char * out, size_t n, const char* s, va_list vl); + +#endif diff --git a/04-TimerInterrupt/os.c b/04-TimerInterrupt/os.c new file mode 100644 index 0000000..eb57075 --- /dev/null +++ b/04-TimerInterrupt/os.c @@ -0,0 +1,15 @@ +#include "os.h" + +void os_start() { + lib_puts("OS start\n"); + // user_init(); + timer_init(); // start timer interrupt ... +} + +int os_main(void) +{ + os_start(); + while (1) {} // stop here ! + return 0; +} + diff --git a/04-TimerInterrupt/os.h b/04-TimerInterrupt/os.h new file mode 100644 index 0000000..4058445 --- /dev/null +++ b/04-TimerInterrupt/os.h @@ -0,0 +1,12 @@ +#ifndef __OS_H__ +#define __OS_H__ + +#include "riscv.h" +#include "lib.h" +#include "timer.h" + +extern void user_init(); +extern void os_kernel(); +extern int os_main(void); + +#endif diff --git a/04-TimerInterrupt/os.ld b/04-TimerInterrupt/os.ld new file mode 100644 index 0000000..9c1a7df --- /dev/null +++ b/04-TimerInterrupt/os.ld @@ -0,0 +1,46 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + ram (wxa!ri) : ORIGIN = 0x80000000, LENGTH = 128M +} + +PHDRS +{ + text PT_LOAD; + data PT_LOAD; + bss PT_LOAD; +} + +SECTIONS +{ + .text : { + PROVIDE(_text_start = .); + *(.text.init) *(.text .text.*) + PROVIDE(_text_end = .); + } >ram AT>ram :text + + .rodata : { + PROVIDE(_rodata_start = .); + *(.rodata .rodata.*) + PROVIDE(_rodata_end = .); + } >ram AT>ram :text + + .data : { + . = ALIGN(4096); + PROVIDE(_data_start = .); + *(.sdata .sdata.*) *(.data .data.*) + PROVIDE(_data_end = .); + } >ram AT>ram :data + + .bss :{ + PROVIDE(_bss_start = .); + *(.sbss .sbss.*) *(.bss .bss.*) + PROVIDE(_bss_end = .); + } >ram AT>ram :bss + + PROVIDE(_memory_start = ORIGIN(ram)); + PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram)); +} diff --git a/04-TimerInterrupt/riscv.h b/04-TimerInterrupt/riscv.h new file mode 100644 index 0000000..27277bb --- /dev/null +++ b/04-TimerInterrupt/riscv.h @@ -0,0 +1,116 @@ +#ifndef __RISCV_H__ +#define __RISCV_H__ + +#include + +#define reg_t uint32_t // RISCV32: register is 32bits +// define reg_t as uint64_t // RISCV64: register is 64bits + +// ref: https://www.activexperts.com/serial-port-component/tutorials/uart/ +#define UART 0x10000000 +#define UART_THR (uint8_t*)(UART+0x00) // THR:transmitter holding register +#define UART_LSR (uint8_t*)(UART+0x05) // LSR:line status register +#define UART_LSR_EMPTY_MASK 0x40 // LSR Bit 6: Transmitter empty; both the THR and LSR are empty + +// Saved registers for kernel context switches. +struct context { + reg_t ra; + reg_t sp; + + // callee-saved + reg_t s0; + reg_t s1; + reg_t s2; + reg_t s3; + reg_t s4; + reg_t s5; + reg_t s6; + reg_t s7; + reg_t s8; + reg_t s9; + reg_t s10; + reg_t s11; +}; + +// ref: https://github.com/mit-pdos/xv6-riscv/blob/riscv/kernel/riscv.h +// +// local interrupt controller, which contains the timer. +// ================== Timer Interrput ==================== + +#define NCPU 8 // maximum number of CPUs +#define CLINT 0x2000000 +#define CLINT_MTIMECMP(hartid) (CLINT + 0x4000 + 4*(hartid)) +#define CLINT_MTIME (CLINT + 0xBFF8) // cycles since boot. + +// which hart (core) is this? +static inline reg_t r_mhartid() +{ + reg_t x; + asm volatile("csrr %0, mhartid" : "=r" (x) ); + return x; +} + +// Machine Status Register, mstatus +#define MSTATUS_MPP_MASK (3 << 11) // previous mode. +#define MSTATUS_MPP_M (3 << 11) +#define MSTATUS_MPP_S (1 << 11) +#define MSTATUS_MPP_U (0 << 11) +#define MSTATUS_MIE (1 << 3) // machine-mode interrupt enable. + +static inline reg_t r_mstatus() +{ + reg_t x; + asm volatile("csrr %0, mstatus" : "=r" (x) ); + return x; +} + +static inline void w_mstatus(reg_t x) +{ + asm volatile("csrw mstatus, %0" : : "r" (x)); +} + +// machine exception program counter, holds the +// instruction address to which a return from +// exception will go. +static inline void w_mepc(reg_t x) +{ + asm volatile("csrw mepc, %0" : : "r" (x)); +} + +static inline reg_t r_mepc() +{ + reg_t x; + asm volatile("csrr %0, mepc" : "=r" (x)); + return x; +} + +// Machine Scratch register, for early trap handler +static inline void w_mscratch(reg_t x) +{ + asm volatile("csrw mscratch, %0" : : "r" (x)); +} + +// Machine-mode interrupt vector +static inline void w_mtvec(reg_t x) +{ + asm volatile("csrw mtvec, %0" : : "r" (x)); +} + +// Machine-mode Interrupt Enable +#define MIE_MEIE (1 << 11) // external +#define MIE_MTIE (1 << 7) // timer +#define MIE_MSIE (1 << 3) // software + +static inline reg_t r_mie() +{ + reg_t x; + asm volatile("csrr %0, mie" : "=r" (x) ); + return x; +} + +static inline void w_mie(reg_t x) +{ + asm volatile("csrw mie, %0" : : "r" (x)); +} + +#endif diff --git a/04-TimerInterrupt/start.s b/04-TimerInterrupt/start.s new file mode 100644 index 0000000..aec0240 --- /dev/null +++ b/04-TimerInterrupt/start.s @@ -0,0 +1,26 @@ +.equ STACK_SIZE, 8192 + +.global _start + +_start: + # setup stacks per hart + csrr t0, mhartid # read current hart id + slli t0, t0, 10 # shift left the hart id by 1024 + la sp, stacks + STACK_SIZE # set the initial stack pointer + # to the end of the stack space + add sp, sp, t0 # move the current hart stack pointer + # to its place in the stack space + + # park harts with id != 0 + csrr a0, mhartid # read current hart id + bnez a0, park # if we're not on the hart 0 + # we park the hart + + j os_main # hart 0 jump to c + +park: + wfi + j park + +stacks: + .skip STACK_SIZE * 4 # allocate space for the harts stacks diff --git a/04-TimerInterrupt/sys.h b/04-TimerInterrupt/sys.h new file mode 100644 index 0000000..4355ab3 --- /dev/null +++ b/04-TimerInterrupt/sys.h @@ -0,0 +1,8 @@ +#ifndef __SYS_H__ +#define __SYS_H__ + +#include "riscv.h" +extern void sys_timer(); +extern void sys_switch(struct context *ctx_old, struct context *ctx_new); + +#endif diff --git a/04-TimerInterrupt/sys.s b/04-TimerInterrupt/sys.s new file mode 100644 index 0000000..cf0fc4c --- /dev/null +++ b/04-TimerInterrupt/sys.s @@ -0,0 +1,163 @@ +# This Code derived from xv6-riscv (64bit) +# -- https://github.com/mit-pdos/xv6-riscv/blob/riscv/kernel/swtch.S + +# ============ MACRO ================== +.macro ctx_save base + sw ra, 0(\base) + sw sp, 4(\base) + sw s0, 8(\base) + sw s1, 12(\base) + sw s2, 16(\base) + sw s3, 20(\base) + sw s4, 24(\base) + sw s5, 28(\base) + sw s6, 32(\base) + sw s7, 36(\base) + sw s8, 40(\base) + sw s9, 44(\base) + sw s10, 48(\base) + sw s11, 52(\base) +.endm + +.macro ctx_load base + lw ra, 0(\base) + lw sp, 4(\base) + lw s0, 8(\base) + lw s1, 12(\base) + lw s2, 16(\base) + lw s3, 20(\base) + lw s4, 24(\base) + lw s5, 28(\base) + lw s6, 32(\base) + lw s7, 36(\base) + lw s8, 40(\base) + lw s9, 44(\base) + lw s10, 48(\base) + lw s11, 52(\base) +.endm + +.macro reg_save base + # save the registers. + sw ra, 0(\base) + sw sp, 4(\base) + sw gp, 8(\base) + sw tp, 12(\base) + sw t0, 16(\base) + sw t1, 20(\base) + sw t2, 24(\base) + sw s0, 28(\base) + sw s1, 32(\base) + sw a0, 36(\base) + sw a1, 40(\base) + sw a2, 44(\base) + sw a3, 48(\base) + sw a4, 52(\base) + sw a5, 56(\base) + sw a6, 60(\base) + sw a7, 64(\base) + sw s2, 68(\base) + sw s3, 72(\base) + sw s4, 76(\base) + sw s5, 80(\base) + sw s6, 84(\base) + sw s7, 88(\base) + sw s8, 92(\base) + sw s9, 96(\base) + sw s10, 100(\base) + sw s11, 104(\base) + sw t3, 108(\base) + sw t4, 112(\base) + sw t5, 116(\base) + sw t6, 120(\base) +.endm + +.macro reg_load base + # restore registers. + lw ra, 0(\base) + lw sp, 4(\base) + lw gp, 8(\base) + # not this, in case we moved CPUs: lw tp, 12(\base) + lw t0, 16(\base) + lw t1, 20(\base) + lw t2, 24(\base) + lw s0, 28(\base) + lw s1, 32(\base) + lw a0, 36(\base) + lw a1, 40(\base) + lw a2, 44(\base) + lw a3, 48(\base) + lw a4, 52(\base) + lw a5, 56(\base) + lw a6, 60(\base) + lw a7, 64(\base) + lw s2, 68(\base) + lw s3, 72(\base) + lw s4, 76(\base) + lw s5, 80(\base) + lw s6, 84(\base) + lw s7, 88(\base) + lw s8, 92(\base) + lw s9, 96(\base) + lw s10, 100(\base) + lw s11, 104(\base) + lw t3, 108(\base) + lw t4, 112(\base) + lw t5, 116(\base) + lw t6, 120(\base) +.endm +# ============ Macro END ================== + +# Context switch +# +# void sys_switch(struct context *old, struct context *new); +# +# Save current registers in old. Load from new. + +.globl sys_switch +.align 4 +sys_switch: + ctx_save a0 # a0 => struct context *old + ctx_load a1 # a1 => struct context *new + ret # pc=ra; swtch to new task (new->ra) + +.globl sys_kernel +.align 4 +sys_kernel: + addi sp, sp, -128 + reg_save sp + call timer_handler # context switch ... + reg_load sp + addi sp, sp, 128 + jr a7 # jump to a7=mepc , return to timer break point + +.globl sys_timer +.align 4 +sys_timer: + # timer_init() has set up the memory that mscratch points to: + # scratch[0,4,8] : register save area. + # scratch[12] : address of CLINT's MTIMECMP register. + # scratch[16] : desired interval between interrupts. + + csrrw a0, mscratch, a0 # exchange(mscratch,a0) + sw a1, 0(a0) + sw a2, 4(a0) + sw a3, 8(a0) + + # schedule the next timer interrupt + # by adding interval to mtimecmp. + lw a1, 12(a0) # CLINT_MTIMECMP(hart) + lw a2, 16(a0) # interval + lw a3, 0(a1) # a3 = CLINT_MTIMECMP(hart) + add a3, a3, a2 # a3 += interval + sw a3, 0(a1) # CLINT_MTIMECMP(hart) = a3 + + csrr a7, mepc # a7 = mepc, for sys_kernel jump back to interrupted point + la a1, sys_kernel # mepc = sys_kernel + csrw mepc, a1 # mret : will jump to sys_kernel + + lw a3, 8(a0) + lw a2, 4(a0) + lw a1, 0(a0) + csrrw a0, mscratch, a0 # exchange(mscratch,a0) + + mret # jump to mepc (=sys_kernel) diff --git a/04-TimerInterrupt/timer.c b/04-TimerInterrupt/timer.c new file mode 100644 index 0000000..ed34982 --- /dev/null +++ b/04-TimerInterrupt/timer.c @@ -0,0 +1,41 @@ +#include "timer.h" + +extern void os_kernel(); + +// a scratch area per CPU for machine-mode timer interrupts. +reg_t timer_scratch[NCPU][5]; + +void timer_init() +{ + // each CPU has a separate source of timer interrupts. + int id = r_mhartid(); + + // ask the CLINT for a timer interrupt. + int interval = 10000000; // cycles; about 1 second in qemu. + *(reg_t*)CLINT_MTIMECMP(id) = *(reg_t*)CLINT_MTIME + interval; + + // prepare information in scratch[] for timervec. + // scratch[0..2] : space for timervec to save registers. + // scratch[3] : address of CLINT MTIMECMP register. + // scratch[4] : desired interval (in cycles) between timer interrupts. + reg_t *scratch = &timer_scratch[id][0]; + scratch[3] = CLINT_MTIMECMP(id); + scratch[4] = interval; + w_mscratch((reg_t)scratch); + + // set the machine-mode trap handler. + w_mtvec((reg_t)sys_timer); + + // enable machine-mode interrupts. + w_mstatus(r_mstatus() | MSTATUS_MIE); + + // enable machine-mode timer interrupts. + w_mie(r_mie() | MIE_MTIE); +} + +static int timer_count = 0; + +void timer_handler() { + lib_printf("timer_handler: %d\n", ++timer_count); + // os_kernel(); +} diff --git a/04-TimerInterrupt/timer.h b/04-TimerInterrupt/timer.h new file mode 100644 index 0000000..73b9f3a --- /dev/null +++ b/04-TimerInterrupt/timer.h @@ -0,0 +1,11 @@ +#ifndef __TIMER_H__ +#define __TIMER_H__ + +#include "riscv.h" +#include "sys.h" +#include "lib.h" + +extern void timer_handler(); +extern void timer_init(); + +#endif diff --git a/05-Preemptive/Makefile b/05-Preemptive/Makefile new file mode 100644 index 0000000..778958d --- /dev/null +++ b/05-Preemptive/Makefile @@ -0,0 +1,20 @@ +CC = riscv64-unknown-elf-gcc +CFLAGS = -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 + +QEMU = qemu-system-riscv32 +QFLAGS = -nographic -smp 4 -machine virt -bios none + +OBJDUMP = riscv64-unknown-elf-objdump + +all: os.elf + +os.elf: start.s sys.s lib.c timer.c task.c os.c user.c + $(CC) $(CFLAGS) -T os.ld -o os.elf $^ + +qemu: $(TARGET) + @qemu-system-riscv32 -M ? | grep virt >/dev/null || exit + @echo "Press Ctrl-A and then X to exit QEMU" + $(QEMU) $(QFLAGS) -kernel os.elf + +clean: + rm -f *.elf diff --git a/05-Preemptive/README.md b/05-Preemptive/README.md new file mode 100644 index 0000000..fe2ec46 --- /dev/null +++ b/05-Preemptive/README.md @@ -0,0 +1,68 @@ +# 05-Preemptive + +## Build & Run + +``` +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/05-Preemptive (master) +$ make clean +rm -f *.elf + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/05-Preemptive (master) +$ make +riscv64-unknown-elf-gcc -nostdlib -fno-builtin -mcmodel=medany -march=rv32ima -mabi=ilp32 -T os.ld -o os.elf start.s sys.s lib.c timer.c task.c os.c user.c + +user@DESKTOP-96FRN6B MINGW64 /d/ccc109/sp/11-os/mini-riscv-os/05-Preemptive (master) +$ make qemu +Press Ctrl-A and then X to exit QEMU +qemu-system-riscv32 -nographic -smp 4 -machine virt -bios none -kernel os.elf +OS start +OS: Activate next task +Task0: Created! +Task0: Now, return to kernel mode +OS: Back to OS + +OS: Activate next task +Task1: Created! +Task1: Now, return to kernel mode +OS: Back to OS + +OS: Activate next task +Task0: Running... +Task0: Running... +Task0: Running... +timer_handler: 1 +OS: Back to OS + +OS: Activate next task +Task1: Running... +Task1: Running... +Task1: Running... +timer_handler: 2 +OS: Back to OS + +OS: Activate next task +Task0: Running... +Task0: Running... +Task0: Running... +timer_handler: 3 +OS: Back to OS + +OS: Activate next task +Task1: Running... +Task1: Running... +Task1: Running... +timer_handler: 4 +OS: Back to OS + +OS: Activate next task +Task0: Running... +Task0: Running... +Task0: Running... +timer_handler: 5 +OS: Back to OS + +OS: Activate next task +Task1: Running... +Task1: Running... +QEMU: Terminated +``` diff --git a/05-Preemptive/lib.c b/05-Preemptive/lib.c new file mode 100644 index 0000000..3538b9d --- /dev/null +++ b/05-Preemptive/lib.c @@ -0,0 +1,146 @@ +#include "lib.h" + +void lib_delay(volatile int count) +{ + count *= 50000; + while (count--); +} + +int lib_putc(char ch) { + while ((*UART_LSR & UART_LSR_EMPTY_MASK) == 0); + return *UART_THR = ch; +} + +void lib_puts(char *s) { + while (*s) lib_putc(*s++); +} + + +int lib_vsnprintf(char * out, size_t n, const char* s, va_list vl) +{ + int format = 0; + int longarg = 0; + size_t pos = 0; + for( ; *s; s++) { + if (format) { + switch(*s) { + case 'l': { + longarg = 1; + break; + } + case 'p': { + longarg = 1; + if (out && pos < n) { + out[pos] = '0'; + } + pos++; + if (out && pos < n) { + out[pos] = 'x'; + } + pos++; + } + case 'x': { + long num = longarg ? va_arg(vl, long) : va_arg(vl, int); + int hexdigits = 2*(longarg ? sizeof(long) : sizeof(int))-1; + for(int i = hexdigits; i >= 0; i--) { + int d = (num >> (4*i)) & 0xF; + if (out && pos < n) { + out[pos] = (d < 10 ? '0'+d : 'a'+d-10); + } + pos++; + } + longarg = 0; + format = 0; + break; + } + case 'd': { + long num = longarg ? va_arg(vl, long) : va_arg(vl, int); + if (num < 0) { + num = -num; + if (out && pos < n) { + out[pos] = '-'; + } + pos++; + } + long digits = 1; + for (long nn = num; nn /= 10; digits++) + ; + for (int i = digits-1; i >= 0; i--) { + if (out && pos + i < n) { + out[pos + i] = '0' + (num % 10); + } + num /= 10; + } + pos += digits; + longarg = 0; + format = 0; + break; + } + case 's': { + const char* s2 = va_arg(vl, const char*); + while (*s2) { + if (out && pos < n) { + out[pos] = *s2; + } + pos++; + s2++; + } + longarg = 0; + format = 0; + break; + } + case 'c': { + if (out && pos < n) { + out[pos] = (char)va_arg(vl,int); + } + pos++; + longarg = 0; + format = 0; + break; + } + default: + break; + } + } + else if(*s == '%') { + format = 1; + } + else { + if (out && pos < n) { + out[pos] = *s; + } + pos++; + } + } + if (out && pos < n) { + out[pos] = 0; + } + else if (out && n) { + out[n-1] = 0; + } + return pos; +} + +static char out_buf[1000]; // buffer for lib_vprintf() + +int lib_vprintf(const char* s, va_list vl) +{ + int res = lib_vsnprintf(NULL, -1, s, vl); + if (res+1 >= sizeof(out_buf)) { + lib_puts("error: lib_vprintf() output string size overflow\n"); + while(1) {} + } + lib_vsnprintf(out_buf, res + 1, s, vl); + lib_puts(out_buf); + return res; +} + +int lib_printf(const char* s, ...) +{ + int res = 0; + va_list vl; + va_start(vl, s); + res = lib_vprintf(s, vl); + va_end(vl); + return res; +} diff --git a/05-Preemptive/lib.h b/05-Preemptive/lib.h new file mode 100644 index 0000000..e338c8e --- /dev/null +++ b/05-Preemptive/lib.h @@ -0,0 +1,17 @@ +#ifndef __LIB_H__ +#define __LIB_H__ + +#include "riscv.h" +#include +#include + +#define lib_error(...) { lib_printf(__VA_ARGS__); while(1) {} } } + +extern void lib_delay(volatile int count); +extern int lib_putc(char ch); +extern void lib_puts(char *s); +extern int lib_printf(const char* s, ...); +extern int lib_vprintf(const char* s, va_list vl); +extern int lib_vsnprintf(char * out, size_t n, const char* s, va_list vl); + +#endif diff --git a/05-Preemptive/os.c b/05-Preemptive/os.c new file mode 100644 index 0000000..be5b1b2 --- /dev/null +++ b/05-Preemptive/os.c @@ -0,0 +1,27 @@ +#include "os.h" + +void os_kernel() { + task_os(); +} + +void os_start() { + lib_puts("OS start\n"); + user_init(); + timer_init(); // start timer interrupt ... +} + +int os_main(void) +{ + os_start(); + + int current_task = 0; + while (1) { + lib_puts("OS: Activate next task\n"); + task_go(current_task); + lib_puts("OS: Back to OS\n"); + current_task = (current_task + 1) % taskTop; // Round Robin Scheduling + lib_puts("\n"); + } + return 0; +} + diff --git a/05-Preemptive/os.h b/05-Preemptive/os.h new file mode 100644 index 0000000..2c802d9 --- /dev/null +++ b/05-Preemptive/os.h @@ -0,0 +1,13 @@ +#ifndef __OS_H__ +#define __OS_H__ + +#include "riscv.h" +#include "lib.h" +#include "task.h" +#include "timer.h" + +extern void user_init(); +extern void os_kernel(); +extern int os_main(void); + +#endif diff --git a/05-Preemptive/os.ld b/05-Preemptive/os.ld new file mode 100644 index 0000000..9c1a7df --- /dev/null +++ b/05-Preemptive/os.ld @@ -0,0 +1,46 @@ +OUTPUT_ARCH( "riscv" ) + +ENTRY( _start ) + +MEMORY +{ + ram (wxa!ri) : ORIGIN = 0x80000000, LENGTH = 128M +} + +PHDRS +{ + text PT_LOAD; + data PT_LOAD; + bss PT_LOAD; +} + +SECTIONS +{ + .text : { + PROVIDE(_text_start = .); + *(.text.init) *(.text .text.*) + PROVIDE(_text_end = .); + } >ram AT>ram :text + + .rodata : { + PROVIDE(_rodata_start = .); + *(.rodata .rodata.*) + PROVIDE(_rodata_end = .); + } >ram AT>ram :text + + .data : { + . = ALIGN(4096); + PROVIDE(_data_start = .); + *(.sdata .sdata.*) *(.data .data.*) + PROVIDE(_data_end = .); + } >ram AT>ram :data + + .bss :{ + PROVIDE(_bss_start = .); + *(.sbss .sbss.*) *(.bss .bss.*) + PROVIDE(_bss_end = .); + } >ram AT>ram :bss + + PROVIDE(_memory_start = ORIGIN(ram)); + PROVIDE(_memory_end = ORIGIN(ram) + LENGTH(ram)); +} diff --git a/05-Preemptive/riscv.h b/05-Preemptive/riscv.h new file mode 100644 index 0000000..27277bb --- /dev/null +++ b/05-Preemptive/riscv.h @@ -0,0 +1,116 @@ +#ifndef __RISCV_H__ +#define __RISCV_H__ + +#include + +#define reg_t uint32_t // RISCV32: register is 32bits +// define reg_t as uint64_t // RISCV64: register is 64bits + +// ref: https://www.activexperts.com/serial-port-component/tutorials/uart/ +#define UART 0x10000000 +#define UART_THR (uint8_t*)(UART+0x00) // THR:transmitter holding register +#define UART_LSR (uint8_t*)(UART+0x05) // LSR:line status register +#define UART_LSR_EMPTY_MASK 0x40 // LSR Bit 6: Transmitter empty; both the THR and LSR are empty + +// Saved registers for kernel context switches. +struct context { + reg_t ra; + reg_t sp; + + // callee-saved + reg_t s0; + reg_t s1; + reg_t s2; + reg_t s3; + reg_t s4; + reg_t s5; + reg_t s6; + reg_t s7; + reg_t s8; + reg_t s9; + reg_t s10; + reg_t s11; +}; + +// ref: https://github.com/mit-pdos/xv6-riscv/blob/riscv/kernel/riscv.h +// +// local interrupt controller, which contains the timer. +// ================== Timer Interrput ==================== + +#define NCPU 8 // maximum number of CPUs +#define CLINT 0x2000000 +#define CLINT_MTIMECMP(hartid) (CLINT + 0x4000 + 4*(hartid)) +#define CLINT_MTIME (CLINT + 0xBFF8) // cycles since boot. + +// which hart (core) is this? +static inline reg_t r_mhartid() +{ + reg_t x; + asm volatile("csrr %0, mhartid" : "=r" (x) ); + return x; +} + +// Machine Status Register, mstatus +#define MSTATUS_MPP_MASK (3 << 11) // previous mode. +#define MSTATUS_MPP_M (3 << 11) +#define MSTATUS_MPP_S (1 << 11) +#define MSTATUS_MPP_U (0 << 11) +#define MSTATUS_MIE (1 << 3) // machine-mode interrupt enable. + +static inline reg_t r_mstatus() +{ + reg_t x; + asm volatile("csrr %0, mstatus" : "=r" (x) ); + return x; +} + +static inline void w_mstatus(reg_t x) +{ + asm volatile("csrw mstatus, %0" : : "r" (x)); +} + +// machine exception program counter, holds the +// instruction address to which a return from +// exception will go. +static inline void w_mepc(reg_t x) +{ + asm volatile("csrw mepc, %0" : : "r" (x)); +} + +static inline reg_t r_mepc() +{ + reg_t x; + asm volatile("csrr %0, mepc" : "=r" (x)); + return x; +} + +// Machine Scratch register, for early trap handler +static inline void w_mscratch(reg_t x) +{ + asm volatile("csrw mscratch, %0" : : "r" (x)); +} + +// Machine-mode interrupt vector +static inline void w_mtvec(reg_t x) +{ + asm volatile("csrw mtvec, %0" : : "r" (x)); +} + +// Machine-mode Interrupt Enable +#define MIE_MEIE (1 << 11) // external +#define MIE_MTIE (1 << 7) // timer +#define MIE_MSIE (1 << 3) // software + +static inline reg_t r_mie() +{ + reg_t x; + asm volatile("csrr %0, mie" : "=r" (x) ); + return x; +} + +static inline void w_mie(reg_t x) +{ + asm volatile("csrw mie, %0" : : "r" (x)); +} + +#endif diff --git a/05-Preemptive/start.s b/05-Preemptive/start.s new file mode 100644 index 0000000..aec0240 --- /dev/null +++ b/05-Preemptive/start.s @@ -0,0 +1,26 @@ +.equ STACK_SIZE, 8192 + +.global _start + +_start: + # setup stacks per hart + csrr t0, mhartid # read current hart id + slli t0, t0, 10 # shift left the hart id by 1024 + la sp, stacks + STACK_SIZE # set the initial stack pointer + # to the end of the stack space + add sp, sp, t0 # move the current hart stack pointer + # to its place in the stack space + + # park harts with id != 0 + csrr a0, mhartid # read current hart id + bnez a0, park # if we're not on the hart 0 + # we park the hart + + j os_main # hart 0 jump to c + +park: + wfi + j park + +stacks: + .skip STACK_SIZE * 4 # allocate space for the harts stacks diff --git a/05-Preemptive/sys.h b/05-Preemptive/sys.h new file mode 100644 index 0000000..4355ab3 --- /dev/null +++ b/05-Preemptive/sys.h @@ -0,0 +1,8 @@ +#ifndef __SYS_H__ +#define __SYS_H__ + +#include "riscv.h" +extern void sys_timer(); +extern void sys_switch(struct context *ctx_old, struct context *ctx_new); + +#endif diff --git a/05-Preemptive/sys.s b/05-Preemptive/sys.s new file mode 100644 index 0000000..cf0fc4c --- /dev/null +++ b/05-Preemptive/sys.s @@ -0,0 +1,163 @@ +# This Code derived from xv6-riscv (64bit) +# -- https://github.com/mit-pdos/xv6-riscv/blob/riscv/kernel/swtch.S + +# ============ MACRO ================== +.macro ctx_save base + sw ra, 0(\base) + sw sp, 4(\base) + sw s0, 8(\base) + sw s1, 12(\base) + sw s2, 16(\base) + sw s3, 20(\base) + sw s4, 24(\base) + sw s5, 28(\base) + sw s6, 32(\base) + sw s7, 36(\base) + sw s8, 40(\base) + sw s9, 44(\base) + sw s10, 48(\base) + sw s11, 52(\base) +.endm + +.macro ctx_load base + lw ra, 0(\base) + lw sp, 4(\base) + lw s0, 8(\base) + lw s1, 12(\base) + lw s2, 16(\base) + lw s3, 20(\base) + lw s4, 24(\base) + lw s5, 28(\base) + lw s6, 32(\base) + lw s7, 36(\base) + lw s8, 40(\base) + lw s9, 44(\base) + lw s10, 48(\base) + lw s11, 52(\base) +.endm + +.macro reg_save base + # save the registers. + sw ra, 0(\base) + sw sp, 4(\base) + sw gp, 8(\base) + sw tp, 12(\base) + sw t0, 16(\base) + sw t1, 20(\base) + sw t2, 24(\base) + sw s0, 28(\base) + sw s1, 32(\base) + sw a0, 36(\base) + sw a1, 40(\base) + sw a2, 44(\base) + sw a3, 48(\base) + sw a4, 52(\base) + sw a5, 56(\base) + sw a6, 60(\base) + sw a7, 64(\base) + sw s2, 68(\base) + sw s3, 72(\base) + sw s4, 76(\base) + sw s5, 80(\base) + sw s6, 84(\base) + sw s7, 88(\base) + sw s8, 92(\base) + sw s9, 96(\base) + sw s10, 100(\base) + sw s11, 104(\base) + sw t3, 108(\base) + sw t4, 112(\base) + sw t5, 116(\base) + sw t6, 120(\base) +.endm + +.macro reg_load base + # restore registers. + lw ra, 0(\base) + lw sp, 4(\base) + lw gp, 8(\base) + # not this, in case we moved CPUs: lw tp, 12(\base) + lw t0, 16(\base) + lw t1, 20(\base) + lw t2, 24(\base) + lw s0, 28(\base) + lw s1, 32(\base) + lw a0, 36(\base) + lw a1, 40(\base) + lw a2, 44(\base) + lw a3, 48(\base) + lw a4, 52(\base) + lw a5, 56(\base) + lw a6, 60(\base) + lw a7, 64(\base) + lw s2, 68(\base) + lw s3, 72(\base) + lw s4, 76(\base) + lw s5, 80(\base) + lw s6, 84(\base) + lw s7, 88(\base) + lw s8, 92(\base) + lw s9, 96(\base) + lw s10, 100(\base) + lw s11, 104(\base) + lw t3, 108(\base) + lw t4, 112(\base) + lw t5, 116(\base) + lw t6, 120(\base) +.endm +# ============ Macro END ================== + +# Context switch +# +# void sys_switch(struct context *old, struct context *new); +# +# Save current registers in old. Load from new. + +.globl sys_switch +.align 4 +sys_switch: + ctx_save a0 # a0 => struct context *old + ctx_load a1 # a1 => struct context *new + ret # pc=ra; swtch to new task (new->ra) + +.globl sys_kernel +.align 4 +sys_kernel: + addi sp, sp, -128 + reg_save sp + call timer_handler # context switch ... + reg_load sp + addi sp, sp, 128 + jr a7 # jump to a7=mepc , return to timer break point + +.globl sys_timer +.align 4 +sys_timer: + # timer_init() has set up the memory that mscratch points to: + # scratch[0,4,8] : register save area. + # scratch[12] : address of CLINT's MTIMECMP register. + # scratch[16] : desired interval between interrupts. + + csrrw a0, mscratch, a0 # exchange(mscratch,a0) + sw a1, 0(a0) + sw a2, 4(a0) + sw a3, 8(a0) + + # schedule the next timer interrupt + # by adding interval to mtimecmp. + lw a1, 12(a0) # CLINT_MTIMECMP(hart) + lw a2, 16(a0) # interval + lw a3, 0(a1) # a3 = CLINT_MTIMECMP(hart) + add a3, a3, a2 # a3 += interval + sw a3, 0(a1) # CLINT_MTIMECMP(hart) = a3 + + csrr a7, mepc # a7 = mepc, for sys_kernel jump back to interrupted point + la a1, sys_kernel # mepc = sys_kernel + csrw mepc, a1 # mret : will jump to sys_kernel + + lw a3, 8(a0) + lw a2, 4(a0) + lw a1, 0(a0) + csrrw a0, mscratch, a0 # exchange(mscratch,a0) + + mret # jump to mepc (=sys_kernel) diff --git a/05-Preemptive/task.c b/05-Preemptive/task.c new file mode 100644 index 0000000..3316b00 --- /dev/null +++ b/05-Preemptive/task.c @@ -0,0 +1,30 @@ +#include "task.h" +#include "lib.h" + +uint8_t task_stack[MAX_TASK][STACK_SIZE]; +struct context ctx_os; +struct context ctx_tasks[MAX_TASK]; +struct context *ctx_now; +int taskTop=0; // total number of task + +// create a new task +int task_create(void (*task)(void)) +{ + int i=taskTop++; + ctx_tasks[i].ra = (reg_t) task; + ctx_tasks[i].sp = (reg_t) &task_stack[i][STACK_SIZE-1]; + return i; +} + +// switch to task[i] +void task_go(int i) { + ctx_now = &ctx_tasks[i]; + sys_switch(&ctx_os, &ctx_tasks[i]); +} + +// switch back to os +void task_os() { + struct context *ctx = ctx_now; + ctx_now = &ctx_os; + sys_switch(ctx, &ctx_os); +} diff --git a/05-Preemptive/task.h b/05-Preemptive/task.h new file mode 100644 index 0000000..1ac7e39 --- /dev/null +++ b/05-Preemptive/task.h @@ -0,0 +1,16 @@ +#ifndef __TASK_H__ +#define __TASK_H__ + +#include "riscv.h" +#include "sys.h" + +#define MAX_TASK 10 +#define STACK_SIZE 1024 + +extern int taskTop; + +extern int task_create(void (*task)(void)); +extern void task_go(int i); +extern void task_os(); + +#endif diff --git a/05-Preemptive/timer.c b/05-Preemptive/timer.c new file mode 100644 index 0000000..d77a134 --- /dev/null +++ b/05-Preemptive/timer.c @@ -0,0 +1,42 @@ +#include "timer.h" + +extern void os_kernel(); + +// a scratch area per CPU for machine-mode timer interrupts. +reg_t timer_scratch[NCPU][5]; + +void timer_init() +{ + // each CPU has a separate source of timer interrupts. + int id = r_mhartid(); + + // ask the CLINT for a timer interrupt. + // int interval = 1000000; // cycles; about 1/10th second in qemu. + int interval = 20000000; // cycles; about 2 second in qemu. + *(reg_t*)CLINT_MTIMECMP(id) = *(reg_t*)CLINT_MTIME + interval; + + // prepare information in scratch[] for timervec. + // scratch[0..2] : space for timervec to save registers. + // scratch[3] : address of CLINT MTIMECMP register. + // scratch[4] : desired interval (in cycles) between timer interrupts. + reg_t *scratch = &timer_scratch[id][0]; + scratch[3] = CLINT_MTIMECMP(id); + scratch[4] = interval; + w_mscratch((reg_t)scratch); + + // set the machine-mode trap handler. + w_mtvec((reg_t)sys_timer); + + // enable machine-mode interrupts. + w_mstatus(r_mstatus() | MSTATUS_MIE); + + // enable machine-mode timer interrupts. + w_mie(r_mie() | MIE_MTIE); +} + +static int timer_count = 0; + +void timer_handler() { + lib_printf("timer_handler: %d\n", ++timer_count); + os_kernel(); +} diff --git a/05-Preemptive/timer.h b/05-Preemptive/timer.h new file mode 100644 index 0000000..b971c37 --- /dev/null +++ b/05-Preemptive/timer.h @@ -0,0 +1,12 @@ +#ifndef __TIMER_H__ +#define __TIMER_H__ + +#include "riscv.h" +#include "sys.h" +#include "lib.h" +#include "task.h" + +extern void timer_handler(); +extern void timer_init(); + +#endif diff --git a/05-Preemptive/user.c b/05-Preemptive/user.c new file mode 100644 index 0000000..353d98a --- /dev/null +++ b/05-Preemptive/user.c @@ -0,0 +1,30 @@ +#include "os.h" + +void user_task0(void) +{ + lib_puts("Task0: Created!\n"); + lib_puts("Task0: Now, return to kernel mode\n"); + os_kernel(); + while (1) { + lib_puts("Task0: Running...\n"); + lib_delay(1000); + // os_kernel(); + } +} + +void user_task1(void) +{ + lib_puts("Task1: Created!\n"); + lib_puts("Task1: Now, return to kernel mode\n"); + os_kernel(); + while (1) { + lib_puts("Task1: Running...\n"); + lib_delay(1000); + // os_kernel(); + } +} + +void user_init() { + task_create(&user_task0); + task_create(&user_task1); +} diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..d5aa51a --- /dev/null +++ b/AUTHORS @@ -0,0 +1,5 @@ +mini-riscv-os is written by: + Chung-Chen Chen + +Copyrighted by: + National Quemoy University, Taiwan diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dd6e6f3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,26 @@ +mini-riscv-os is freely redistributable under the two-clause BSD License: + +Copyright (C) 2015-2018 National Quemoy University, Taiwan. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..a1fe130 --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# mini-riscv-os + +Build a minimal multi-tasking OS kernel for RISC-V from scratch + +Mini-riscv-os was inspired by [jserv](https://github.com/jserv)'s [mini-arm-os](https://github.com/jserv/mini-arm-os) project. + +However, [ccckmit](https://github.com/ccckmit) rewrite the project for RISC-V, and run on Win10 instead of Linux. + +## Prerequisites + +* Win10 : [git-bash](https://git-scm.com/download/win) + [FreedomStudio](https://www.sifive.com/software) + +After download and extract the FreedomStudio for windows. You have to set the system PATH to the folder of `riscv64-unknown-elf-gcc/bin` and `riscv-qemu/bin`. For example, I set PATH to the following folders. + +``` +D:\install\FreedomStudio-2020-06-3-win64\SiFive\riscv64-unknown-elf-gcc-8.3.0-2020.04.1\bin + +D:\install\FreedomStudio-2020-06-3-win64\SiFive\riscv-qemu-4.2.0-2020.04.0\bin +``` + +And you should start your git-bash to build the project. (It works for me in vscode bash terminal) + +## Steps + +* `01-HelloOs` + - Enable UART to print trivial greetings +* `02-ContextSwitch` + - Basic switch from OS to user task +* `03-Multitasking` + - Two user tasks are interatively switching +* `04-TimerInterrupt` + - Enable SysTick for future scheduler implementation +* `05-Preemptive` + - Basic preemptive scheduling + +## Building and Verification + +* Changes the current working directory to the specified one and then + +``` +make +make qemu +``` + +## Licensing + +`mini-riscv-os` is freely redistributable under the two-clause BSD License. +Use of this source code is governed by a BSD-style license that can be found +in the `LICENSE` file. + +## Reference + +* [Adventures in RISC-V](https://matrix89.github.io/writes/writes/experiments-in-riscv/) +* [Xv6, a simple Unix-like teaching operating system](https://pdos.csail.mit.edu/6.828/2020/xv6.html) diff --git a/doc/Background.md b/doc/Background.md new file mode 100644 index 0000000..07119f1 --- /dev/null +++ b/doc/Background.md @@ -0,0 +1,178 @@ +# 背景知識 + + +file:///D:/ccc109/sp/10-riscv/pdf/RISC-V-Reader-Chinese-v2p1.pdf + +101 頁 + +有三种标准的中断源:软件、时钟和外部来源。软件中断通过向内存映射寄存器中存数来触发,并通常用于由一个 hart 中断另一个 hart(在其他架构中称为处理器间中断机制)。当 hart 的时间比较器(一个名为 mtimecmp 的内存映射寄存器)大于实时计数器mtime 时,会触发时钟中断。。外部中断由平台级中断控制器(大多数外部设备连接到这个中断控制器)引发。不同的硬件平台具有不同的内存映射并且需要中断控制器的不同特性,因此用于发出和消除这些中断的机制因平台而异。所有 RISC-V 系统的共同问题是如何处理异常和屏蔽中断,这是下一节的主题。 + +10.3 机器模式下的异常处理 + +八个控制状态寄存器(CSR)是机器模式下异常处理的必要部分: + +* mtvec(Machine Trap Vector)它保存发生异常时处理器需要跳转到的地址。 +* mepc(Machine Exception PC)它指向发生异常的指令。 +* mcause(Machine Exception Cause)它指示发生异常的种类。 +* mie(Machine Interrupt Enable)它指出处理器目前能处理和必须忽略的中断。 +* mip(Machine Interrupt Pending)它列出目前正准备处理的中断。 +* mtval(Machine Trap Value)它保存了陷入(trap)的附加信息:地址例外中出错的地址、发生非法指令例外的指令本身,对于其他异常,它的值为 0。 +* mscratch(Machine Scratch)它暂时存放一个字大小的数据。 +* mstatus(Machine Status)它保存全局中断使能,以及许多其他的状态,如图10.4 所示。 + +处理器在 M 模式下运行时,只有在全局中断使能位 mstatus.MIE 置 1 时才会产生中断.此外,每个中断在控制状态寄存器 mie 中都有自己的使能位。这些位在 mie 中的位置,对应于图 10.3 中的中断代码。例如,mie[7]对应于 M 模式中的时钟中断。控制状态寄存器mip具有相同的布局,并且它指示当前待处理的中断。将所有三个控制状态寄存器合在一起考虑,如果 status.MIE = 1,mie[7] = 1,且 mip[7] = 1,则可以处理机器的时钟中断。 + +当一个 hart 发生异常时,硬件自动经历如下的状态转换: + +* 异常指令的 PC 被保存在 mepc 中,PC 被设置为 mtvec。(对于同步异常,mepc 指向导致异常的指令;对于中断,它指向中断处理后应该恢复执行的位置。) + * mepc = PC; PC = mtvec +* 根据异常来源设置 mcause(如图 10.3 所示),并将 mtval 设置为出错的地址或 者其它适用于特定异常的信息字。 +* 把控制状态寄存器 mstatus 中的 MIE 位置零以禁用中断,并把先前的 MIE 值保留到 MPIE 中。 +* 发生异常之前的权限模式保留在 mstatus 的 MPP 域中,再把权限模式更改为M。图 10.5 显示了 MPP 域的编码(如果处理器仅实现 M 模式,则有效地跳过这个步骤)。 + +为避免覆盖整数寄存器中的内容,中断处理程序先在最开始用 mscratch 和整数寄存器(例如 a0)中的值交换。通常,软件会让 mscratch 包含指向附加临时内存空间的指针,处理程序用该指针来保存其主体中将会用到的整数寄存器。在主体执行之后,中断程序会恢复它保存到内存中的寄存器,然后再次使用 mscratch 和 a0 交换,将两个寄存器恢复到它们在发生异常之前的值。 + +最后,处理程序用 mret 指令(M 模式特有的指令)返回。mret 将 PC 设置为 mepc,通过将 mstatus 的 MPIE 域复制到 MIE 来恢复之前的中断使能设置,并将权限模式设置为 mstatus 的 MPP 域中的值。这基本是前一段中描述的逆操作。 + +> mret: PC=mepc; mstatus:MIE=MPIE; + +图 10.6 展示了遵循此模式的基本时钟中断处理程序的 RISC-V 汇编代码。它只对时间比较器执行了递增操作,然后继续执行之前的任务。更实际的时钟中断处理程序可能会调用调度程序,从而在任务之间切换。它是非抢占的,因此在处理程序的过程中中断会被禁用。不考虑这些限制条件的话,它就是一个只有一页的 RISC-V 中断处理程序的完整示例! + +![](img/InterruptHandler.png) + +图 10.6;简单的 RISC-V 时钟中断处理程序代码。代码中假定了全局中断已通过置位 mstatus.MIE 启 +用;时钟中断已通过置位 mie[7]启用;mtvec CSR 已设置为此处理程序的入口地址;而且 mscratch +CSR 已经设置为有 16 个字节用于保存寄存器的临时空间的地址。第一部分保存了五个寄存器,把 a0 保存在 mscratch 中,a1 到 a4 保存在内存中。然后它检查 mcause 来读取异常的类别:如果 mcause<0 则是中断,反之则是同步异常。如果是中断,就检查 mcause 的低位是否等于 7,如果是,就是 M 模式的时钟中断。如果确定是时钟中断,就给时间比较器加上 1000 个时钟周期,于是下一个时钟中断会发生在大约 1000 个时钟周期之后。最后一段恢复了 a0 到 a4 和 mscratch,然后用 mret 指令返回。 + +默认情况下,发生所有异常(不论在什么权限模式下)的时候,控制权都会被移交到M 模式的异常处理程序。但是 Unix 系统中的大多数例外都应该进行 S 模式下的系统调用。M 模式的异常处理程序可以将异常重新导向 S 模式,但这些额外的操作会减慢大多数异常的处理速度。因此,RISC-V 提供了一种异常委托机制。通过该机制可以选择性地将中断和同步异常交给 S 模式处理,而完全绕过 M 模式。 + +mideleg(Machine Interrupt Delegation,机器中断委托)CSR 控制将哪些中断委托给 S模式。与 mip 和 mie 一样,mideleg 中的每个位对应于图 10.3 中相同的异常。例如,mideleg[5]对应于 S 模式的时钟中断,如果把它置位,S 模式的时钟中断将会移交 S 模式的异常处理程序,而不是 M 模式的异常处理程序。 + +委托给 S 模式的任何中断都可以被 S 模式的软件屏蔽。sie(Supervisor InterruptEnable,监管者中断使能)和 sip(Supervisor Interrupt Pending,监管者中断待处理)CSR是 S 模式的控制状态寄存器,他们是 mie 和 mip 的子集。它们有着和 M 模式下相同的布局,但在 sie 和 sip 中只有与由 mideleg 委托的中断对应的位才能读写。那些没有被委派的中断对应的位始终为零。 + +M 模式还可以通过 medeleg CSR 将同步异常委托给 S 模式。该机制类似于刚才提到的中断委托,但 medeleg 中的位对应的不再是中断,而是图 10.3 中的同步异常编码。例如,置上 medeleg[15]便会把 store page fault(store 过程中出现的缺页)委托给 S 模式。 + +请注意,无论委派设置是怎样的,发生异常时控制权都不会移交给权限更低的模式。 + +在 M 模式下发生的异常总是在 M 模式下处理。在 S 模式下发生的异常,根据具体的委派设置,可能由 M 模式或 S 模式处理,但永远不会由 U 模式处理。 + +S 模式有几个异常处理 CSR:sepc、stvec、scause、sscratch、stval 和 sstatus,它们执行与 10.2 中描述的 M 模式 CSR 相同的功能。图 10.9 显示了 sstatus 寄存器的布局。 + +监管者异常返回指令 sret 与 mret 的行为相同,但它作用于 S 模式的异常处理 CSR,而不是 M 模式的 CSR。 + +S 模式处理例外的行为已和 M 模式非常相似。如果 hart 接受了异常并且把它委派给了S 模式,则硬件会原子地经历几个类似的状态转换,其中用到了 S 模式而不是 M 模式的CSR: + +* 发生例外的指令的 PC 被存入 sepc,且 PC 被设置为 stvec。 +* scause 按图 10.3 根据异常类型设置,stval 被设置成出错的地址或者其它特定异常的信息字。 +* 把 sstatus CSR 中的 SIE 置零,屏蔽中断,且 SIE 之前的值被保存在 SPIE 中。 +* 发生例外时的权限模式被保存在 sstatus 的 SPP 域,然后设置当前模式为 S 模式。 + +## + +* https://github.com/RISCV-on-Microsemi-FPGA/RVBM-BootLoader/blob/master/src/riscv_hal/startup.S +* https://github.com/RISCV-on-Microsemi-FPGA/RVBM-BootLoader/blob/master/src/riscv_hal/entry.S +* https://github.com/RISCV-on-Microsemi-FPGA/RVBM-BootLoader/blob/master/src/interrupts.c + +```cpp +/****************************************************************************** + * RISC-V interrupt handler for machine timer interrupts. + *****************************************************************************/ +void handle_m_timer_interrupt(){ + + clear_csr(mie, MIP_MTIP); + + add_10ms_to_mtimecmp(); + + SysTick_Handler(); + + // Re-enable the timer interrupt. + set_csr(mie, MIP_MTIP); +} +``` + +```cpp +/*------------------------------------------------------------------------------ + * Count the number of elapsed milliseconds (SysTick_Handler is called every + * 10mS so the resolution will be 10ms). Rolls over every 49 days or so... + * + * Should be safe to read g_10ms_count from elsewhere. + */ +void SysTick_Handler(void) +{ + g_10ms_count += 10; + + /* + * For neatness, if we roll over, reset cleanly back to 0 so the count + * always goes up in proper 10s. + */ + if(g_10ms_count < 10) + g_10ms_count = 0; +} +``` + +```cpp +uintptr_t handle_trap(uintptr_t mcause, uintptr_t epc) +{ + if (0){ + // External Machine-Level Interrupt from PLIC + }else if ((mcause & MCAUSE_INT) && ((mcause & MCAUSE_CAUSE) == IRQ_M_EXT)) { + handle_m_ext_interrupt(); + }else if ((mcause & MCAUSE_INT) && ((mcause & MCAUSE_CAUSE) == IRQ_M_TIMER)) { + handle_m_timer_interrupt(); + } + else{ + write(1, "trap\n", 5); + _exit(1 + mcause); + } + return epc; +} +``` + +start.s + +```s +trap_entry: + addi sp, sp, -32*REGBYTES +... + csrr a0, mcause + csrr a1, mepc + mv a2, sp + jal handle_trap + csrw mepc, a0 + # Remain in M-mode after mret + li t0, MSTATUS_MPP + csrs mstatus, t0 +... + addi sp, sp, 32*REGBYTES + mret +``` + +* https://github.com/d0iasm/rvemu/blob/master/src/cpu.rs + +```rust +// mret +// "The RISC-V Reader" book says: +// "Returns from a machine-mode exception handler. Sets the pc to +// CSRs[mepc], the privilege mode to CSRs[mstatus].MPP, +// CSRs[mstatus].MIE to CSRs[mstatus].MPIE, and CSRs[mstatus].MPIE +// to 1; and, if user mode is supported, sets CSRs[mstatus].MPP to 0". +``` + +* RISC-V-Reader-Chinese-v2p1.pdf + +* mret ExceptionReturn(Machine) + * 机器模式异常返回(Machine-mode Exception Return). R-type, RV32I and RV64I 特权架构从机器模式异常处理程序返回。将 pc 设置为 CSRs[mepc], 将特权级设置成 CSRs[mstatus].MPP, CSRs[mstatus].MIE 置成 CSRs[mstatus].MPIE, 并且将 CSRs[mstatus].MPIE 为 1;并且,如果支持用户模式,则将 CSR [mstatus].MPP 设置为 0。 + +```cpp + // set the machine-mode trap handler. + w_mtvec((reg_t)sys_timer); +``` + +```cpp +// Machine-mode interrupt vector +static inline void w_mtvec(reg_t x) +{ + asm volatile("csrw mtvec, %0" : : "r" (x)); +} +``` + diff --git a/doc/Threads.md b/doc/Threads.md new file mode 100644 index 0000000..91a0582 --- /dev/null +++ b/doc/Threads.md @@ -0,0 +1,83 @@ + + + +像是 07-thread 裏使用了 tcb_t + +```cpp +/* Thread Control Block */ +typedef struct { + void *stack; + void *orig_stack; + uint8_t in_use; +} tcb_t; + +static tcb_t tasks[MAX_TASKS]; +static int lastTask; + +``` + +還有用了一大堆組合語言 + +```cpp +void __attribute__((naked)) thread_start() +{ + lastTask = 0; + + /* Reset APSR before context switch. + * Make sure we have a _clean_ PSR for the task. + */ + asm volatile("mov r0, #0\n" + "msr APSR_nzcvq, r0\n"); + /* To bridge the variable in C and the register in ASM, + * move the task's stack pointer address into r0. + * http://www.ethernut.de/en/documents/arm-inline-asm.html + */ + asm volatile("mov r0, %0\n" : : "r" (tasks[lastTask].stack)); + asm volatile("msr psp, r0\n" + "mov r0, #3\n" + "msr control, r0\n" + "isb\n"); + /* This is how we simulate stack handling that pendsv_handler + * does. Thread_create sets 17 entries in stack, and the 9 + * entries we pop here will be pushed back in pendsv_handler + * in the same order. + * + * + * pop {r4-r11, lr} + * ldr r0, [sp] + * stack + * offset ------- + * | 16 | <- Reset value of PSR + * ------- + * | 15 | <- Task entry + * ------- + * | 14 | <- LR for task + * ------- + * | ... | register + * ------- ------- + * | 9 | <- Task argument ----> | r0 | + * psp after pop--< ------- + * | 8 | <- EXC_RETURN ----> | lr | + * ------- ------- + * | 7 | | r11 | + * ------- ------- + * | ... | | ... | + * ------- ------- + * | 0 | | r4 | + * psp -> ------- ------- + * + * Instead of "pop {r0}", use "ldr r0, [sp]" to ensure consistent + * with the way how PendSV saves _old_ context[1]. + */ + asm volatile("pop {r4-r11, lr}\n" + "ldr r0, [sp]\n"); + /* Okay, we are ready to run first task, get address from + * stack[15]. We just pop 9 register so #24 comes from + * (15 - 9) * sizeof(entry of sp) = 6 * 4. + */ + asm volatile("ldr pc, [sp, #24]\n"); + + /* Never reach here */ + while(1); +} +``` \ No newline at end of file diff --git a/doc/Uart.md b/doc/Uart.md new file mode 100644 index 0000000..f7519b8 --- /dev/null +++ b/doc/Uart.md @@ -0,0 +1,5 @@ +# Uart + +* https://www.activexperts.com/serial-port-component/tutorials/uart/ +* https://www.maxlinear.com/Files/Documents/Intro_To_UARTs.pdf +* https://twilco.github.io/riscv-from-scratch/2019/07/08/riscv-from-scratch-3.html diff --git a/doc/freeRtosRef.md b/doc/freeRtosRef.md new file mode 100644 index 0000000..005fe75 --- /dev/null +++ b/doc/freeRtosRef.md @@ -0,0 +1,101 @@ +# FreeRTOS + +* https://github.com/illustris/FreeRTOS-RISCV/blob/master/Source/portable/GCC/RISCV/port.c + +```cpp +/*-----------------------------------------------------------*/ + +void vPortSysTickHandler( void ) +{ + prvSetNextTimerInterrupt(); + + /* Increment the RTOS tick. */ + if( xTaskIncrementTick() != pdFALSE ) + { + vTaskSwitchContext(); + } +} +/*-----------------------------------------------------------*/ +``` + +* https://github.com/illustris/FreeRTOS-RISCV/blob/master/Source/portable/GCC/RISCV/portasm.S + +```s +vPortYield: + /* + * This routine can be called from outside of interrupt handler. This means + * interrupts may be enabled at this point. This is probably okay for registers and + * stack. However, "mepc" will be overwritten by the interrupt handler if a timer + * interrupt happens during the yield. To avoid this, prevent interrupts before starting. + * The write to mstatus in the restore context routine will enable interrupts after the + * mret. A more fine-grain lock may be possible. + */ + csrci mstatus, 8 + + portSAVE_CONTEXT + portSAVE_RA + jal vTaskSwitchContext + portRESTORE_CONTEXT +``` + +* https://github.com/illustris/FreeRTOS-RISCV/blob/master/Source/tasks.c + +```cpp +void vTaskSwitchContext( void ) +{ + if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE ) + { + /* The scheduler is currently suspended - do not allow a context + switch. */ + xYieldPending = pdTRUE; + } + else + { + xYieldPending = pdFALSE; + traceTASK_SWITCHED_OUT(); + + #if ( configGENERATE_RUN_TIME_STATS == 1 ) + { + #ifdef portALT_GET_RUN_TIME_COUNTER_VALUE + portALT_GET_RUN_TIME_COUNTER_VALUE( ulTotalRunTime ); + #else + ulTotalRunTime = portGET_RUN_TIME_COUNTER_VALUE(); + #endif + + /* Add the amount of time the task has been running to the + accumulated time so far. The time the task started running was + stored in ulTaskSwitchedInTime. Note that there is no overflow + protection here so count values are only valid until the timer + overflows. The guard against negative values is to protect + against suspect run time stat counter implementations - which + are provided by the application, not the kernel. */ + if( ulTotalRunTime > ulTaskSwitchedInTime ) + { + pxCurrentTCB->ulRunTimeCounter += ( ulTotalRunTime - ulTaskSwitchedInTime ); + } + else + { + mtCOVERAGE_TEST_MARKER(); + } + ulTaskSwitchedInTime = ulTotalRunTime; + } + #endif /* configGENERATE_RUN_TIME_STATS */ + + /* Check for stack overflow, if configured. */ + taskCHECK_FOR_STACK_OVERFLOW(); + + /* Select a new task to run using either the generic C or port + optimised asm code. */ + taskSELECT_HIGHEST_PRIORITY_TASK(); + traceTASK_SWITCHED_IN(); + + #if ( configUSE_NEWLIB_REENTRANT == 1 ) + { + /* Switch Newlib's _impure_ptr variable to point to the _reent + structure specific to this task. */ + _impure_ptr = &( pxCurrentTCB->xNewLib_reent ); + } + #endif /* configUSE_NEWLIB_REENTRANT */ + } +} +``` diff --git a/doc/img/InterruptHandler.png b/doc/img/InterruptHandler.png new file mode 100644 index 0000000000000000000000000000000000000000..dfefc37a79a86c93d125802cc66f14d7487629db GIT binary patch literal 304894 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

  • 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ν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�(>xJa##7B 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 literal 0 HcmV?d00001 diff --git a/doc/xv6ref.md b/doc/xv6ref.md new file mode 100644 index 0000000..bc6886f --- /dev/null +++ b/doc/xv6ref.md @@ -0,0 +1,101 @@ +# xv6 參考 + +当 xv6 内核在 CPU 上执行时,可能会发生两种类型的陷阱:异常和设备中断。上一节概述了 CPU 对此类陷阱的响应。 + +当内核执行时,它指向汇编代码 kernelvec (kernel/kernelve.S:10)。由于xv6已经在内核中,因此kernelvec可以依赖于将`satp`设置为内核页表,并依赖于引用有效内核堆栈的堆栈指针。kernelvec保存所有寄存器,这样我们最终可以恢复中断的代码,而不会干扰它。 + + +*** +kernelvec将寄存器保存在中断的内核线程的堆栈上,这是有意义的,因为寄存器值属于该线程。如果陷阱导致切换到不同的线程,这一点尤其重要 - 在这种情况下,陷阱实际上会返回到新线程的堆栈上,将被中断线程的已保存寄存器安全地留在其堆栈上。 +*** + +kernelvec在保存寄存器后跳转到kerneltrap(kernel/trap.c:134)。kerneltrap为两种类型的陷阱做好准备:设备中断和异常。它调用sdevintr(kernel/trap.c:177)来检查和处理前者。如果陷阱不是设备中断,那么它就是一个异常,如果它发生在内核中,那总是一个致命的错误。 + +## supervisor mode & mret + +File: start.c + +```cpp +// entry.S jumps here in machine mode on stack0. +void +start() +{ + // set M Previous Privilege mode to Supervisor, for mret. + unsigned long x = r_mstatus(); + x &= ~MSTATUS_MPP_MASK; + x |= MSTATUS_MPP_S; + w_mstatus(x); + + // set M Exception Program Counter to main, for mret. + // requires gcc -mcmodel=medany + w_mepc((uint64)main); + + // disable paging for now. + w_satp(0); + + // delegate all interrupts and exceptions to supervisor mode. + w_medeleg(0xffff); + w_mideleg(0xffff); + + // ask for clock interrupts. + timerinit(); + + // keep each CPU's hartid in its tp register, for cpuid(). + int id = r_mhartid(); + w_tp(id); + + // switch to supervisor mode and jump to main(). + asm volatile("mret"); +} + +``` + +File: main.c + +```cpp +#include "types.h" +#include "param.h" +#include "memlayout.h" +#include "riscv.h" +#include "defs.h" + +volatile static int started = 0; + +// start() jumps here in supervisor mode on all CPUs. +void +main() +{ + if(cpuid() == 0){ + consoleinit(); + printfinit(); + printf("\n"); + printf("xv6 kernel is booting\n"); + printf("\n"); + kinit(); // physical page allocator + kvminit(); // create kernel page table + kvminithart(); // turn on paging + procinit(); // process table + trapinit(); // trap vectors + trapinithart(); // install kernel trap vector + plicinit(); // set up interrupt controller + plicinithart(); // ask PLIC for device interrupts + binit(); // buffer cache + iinit(); // inode cache + fileinit(); // file table + virtio_disk_init(); // emulated hard disk + userinit(); // first user process + __sync_synchronize(); + started = 1; + } else { + while(started == 0) + ; + __sync_synchronize(); + printf("hart %d starting\n", cpuid()); + kvminithart(); // turn on paging + trapinithart(); // install kernel trap vector + plicinithart(); // ask PLIC for device interrupts + } + + scheduler(); +} +``` \ No newline at end of file