Hacer mi propia placa ARM M0 con microcontrolador: ¿necesito un gestor de arranque?

1

Compré uno de estos microcontroladores todo en uno, pero en lugar de usar un Atmel estándar, como los de las placas Arduino, usa un chip ARM M0 más poderoso.

Ahora, me gustaría comprar mi propio M0 (seleccionando un SAMD21G18) y hacer mi propio tablero, exponiendo solo el pin que necesito, pero no puedo encontrar información sobre una información crítica: ¿Cómo programa? el chip?

La placa que compré, tiene un chip USB a serie, creo; y tiene una rom con un gestor de arranque, así que cuando está en un estado, puedes ponerle un código, mientras que en estado normal, ejecuta el programa.

Me gustaría hacer algo similar, agregar un USB a la serie para poder cargar actualizaciones de firmware si es necesario; pero no estoy seguro ... ¿podría programar los chips de una manera diferente y ahorrar en la molestia de incluso poner un convertidor de serie a USB?

¿También hay un cargador de arranque estándar que usan muchos clones de arduino? Todos parecen funcionar de la misma manera, con IDE ARduino; al menos a mis ojos.

Espero que la pregunta sea lo suficientemente clara; Este es mi primer intento de hacer un tablero de ruptura desde cero. Gracias.

Encontré esta publicación que tiene información relevante

Esta persona hizo un tablero minimalista con un chip SAM D21G18; Muestra el producto terminado, algunos videos y esquemas, por lo que es un buen punto de partida.

De mis descubrimientos, el chip ya tiene la funcionalidad USB, para cargar el código en la ROM, pero necesitas usar el IDE propio de Atmel. Sigo buscando detalles, pero es un buen comienzo.

Ya que nadie respondió; Supongo que nadie conocía este enlace, por lo que puede ser útil para otros.

    
pregunta rataplan

2 respuestas

3

Obviamente, todos los chips del microcontrolador, lo que significa que un chip con algún tipo de procesador, memoria no volátil (flash, por ejemplo) y un ram son programables al menos una vez, si no son reprogramables. Estos días encuentras que a menudo son programables en circuito.

Atmel solía tener un cargador de arranque sam-ba a bordo, que era fácil de usar. Ahora que se ha ido, el SAMD21, tiene solo un espacio de flash, y tiene formas de desalentar el borrado, pero es trivial de borrar. Así que no consigues ese sam-ba ni la experiencia arduino. El arduino está utilizando un avr, el avr es bueno que tiene la programación isp, que varía según la línea de productos, pero sigue siendo buena. y tienen un área de cargador de arranque que es donde se encuentra el cargador de arranque basado en serie que usa arduino.

ST y NXP aún en los productos m0 / m0 + incluyen un cargador de arranque en serie que es fácil de usar. y ambos son más fáciles de programar que el atmel samd21.

algunos de estos también tienen cargadores de arranque basados en usb.

Al final del día, es una simple cuestión de leer el manual de la parte que le interesa. Vaya a mouser o digikey o a su lugar favorito, acote los microcontroladores de cualquier compañía que cumpla con su huella (son soldable a mano) o lo que sea y luego mire las hojas de datos allí. o profundizar en el sitio web de los proveedores. Todos son programables. Algunos jtag son la única opción (tener una escala libre que todavía no puedo programar, solo SWD y no puedo hacerlo funcionar aún con Openocd). El samd21 se puede programar con un st-link y probablemente un cmsis-dap. obtener una placa de núcleo es una opción más económica que un st-link independiente, y puede que le guste lo fácil que es programar un stm32. No, no trabajo para ninguna de estas compañías.

    
respondido por el old_timer
2

Su pregunta tiene dos respuestas generales, que suena un poco como si estuviera tratando de hacer la vida más difícil de lo que es necesario.

Si el dispositivo tiene un gestor de arranque incorporado, puede admitir un modo en el que una de las interfaces funcionales (como un UART) se usa para destellar el código. También puede usar este tipo de modo de inicio especial en su propio código, de modo que bajo su propio control puede actualizar el código (con una imagen de código A / B, suma de comprobación, recuperación de fallos, etc.).

Sin un gestor de arranque, que es la pregunta real que hace, necesita usar un depurador. Esto significa usar la interfaz SWD (o JTAG en MCU más antiguas) para acceder a los componentes en el chip. SWD puede escribir directamente en la RAM, y con un poco de trabajo también puede escribir en flash (escribir datos en RAM, escribir una rutina de copia en bloque en RAM, ejecutar la copia).

En general, el software del depurador conoce las diferentes MCU y puede administrar la carga de imágenes por usted (a través de la interfaz SWD). Necesitas un convertidor USB-SWD (muchas placas de desarrollo incluyen esto).

Dependiendo de su modelo de costo, un buen entorno de depuración podría valer más que lo que gasta en hardware. Independientemente, debe hacer que los pines SWD (Reloj, datos, tierra) sean accesibles para las conexiones de depuración.

    
respondido por el Sean Houlihane

Lea otras preguntas en las etiquetas