OSDev.org
https://forum.osdev.org/

Hardware tutorial
https://forum.osdev.org/viewtopic.php?f=1&t=32431
Page 1 of 1

Author:  Coconut9 [ Wed Sep 20, 2017 12:01 pm ]
Post subject:  Hardware tutorial

I would like to learn how to use the camera,audio,network,microphone... (internal on a laptop or from usb generally) is there any tutorial to explain this think?

Author:  Korona [ Wed Sep 20, 2017 12:38 pm ]
Post subject:  Re: Hardware tutorial

That question is way to general to be answered. Use the search function. Check the wiki for certain hardware components. Start with something easy and then build from that.

Author:  obiwac [ Wed Sep 20, 2017 12:57 pm ]
Post subject:  Re: Hardware tutorial

I don't wanna sound rude or anything, but I don't feel like you are quite ready for osdev yet. You seem to have no clue about how a computer works at a lower level. It's not as easy as you may think it is, judging by your question.

Author:  Brendan [ Thu Sep 21, 2017 8:29 am ]
Post subject:  Re: Hardware tutorial

Hi,

ARISTOS wrote:
I would like to learn how to use the camera,audio,network,microphone... (internal on a laptop or from usb generally) is there any tutorial to explain this think?


There's no tutorial.

My approach is to pick one specific type of thing (e.g. audio), then spend several weeks researching and thinking about the higher level requirements - things like the ability to give sounds a virtual 3D position and possibly trajectory (doppler effect), a way to determine the physical speaker's characteristics (location relative to end user, frequency response curves), a way to map "virtual 3D position of sound" and the pitch of the sound onto available speakers (left/right/front/back, treble/mid-range/bass?), some sort of "sound effect processor" plugins/modules, etc. Then I'd design the higher level parts (the interface that applications would use, something to intelligently direct sounds to whichever sound cards are present, etc). Then I'd design the lower level device driver interface (how device drivers will communicate with the higher level parts).

Once all that is done (and the low level device driver interface is designed) I'd look into writing device drivers, beginning with finding a list of specific devices I have (there's no point writing a device driver that you can't test) then sorting that list in order of best "documentation + market share - complexity" and picking whatever is at the top of the list.

At this point I'll have specification/s for the "device driver software interface" (that I designed) on one side, and specifications/documentation for the "device hardware interface" (that the device manufacturer designed) on the other side. Writing a device driver is mostly about writing whatever glue is needed between these interfaces.

Of course a device driver also depends on "bus specific" things (e.g. PCI enumeration if it's a PCI device, USB enumeration and the interface drivers use to communicate with USB controller drivers if it's a USB device, whatever ugly hack you needed to work around the lack of "plug and play" if it's an ISA device, etc); and will also depend on functionality provided by kernel (some way to communicate, memory management, scheduler, IRQ handling, IO port and memory mapped IO resource management, etc). All of the things that a device driver depends on should exist before you start thinking about writing a device driver.


Cheers,

Brendan

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/