Best Resource for the information
-
Hello All, Which is the best place to look for the information about the various facts technology about hardware. I am an application programmer with a very limited knowledge of how we access the hardware through software. Basically what I need to learn is the basic knowledge about various topics as PCI buses (want to undersatand what bus-function-device-offset way of reading PCI space), ISa, SPD, SMBus etc etc. I am able to download specification documents for each of above mentioend technology bit they are very detailed and indepth. What exactlly I am looking for is brief and to the point stuff for a programmer. Pleas help Thanks
-
Hello All, Which is the best place to look for the information about the various facts technology about hardware. I am an application programmer with a very limited knowledge of how we access the hardware through software. Basically what I need to learn is the basic knowledge about various topics as PCI buses (want to undersatand what bus-function-device-offset way of reading PCI space), ISa, SPD, SMBus etc etc. I am able to download specification documents for each of above mentioend technology bit they are very detailed and indepth. What exactlly I am looking for is brief and to the point stuff for a programmer. Pleas help Thanks
vikrantc1355 wrote:
What exactlly I am looking for is brief and to the point stuff for a programmer.
The average programmer doesn't need to know this stuff. The hardware, in conjunction with its driver and the OS, expose an interface to the user-mode world which is used to access the hardware - things like a drive letter, a custom IOCTL, a com port indicator (COMx), ... User-mode programs use that to communicate with the hardware. If you're looking at actually talking to the hardware, you're entering the realm of writing a device driver. "Brief and to the point stuff" for this subject doesn't exist. How a driver talks to a piece of hardware depends on each piece of hardware, and the operating system it is written for. This is not a simple straight-forward subject. Here's my usual list that I give when asked about info on device drivers. The WDK itself - documentation andthe samples are improving but it assumes you already have a good knowledge of the OS "Programming the Windows Driver Model" 2nd ed by Walter Oney - make sure it is the 2nd edition "Microsoft Windows Internals, Fourth Edition: Microsoft Windows Server(TM) 2003, Windows XP, and Windows 2000" by Mark Russinovich and David Solomon "Windows NT Device Driver Development" by Peter Viscarola and Tony Mason - dated but the stuff they discuss hasn't changed and it's a good foundation. "Developing Drivers with the Windows® Driver Foundation" by Penny Orwick and Guy Smith - this one is from Microsoft Press and is the only book currently published with a good description of KMDF This one should be excellent (if they ever get it published) "Introduction to the Windows Driver Foundation Kernel Mode Driver Framework " by Peter Viscarola, Tony Mason, Mark Cariddi, Brenda Ryan, Scott Noone, and OSR
-
vikrantc1355 wrote:
What exactlly I am looking for is brief and to the point stuff for a programmer.
The average programmer doesn't need to know this stuff. The hardware, in conjunction with its driver and the OS, expose an interface to the user-mode world which is used to access the hardware - things like a drive letter, a custom IOCTL, a com port indicator (COMx), ... User-mode programs use that to communicate with the hardware. If you're looking at actually talking to the hardware, you're entering the realm of writing a device driver. "Brief and to the point stuff" for this subject doesn't exist. How a driver talks to a piece of hardware depends on each piece of hardware, and the operating system it is written for. This is not a simple straight-forward subject. Here's my usual list that I give when asked about info on device drivers. The WDK itself - documentation andthe samples are improving but it assumes you already have a good knowledge of the OS "Programming the Windows Driver Model" 2nd ed by Walter Oney - make sure it is the 2nd edition "Microsoft Windows Internals, Fourth Edition: Microsoft Windows Server(TM) 2003, Windows XP, and Windows 2000" by Mark Russinovich and David Solomon "Windows NT Device Driver Development" by Peter Viscarola and Tony Mason - dated but the stuff they discuss hasn't changed and it's a good foundation. "Developing Drivers with the Windows® Driver Foundation" by Penny Orwick and Guy Smith - this one is from Microsoft Press and is the only book currently published with a good description of KMDF This one should be excellent (if they ever get it published) "Introduction to the Windows Driver Foundation Kernel Mode Driver Framework " by Peter Viscarola, Tony Mason, Mark Cariddi, Brenda Ryan, Scott Noone, and OSR
My requirment is not something related to driver develoment. The books you menmtioned seems to be specific to that peupose. Waht I am looking is like I want for example lets assume I want to show the content of PCI Config space to show this I should have a good understanding of PCI spacce and its structure and other stuff. Smilarly for SPD and SMBus etc.
-
My requirment is not something related to driver develoment. The books you menmtioned seems to be specific to that peupose. Waht I am looking is like I want for example lets assume I want to show the content of PCI Config space to show this I should have a good understanding of PCI spacce and its structure and other stuff. Smilarly for SPD and SMBus etc.
The problem is, from a coding point of view, that only drivers are allowed to access this information from the hardware. You cannot write a user-mode program to access this directly - the OS flat out won't let you. The content of the PCI config space, for instance, is the way it is described in the spec. You can look in the DDK files to see the data structure(s) used by a driver to query for the config space (search for PCI_COMMON_CONFIG for the PCI stuff). All those tools that show stuff like the config space (I've written some myself) all commmunicate with a driver to actually get that info. My suggestion to learn about this type of hardware stuff is to look at the specs for each class of hardware and then the appropriate sample drivers in the DDK to see how those data structures and interfaces are manipulated. You can't really draw a line between the knowledge and the driver since the driver is the only one who gets to use it. The knowledge is in the spec and the "how to" use it is in the driver. If you have access to a Linux box, it is much simpler to write a Linux driver and play with the structures under that OS. However, you have the problem of what piece of hardware to play with since you probably don't have a spare piece of hardware laying around to serve as your guinea pig. Judy
-
My requirment is not something related to driver develoment. The books you menmtioned seems to be specific to that peupose. Waht I am looking is like I want for example lets assume I want to show the content of PCI Config space to show this I should have a good understanding of PCI spacce and its structure and other stuff. Smilarly for SPD and SMBus etc.
extending on what judy said, what information is exposed in userland is exposed via WMI (which in turn is populated by talking to drivers).
Otherwise [Microsoft is] toast in the long term no matter how much money they've got. They would be already if the Linux community didn't have it's head so firmly up it's own command line buffer that it looks like taking 15 years to find the desktop. -- Matthew Faithfull
-
Hello All, Which is the best place to look for the information about the various facts technology about hardware. I am an application programmer with a very limited knowledge of how we access the hardware through software. Basically what I need to learn is the basic knowledge about various topics as PCI buses (want to undersatand what bus-function-device-offset way of reading PCI space), ISa, SPD, SMBus etc etc. I am able to download specification documents for each of above mentioend technology bit they are very detailed and indepth. What exactlly I am looking for is brief and to the point stuff for a programmer. Pleas help Thanks