The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
We have a product here which is a PCIe to I2C/SPI bridge. We are required to write a Windows Driver to control the I2C controller present inside the PCIe chip.
The hardware connection looks like this:
| HostPC | ------- > PCIe to I2C bridge Device connected to PCIe slot---> I2C slave device
I went through the Simple Peripheral Bus (SPB) framework for this I2C controller. But the documentation is mainly concentrated on the I2C controller that are part of the SOC platform. For example, the documentation says that the information about the SPB controller or SPB peripheral device should be present as a part of the ACPI table.
My device here is not statically connected to any system. This PCIe switch can be connected by the customer whenever he needs and he just does a reboot of the PC to get that enumerated by the OS. So we cannot define this as part of the ACPI table.
Also it says that the application cannot directly send data to and from the SPB controller driver. We need to have a SPB peripheral driver also that bridges the application and the SPB controller.
My use case is like this:
Provide the I2C controller driver for the PCIe to I2C bridge. I will provide specific IOCTLs to send Write or Read commands from the application. Let the customer connect whatever I2C device they want to be connected to the I2C controller. Let them drive that peripheral from the application without the need for a peripheral driver in between.
I like my device to be acting as a USB to I2C bridge. Something like this:
Is there a Windows device driver framework to support my use case?
Or to better frame my question, How can I go about this?
P.S: I am pretty new to WIndows drivers. I have a fair knowledge on Linux drivers though.
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!|
|Kernel Debugging||13-17 May 2024||Live, Online|
|Developing Minifilters||1-5 Apr 2024||Live, Online|
|Internals & Software Drivers||11-15 Mar 2024||Live, Online|
|Writing WDF Drivers||26 Feb - 1 Mar 2024||Live, Online|