Si, hay bastantes repartidos por la placa; integrados en los chipset... y en la propia CPU
Los del USB se pueden programar a voluntad; de hecho cada categoría de dispositivo: Mass Storage, Virtua Com Port (es un subtipo de - Class Communication Device), es accesible directamente desde el chipset saltándote el driver de la capa de mayor abstracción.
Está estandarizado y hay una API publicada, soportada por las BIOS de vuestros ordenadores PC. Así es como podéis arrancar con un pincho USB.
Programando para el kernel, puedes acceder a un dispositivo de esta forma y utilizarlo a voluntad; también colgarás el ordenador un porrón de veces hasta que lo consigas... xD
se muere como en los viejos tiempos, se queda congelado, ni pantallazo azul ni nada... porque el S.O. no te está supervisando. Es como programar un driver, pero menos complejo , porque tu dispositivo externo lo creas basándote en una clase de dispositivo que ya está directamente soportado por el chipset y la bios.
Consultas la lista de dispositivos; asignas tu funciones de IRQ y DMA y a trabajar. Para enviar y recibir datos desde Windows, tienes disponible un buffer, pipes... yo utilizo el buffer, cuando Windows retoma su ejecución (en Windows XP es cada 1 ms), en los más modernos no lo tienen claro ni ellos; pues consultas el flag del buffer, te indica que tiene datos, los lees... los pintas en una gráfica, mandas a dormir el programa / proceso... vuelve a ejecutarse el kernel para que vuelves a ordenar transacciones de datos o consultarlas...
Las IRQ y DMAs, sé que las DMAs del USB las realiza completamente el chipset, las IRQs del USB... ya no lo tengo tan claro, posiblemente el chipset se lo pida a la CPU; hoy día las CPUs son tan rápidas que no te queda claro xD
Este tipo de programas dan problemas si el ordenador está muy plataformado, antes habría que dar permisos al software.
Pero vamos, es lo mismo que hacen DirectX o Vulkan; sólo que a un nivel no tan Pro ni sofisticado
Esta cosas las hacen quienes están obligados a hacer software en Tiempo-Real para el PC,
y el proyecto no se permite el lujo de utilizar un S.O. como VxWorks o QNX - También porque así el mismo equipo te sirve para adquirir / procesar y hacer el resto de cosas, porque en esos citados S.O. poquito software hay.
Marcadores