controllerembeddeddriverbus

Bus Driver vs Device Driver vs Device Controller


I've come across the above terms in more than a few articles regarding embedded systems and protocols. I would appreciate you help in understanding what is the difference between:

I tried finding simple explanations for each with comparison without success. If any one could give an example / refer to any known implementations it would probably be very helpful.


Solution

  • The meaning of these terms may be dependent on the context in which you have seen them - and the interpretation the author has applied.

    A "device driver" is not unique to embedded systems - it is any software that interfaces between an application layer and the physical hardware.

    A device controller is a hardware device between an interface connector and a processor that performs some I/O operations such as buffering and timing, such as and Ethernet MAC, USB or CAN controller.

    A "bus driver" may refer to a hardware bus transceiver device (example RS-422 transceiver, or an Ethernet PHY).

    For example the software/hardware model of a hypothetical "device bus" (being a communication interface that supports multiple devices in a bus topology) would look as follows:

    enter image description here