Driver bounties?

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
User avatar
IanSeyler
Member
Member
Posts: 326
Joined: Mon Jul 28, 2008 9:46 am
Location: Ontario, Canada
Contact:

Driver bounties?

Post by IanSeyler »

Our BareMetal OS projects is moving along but one thing that is lacking is Ethernet drivers. Currently the only supported NICs are ones using the Realtek 8139 chipset. The 8139 driver works well but it is getting harder to find the hardware and the hardware only supports up to 100mbit.

We were thinking of offering a bounty for anyone who provides an additional driver for BareMetal OS. Ideally we would like support for the Realtek 8169/8118 and the Intel 8255x series (Both of these are gigabit chipsets). The drivers would need to be written in x86-64 Assembly and provide several basic commands (init the chipset, reset the chipset, send a frame, poll for a received frame). The drivers that are written would be open-source and added to the BareMetal OS repository.

Is there any interest in this? What could be offered to the developer? We were also thinking a bonus could be offered for writing some docs in the OSDev wiki to help others with writing driver for those specific chipsets.

Thanks,
- Ian Seyler
Last edited by IanSeyler on Thu Mar 24, 2011 11:34 am, edited 2 times in total.
BareMetal OS - http://www.returninfinity.com/
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
User avatar
Jezze
Member
Member
Posts: 395
Joined: Thu Jul 26, 2007 1:53 am
Libera.chat IRC: jfu
Contact:

Re: Driver bounties?

Post by Jezze »

Unless you find people interested in this which might not prove to be impossible I think it could be a good idea to not force them to write the drivers in assembly. Drivers are not part of the kernel so the kernel would still be looked upon as a pure assembly kernel.

I'm just saying it could prove easier for you to find people if you relax the strict assembly rules and let them develop drivers in C instead and it might also let you look at porting drivers from other projects that already have these drivers.
Fudge - Simplicity, clarity and speed.
http://github.com/Jezze/fudge/
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: Driver bounties?

Post by Combuster »

you can always gcc -S for the sake of it :twisted:

Anyhow, how about you modifying your driver to work on someone else's OS in exchange for getting a new driver? Sounds like a nice deal. (If only I would spend the time to stabilize the driver interface...)
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
User avatar
JackScott
Member
Member
Posts: 1031
Joined: Thu Dec 21, 2006 3:03 am
Location: Hobart, Australia
Contact:

Re: Driver bounties?

Post by JackScott »

Or you could implement the kernel-side interface for one of the generic driver interfaces (UDI, CDI, EDI, etc.)... *ducks*
TylerH
Member
Member
Posts: 285
Joined: Tue Apr 13, 2010 8:00 pm
Contact:

Re: Driver bounties?

Post by TylerH »

Combuster wrote:you can always gcc -S for the sake of it :twisted:

Anyhow, how about you modifying your driver to work on someone else's OS in exchange for getting a new driver? Sounds like a nice deal. (If only I would spend the time to stabilize the driver interface...)
Nice deal, but steep learning curve. :P (Unless you both agree to Jack's idea.)
pcmattman
Member
Member
Posts: 2566
Joined: Sun Jan 14, 2007 9:15 pm
Libera.chat IRC: miselin
Location: Sydney, Australia (I come from a land down under!)
Contact:

Re: Driver bounties?

Post by pcmattman »

If you removed the assembly-only restriction I'm sure you'd have a lot more interest. Monetary or other similar incentives are a great way to get hobbyists motivated, after all :).
User avatar
Jezze
Member
Member
Posts: 395
Joined: Thu Jul 26, 2007 1:53 am
Libera.chat IRC: jfu
Contact:

Re: Driver bounties?

Post by Jezze »

@pcmattman: It might not be all together that easy... check this out: http://bit.ly/bQepg7
Fudge - Simplicity, clarity and speed.
http://github.com/Jezze/fudge/
User avatar
IanSeyler
Member
Member
Posts: 326
Joined: Mon Jul 28, 2008 9:46 am
Location: Ontario, Canada
Contact:

Re: Driver bounties?

Post by IanSeyler »

We would rather stick with Assembly since the rest of the OS is Assembly.

What would be ideal to offer a developer?

I'm thinking the Intel 8255x would be the "easiest" to target since Intel published a driver developer doc for it.

Thanks,
- Ian Seyler
BareMetal OS - http://www.returninfinity.com/
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
hidnplayr
Posts: 23
Joined: Sat Aug 09, 2008 5:07 pm

Re: Driver bounties?

Post by hidnplayr »

Hello ReturnInfinity,

I think you are confusing i8255x and i8254x, the first is 100mbit card, second is gigabit.

I myself am working on network stack/drivers for kolibrios, written in 32bit fasm.
you can find available drivers and other info on this wiki: http://wiki.kolibrios.org/wiki/New_stack#Drivers
code is on svn server: svn://kolibrios.org/kernel/branches/net

I could help you out, if i had a 64-bit PC (I have one, but it's a laptop, and that doesnt take all those PCI cards ;) )
Or, you are offcourse free to find some inspiration in the source code.

hidnplayr
x64
Posts: 13
Joined: Sat Apr 02, 2011 11:19 am

Re: Driver bounties?

Post by x64 »

For pure 64 bit drivers, you could contact Menuet64 developers for sharing code.

http://www.menuetos.net
User avatar
IanSeyler
Member
Member
Posts: 326
Joined: Mon Jul 28, 2008 9:46 am
Location: Ontario, Canada
Contact:

Re: Driver bounties?

Post by IanSeyler »

My mistake, I was meaning to refer to the i8254x (gigabit). After a i8254x driver is completed the next one will be Realtek's 8169.

So far the i8254x driver is able to detect the NIC's MAC address. I am testing it under VMware at the moment. The progress can be seen here: http://code.google.com/p/baremetal/sour ... i8254x.asm

Send and receive functions have not been written yet.

As for Menuet64 their compatibility list only mentions 2 very old 100mbit cards.

Thanks,
-Ian
BareMetal OS - http://www.returninfinity.com/
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
User avatar
bewing
Member
Member
Posts: 1401
Joined: Wed Feb 07, 2007 1:45 pm
Location: Eugene, OR, US

Re: Driver bounties?

Post by bewing »

I'm tempted, and I've got no problem with the ASM aspect -- but, as above, my access to any such hardware to test on is minimal.
User avatar
gravaera
Member
Member
Posts: 737
Joined: Tue Jun 02, 2009 4:35 pm
Location: Supporting the cause: Use \tabs to indent code. NOT \x20 spaces.

Re: Driver bounties?

Post by gravaera »

Jezze wrote:@pcmattman: It might not be all together that easy... check this out: http://bit.ly/bQepg7
Thanks for this link: I liked the presentation very much :)
17:56 < sortie> Paging is called paging because you need to draw it on pages in your notebook to succeed at it.
User avatar
IanSeyler
Member
Member
Posts: 326
Joined: Mon Jul 28, 2008 9:46 am
Location: Ontario, Canada
Contact:

Re: Driver bounties?

Post by IanSeyler »

We developed an i8254x driver ourselves. The source can be seen here: http://code.google.com/p/baremetal/sour ... i8254x.asm

It works well within VirtualBox but not in VMware. QEMU seems to be ok but it does not detect the MAC address.

When I get some time I will try to update the wiki: http://wiki.osdev.org/Intel_8254x

I have purchased some physical cards from eBay and will do additional testing with them when they arrive.

Thanks,
-Ian
BareMetal OS - http://www.returninfinity.com/
Mono-tasking 64-bit OS for x86-64 based computers, written entirely in Assembly
hidnplayr
Posts: 23
Joined: Sat Aug 09, 2008 5:07 pm

Re: Driver bounties?

Post by hidnplayr »

Looks pretty good (I read it diagonally)

on line 215 i see this code:

Code: Select all

	bts rax, 24				; EOP
	bts rax, 25				; IFCS
	bts rax, 27				; RS
Why didnt you use

Code: Select all

        or  rax, 1 shl 24 + 1 shl 25 + 1 shl 26
or even smaller (and same speed?):

Code: Select all

        or  eax, 1 shl 24 + 1 shl 25 + 1 shl 26
Post Reply