Skip to content

rwardd/zip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published