-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreadme
More file actions
60 lines (49 loc) · 1.44 KB
/
readme
File metadata and controls
60 lines (49 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
zip rtos
===
Assumes `qemu-system-riscv32` is installed on the host machine
To start:
`$ zig build run`
To start qemu in debug mode (will spawn gdb server and wait for remote connection):
`$ zig build run -Ddebug`
No dependencies, not even the zig std library (apart from the build process of course).
Basic scheduler working:
- Pathetic RR scheduling
- Tasks have to yield themselves (coop multitasking)
- Functions on risc-v 32 virt qemu, arm cortex m0
in progress:
- Getting to boot on RP2040 (RPI Pico)
- Once running on RPI hardware, will implement proper scheduling, IPC, maybe some basic TLS.
- Want to get some basic protocol drivers up and running for displays/sensors etc.
Next up:
- start writing some tests (urgent)
- Put thread stacks in own linker section
Notes:
Start with microkernel. Implement barebones for basic scheduling and i/o.
Get it running on softcore rv32.
Maybe will move to monolithic design.
Statically allocate tasks for now
todo:
- Create basic kernel memory allocator
- just use static pool for now
- allocate tcb in pool upon task creation
- store sp/pc
todo: everything
- thread creation
- just do compile time for now
- thread memory
- tls
- thread memory arenas?
- thread scheduler
- most threads should run in ring 0? No syscalls?
instead implement a check before calling syscall fns
- timers
- hardware
- softare
- atomics
- serial logger
- mempool/arena/slab?
- ipc
- message queue
- semaphore
- mutex
- queue