I would like to ask to things I still don´t get after reading many articles on USB, including oficial USB 2.0 specs.
1, What exactly is endpoints and what is its purpose? Let me explain a bit: From what I understood, endpoint is source or destination of data. But, WTF? I dont want to be rude, but my head hurts becouse I cannot really understand why. I mean, USB is serial bus, so it should only care about delivering data to proper destination. Destination is device. Why to more include multiple destinations in device in form of endpoints? I mean, USB device can than manage data whatever it wants, to any logical structure developer wants, so why to add it to transfer specs?
2, In USB host on PC, there is that USB host loads apropriate drivers to device. So, lets say I plug in some USB custom class device. USB host driver will than get its IDs and so, and after knowing the device it should load its drivers. But I thought that device drivers are present in kernel, so how can be additionally loaded?
Furthermore, lets say my USB host is connected to Pc via PCI. So my USB host device will generate some PCI interrupt to get attention of OS, and than OS first must load USB host driver. Isn´t this too slow process? I mean, yes even USB 3.0 is MUCH slower than CPU can handle, but still...
Thanks for any answer, please if you know something about enpoints help, second question is more theoretical. Thanks again :)