joe pues si, cierto que hay algunas que son muy largas de entender, pero yo he visto varias y son muy sencillas, es mas, la forma de leer el formato .hex para el bootloader lo saque del codigo que pone microchip para el software, adaptado a mi programa.
Luego libreria usb me decidi por la WinUSB, no la veo muy complicada, cierto que la libreria en si tiene mucho codigo, pero lo que es iniciar, enviar/recibir, y luego algunas configuraciones no es muy complicado.
Tambien los ejemplos CAN, fue donde aprendi a usar el CAN ya que los ejemplos que encontre en este foro eran en CCS.
Nose, a mi en principio lo que he visto no me ha parecido complicado, las placas de entrenamiento si suelen ser mas complejas ya que suelen tener varias funciones y se unen en un codigo, pero el tipico ejemplo de usb, envia y recibe pues se me hace muy sencillo, incluso el soft de visual c++.