3 votos

Hacer mi propia placa de microcontrolador ARM M0: ¿necesito bootloader?

Compré uno de estos microcontroladores baratos 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 potente.

Ahora, me gustaría comprar mi propio M0 (eligiendo un SAMD21G18) y hacer mi propia placa, exponiendo sólo el pin que necesito, pero no encuentro información sobre un dato crítico: ¿Cómo se programa el chip?

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

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

Además, ¿hay algún cargador de arranque estándar que utilicen muchos clones de arduino? Todos parecen funcionar de la misma manera, con ARduino IDE; al menos para mis ojos.

Espero que la pregunta sea lo suficientemente clara; este es mi primer intento de hacer una placa breakout desde cero. Gracias.


Encontré este post que tiene algo de información relevante

https://web.archive.org/web/20150906201126/https://hackaday.io/project/7355-minimum-zero-compatible-sam-d21g18-d21e18-board

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

Por lo que he averiguado, el chip ya tiene la funcionalidad USB, para cargar en la ROM el código, pero hay que usar el propio IDE de Atmel. Todavía estoy buscando detalles, pero es un buen comienzo.

Como nadie ha contestado; supongo que nadie conocía este enlace, por lo que puede ser útil para otros.

3voto

Bartosz Radaczyński Puntos 7160

Obviamente, todos los chips de microcontroladores, es decir, un chip con algún tipo de procesador, memoria no volátil (flash, por ejemplo) y ram, son programables al menos una vez, si no son reprogramables. Hoy en día, a menudo son programables en circuito.

Atmel solía tener un bootloader sam-ba en la placa, que era fácil de usar. Ahora que se ha ido, el SAMD21, tiene sólo un espacio de flash, y tiene formas de desalentar el borrado, pero es trivial para borrar. Asi que no tienes la experiencia del sam-ba ni la del arduino. El arduino utiliza un avr, el avr es agradable usted tiene la programación isp, que varía a través de la línea de productos, pero sigue siendo bueno. y tienen un área de bootloader que es donde se encuentra el cargador de arranque basado en serie que el uso de arduino.

ST y NXP todavía en los productos m0/m0+ incluyen un bootloader serial que es fácil de usar. y ambos son más fáciles de programar que el atmel samd21.

algunos de ellos también tienen cargadores de arranque basados en USB.

Al final del día, sin embargo, es una simple cuestión de leer el manual de la pieza que te interesa. Vaya a mouser o digikey o su lugar favorito, reducir en microcontroladores de cualquier empresa que cumplen con su huella (son soldables a mano) o lo que sea y luego mirar las hojas de datos allí. o cavar más profundo en el sitio web de los proveedores. son todos programables. Algunos jtag es la única opción (tengo un freescale todavía no puede programar, SWD sólo y no puede conseguir que va con openocd todavía). el samd21 se puede programar con un st-link y probablemente un cmsis-dap. conseguir un tablero de nucleo es una opción más barata que un st-link independiente, y hey usted puede encontrar que te gusta lo fácil que es para programar un stm32. no no trabajo para cualquiera de estas empresas.

2voto

TheBonsai Puntos 3112

Hay dos respuestas generales a tu pregunta, que suena un poco como si estuvieras tratando de hacer la vida más difícil de lo necesario.

Si el dispositivo tiene un cargador de arranque incorporado, puede soportar un modo en el que una de las interfaces funcionales (como una UART) se utiliza para el código de flasheo. También puedes utilizar este tipo de modo de arranque especial en tu propio código, de modo que bajo tu propio control puedes actualizar el código (con una imagen de código A/B, suma de comprobación, recuperación de un fallo, etc).

Sin un cargador de arranque, que es la verdadera pregunta que haces, necesitas usar un depurador. Esto significa usar la interfaz SWD (o JTAG en MCUs antiguos) para acceder a los componentes del chip. SWD puede escribir directamente en la RAM, y con un poco de trabajo también puede escribir en la flash (escribir datos en la ram, escribir una rutina de copia de bloque en la ram, ejecutar la copia).

Generalmente, el software del depurador conoce los distintos MCUs, y puede gestionar la carga de imágenes por ti (a través de la interfaz SWD). Necesitas un convertidor USB-SWD (muchas placas de desarrollo lo incluyen).

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X