No debería tener que volver a escribir el cargador de arranque Arduino Due; solo necesita escribir un programa que pueda actuar como USB HID usando el puerto USB nativo, y cargar el programa en Arduino Due. Puede usar el puerto USB de programación de Due para realizar la carga.
Pero aquí hay información sobre el proceso de arranque de Arduino Due:
El Due tiene un gestor de arranque ROM que escucha el puerto nativo USB y el puerto Serial 0. Puede comunicarse directamente con el cargador de arranque ROM a través del reinicio del SAM3X8E y usar el puerto nativo. Pero no he encontrado que el método sea muy confiable. El puerto de programación más utilizado se conecta a un microprocesador AVR 16U2 de Atmel que actúa como un convertidor USB, conectado al puerto serial SAM3X8E 0. El IDE Arduino 1.5 puede comunicarse con el 16U2 mediante el comando Bossa (bossac), restablecer el SAM3X8E , y cargar nuevos programas para ello. Esta página explica en detalle el cargador de arranque de Arduino Due.
Si está interesado, aquí hay el código fuente del convertidor serie 16U2 AVR USB .
Y aquí está Bossa : el comando del Due que corresponde a avrdude.
Usando bossac (la herramienta de línea de comandos Bossa), puede cargar el código SAM3X8E, usando el cargador de arranque ROM incorporado.
Sobre la creación de dispositivos HID:
Aquí hay un enlace a una nota de la aplicación Atmel que tiene un código de ejemplo para crear un programa que puede actuar como un teclado USB HID:
enlace
El código fuente de este ejemplo es el de los paquetes ASF de Atmel; desafortunadamente, una gran descarga. Aquí es donde conseguirlo:
enlace
Una vez que lo descargues, el código fuente del ejemplo del teclado HID está en esta carpeta:
common / services / usb / class / hid / device / kbd / example / sam3x8e_arduino_due_x
Aquí hay una lista de las otras notas de la aplicación, con ejemplos de otros tipos de dispositivos USB y HID. Busque las que son para el Arduino Due:
enlace