Page 1 of 2

Driver bounties?

Posted: Thu Mar 24, 2011 8:38 am
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

Re: Driver bounties?

Posted: Thu Mar 24, 2011 9:02 am
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.

Re: Driver bounties?

Posted: Thu Mar 24, 2011 10:42 am
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...)

Re: Driver bounties?

Posted: Thu Mar 24, 2011 4:22 pm
by JackScott
Or you could implement the kernel-side interface for one of the generic driver interfaces (UDI, CDI, EDI, etc.)... *ducks*

Re: Driver bounties?

Posted: Thu Mar 24, 2011 4:41 pm
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.)

Re: Driver bounties?

Posted: Thu Mar 24, 2011 7:04 pm
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 :).

Re: Driver bounties?

Posted: Thu Mar 24, 2011 8:01 pm
by Jezze
@pcmattman: It might not be all together that easy... check this out: http://bit.ly/bQepg7

Re: Driver bounties?

Posted: Thu Mar 24, 2011 8:40 pm
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

Re: Driver bounties?

Posted: Sat Apr 02, 2011 8:44 am
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

Re: Driver bounties?

Posted: Sat Apr 02, 2011 11:23 am
by x64
For pure 64 bit drivers, you could contact Menuet64 developers for sharing code.

http://www.menuetos.net

Re: Driver bounties?

Posted: Sun Apr 03, 2011 12:36 pm
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

Re: Driver bounties?

Posted: Sun Apr 03, 2011 5:39 pm
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.

Re: Driver bounties?

Posted: Tue Apr 05, 2011 3:17 am
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 :)

Re: Driver bounties?

Posted: Mon Apr 18, 2011 8:24 am
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

Re: Driver bounties?

Posted: Mon Apr 18, 2011 8:43 am
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