cargador de arranque USB para el arduino DUE

2

Hace poco compré un Arduino DUE. Estaba revisando los detalles técnicos y me di cuenta de que el DUE actúa como un dispositivo USB virtual (puerto COM). Me preguntaba si podría actualizar el paquete de soporte de placa a mi propio paquete personalizado. Básicamente, quiero que actúe como un verdadero dispositivo USB o HID. Esto incluiría volver a escribir el cargador de arranque y los controladores del dispositivo (en mi computadora).

Antes de comenzar con mi propio cargador de arranque y software, quiero saber cómo ocurre el arranque actualmente en el DUE. ¿Utilizan el mismo gestor de arranque Arduino? porque leí que el procesador SAM tiene un gestor de arranque incorporado de fábrica. ¿Dónde puedo encontrar más información sobre todo esto? De cualquier manera, ¿cómo ocurre la carga de código desde Arduino IDE si no hay un cargador de arranque Arduino en el chip? Cualquier tipo de punteros apreciados.

    
pregunta deepak

2 respuestas

1

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

    
respondido por el Adam F
1

También he investigado para utilizar el puerto USB nativo. Con el IDE de Arduino, parece poco confiable, pero estoy usando un programa de utilidad C para activar el reinicio configurando el puerto COM USB a 1200bps.

Hack para usar el cargador de arranque SAM3X8E con el puerto USB nativo en el Arduino Due o en el Taijiuino (variante del Due):

  • configure el puerto COM nativo USB a 1200bps para reiniciar la aplicación
  • en ese caso, el sistema se reinicia en modo BOSSA
  • después del reinicio, espere hasta que el puerto COM de BOSSA esté listo
  • entonces, el firmware de BOSSA usa el puerto USB con un VID / PID diferente así que reconfigura el enlace USB a otro puerto COM

Puede usar REGEDIT para monitorear los puertos COM USB asignados:

  • la transición de COM19 a COM17 se puede observar en el registro: HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM \

    "\Device\USBSER001"="COM19"
    
    "\Device\USBSER000"="COM17"
    
  • después del reinicio en COM19, el VID / PID cambia de "Arduino" a "Bossa":

    HKLM \ SYSTEM \ CurrentControlSet \ Enum \ USB \ Vid_2341 & Pid_003e & MI_00 "FriendlyName"="Arduino Due (COM19)"

    HKLM \ SYSTEM \ CurrentControlSet \ Enum \ USB \ Vid_03eb & Pid_6124 "FriendlyName"="Puerto de programa Bossa (COM17)"

Tiempo observado:

  • hay un retraso empírico de 2.5 s entre

    • el enlace hacia abajo en COM19 (pila USB del programa de aplicación)

    • el enlace en COM17 (pila USB del cargador de arranque BOSSA)

  • en otra PC, la asignación de COM17 / COM19 puede ser diferente para

    • el Vid 2341 Pid 003e (el puerto COM de Arduino Due)

    • the Vid 03eb Pid 6124 (el puerto COM del programa Bossa)

  • Me he dado cuenta de que el ciclo de espera con un retardo de espera de 1 segundo es confiable:

    • después de 4s, el firmware de BOSSA está listo (en caso de fallo, tiempo de espera después de 6s)

    • entonces, se puede ejecutar el comando bossac:

    bossac -p COM17 -U verdadero -e -w -b $ OBJ_DIR / $ APP.bin -R

respondido por el due experiment

Lea otras preguntas en las etiquetas