Joer, me explico como el culo
A ver, primero vamos a separar el bootloader del 232.
Hablemos del 232 virtual, eso es lo que se suele hacer con el PIC y otros controladores para las aplicaciones de usuario, de cara al PC y al programa que programes es un puerto serie normal, y podrás hacer todo eso que dices, abrir, enviar un byte, cerrar... ¿ok? eso a nivel de programación, un programa de hace tiempo para el puerto serie tiene muchas posibilidades de funcionar con este puerto. Pero...
...En realidad es un COM virtual,
primera pega: la velocidad, si no la cambias es de 921600 baudios, por encima del estandar 115000 que pillarán los programas viejos,
segunda pega, y mayor, el USB funciona a tramas, si vas a enviar algo byte a byte es muuucho más rápido un puerto serie normal, aunque la velocidad sea de 921600, pues tiene que enviar una trama cada vez y toda la velocidad se va en el protocolo.
tercera pega, el tiempo de latencia, así como en RS232 puedes hacer que se mande un byte cada cierto tiempo periódico y exacto (dentro de sus limites) con el USB no se puede asegurar esa periodicidad, salvo que sea muy lenta.
Así pues, este modo de usar el USB no sirve para aplicaciones donde la sincronización y la velocidad es crítica, para eso hay otros modos de hacer funcionar el USB, pero ya requieren otro programa, con otro driver en el PC, normalmente más complicados que manejar "un puerto serie"
Y ahora hablemos del Bootloader... no hay nada que decir, que no se haya dicho, como la aplicación no es crítica en tiempo ni en velocidad, pues que se puede hacer usándolo como si fuera un puerto serie virtual, la ventaja de hacerlo así es que el programador del programa bootloader puede aprovechar las rutinas archiconocidas de dicho puerto serie.
Joe, es que no sé como explicarlo para que se entienda.