Drivers Roadmap - Help Needed!

nakst  —  3 weeks ago [Edited 0 minutes later]
Hello all. I haven't made a blog post in quite a while since I've been very busy recently, but luckily things are back to normal and hopefully progress can resume at its original pace.

I've drafted a roadmap of all the drivers that I think a functional operating system needs, and marked which ones are already usable.

 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
Buses
	PCI - Usable
	USB
	I2C
Human interface devices
	PS2 - Usable
	USB mouse/keyboard
Storage
	ATA - Usable
	ATAPI (CD/DVD drives)
	SATA
	USB mass storage devices
Filesystems
	EsFS - Essence's custom filesystem
	FAT12 - Read only
	FAT32
	NTFS
	ext4
Sound
	Intel HD Audio
	AC97
Graphics (these are too complex to write from scratch, will need to be ported)
	VGA w/ software rendering - Usable
	BIOS mode setting w/ software rendering - Usable
	UEFI mode setting w/ software rendering - Usable
	Nvidia - Started port of kernel platform layer
	Intel
	AMD
Networking
	Network cards
	Protocol stack
	Wifi
	Bluetooth
CPU architectures
	AMD64 - The currently only available platform; SMP working
	x86 - Maybe??
	ARM processors
Misc
	ACPI - Finished port of ACPICA but no power management features
	Raspberry Pi, Arduino, etc.


Currently I think the highest priority are SATA, ATAPI, USB mouse/keyboard and USB mass storage devices. These shouldn't be too difficult to implement.

We also need to work out a solution for graphics and network cards. I know relatively little about these topics, but I presume that these drivers will have to be ported from Linux. If you have experience working with the Linux graphics or networking stacks, your help will be much appreciated!

It'd also be nice to have audio drivers, a few more filesystems, and support for other platforms like ARM, but these are low priority.

I'm now working on a rewrite of all the userland code (I have gained a lot of experience since writing the original code), so I don't have much time to work on drivers. This means I really need contributions from other people to help develop Essence. All the drivers I've separated from the main kernel unity build are in this folder https://bitbucket.org/nakst/essence/src/master/drivers/. These should serve a good introduction into working with the kernel and writing drivers for it.

I highly recommend you join the #essence discord channel on the handmade network guild if you are interested in contributing to the project.

Thank you!!
Log in to comment