Estoy tratando de empezar a programar el AVR. Elegí usar Atmega328P (que está en mi Arduino Uno). Cuando hice una búsqueda en la web sobre los pasos iniciales para aprender a programar AVR, me di cuenta de que el microcontrolador requiere un programa especial llamado "cargador de arranque" para iniciar el boceto que hemos creado usando el IDE de Arduino. El cargador de arranque verifica si los datos (programa) están presentes en los pines RX. Si los datos están presentes, el cargador de arranque toma el programa y lo coloca en la memoria flash. Este proceso de carga del programa en el microcontrolador se lleva a cabo a través del protocolo UART. En otras palabras, el gestor de arranque permite cargar el programa en el microcontrolador. Creo que he entendido el concepto hasta ahora. Cualquier corrección es bienvenida de corazón.
Mi confusión real comienza cuando no tengo cargadores de arranque en mi microcontrolador. Tengo mi programa listo para cargarlo en la memoria flash. Pero no hay nada que permita que el programa se cargue en el microcontrolador. No hay gestor de arranque, por lo que no hay nada que permita que el programa entre en la memoria. Aquí es donde el programador entra en acción. El programador toma el archivo .hex de la PC a través del protocolo USB. Luego envía este archivo al microcontrolador a través del protocolo SPI (ya que se utilizan pines MISO-MOSI-SS). Mi pregunta es:
P1- ¿Por qué no necesito un gestor de arranque para cargar el programa a través del protocolo SPI? ¿Por qué no puedo cargar el programa al microcontrolador a través del protocolo UART cuando no hay ningún cargador de arranque presente? ¿Qué permite que el microcontrolador cargue el programa en su memoria sin cargador de arranque cuando se usa el protocolo SPI?
Revisé varios recursos disponibles para obtener un concepto de estas cosas, pero a menudo me confundo de una forma u otra. Estaba estudiando "El arte de la electrónica" y me estoy confundiendo incluso con mi primera pregunta. El libro dice:
"Los microcontroladores contemporáneos usan almacenamiento interno no volátil (memoria flash) para el código del programa, que usted carga (mientras el μC está en el circuito) mediante uno de varios métodos. Por lo general, realiza la carga55 con un "pod" comercial (oficialmente llamado " programador de dispositivos"), que compra al fabricante del chip o a un tercero. Si compra un kit de desarrollo (Figura 15.24), a menudo incluirá un módulo de programación, junto con software (para compilar, simular, ensamblar y cargar), y con una placa de circuito en la que hay un microcontrolador y otro hardware (puertos digitales y analógicos, LED, un puerto serie, un encabezado de programación y quizás algún dispositivo de visualización). Aquí están los varios protocolos de carga: cargador de arranque de puerto serie UART, SPI cargador de arranque de puerto serie, cargador de arranque de puerto serie JTAG, cargador de arranque de puerto serie propietario, cargador de arranque de puerto serie USB,carga paralela".
¿El escritor está tratando de decirme que el programa que estoy cargando a través del protocolo SPI es el gestor de arranque? No puedo descartar esta posibilidad porque el cargador de arranque también se carga en el microcontrolador mediante el uso del protocolo SPI. Aquí hay un tutorial del sitio web de Arduino.
La siguiente parte que he estado estudiando es sobre el proceso de cargar el programa en el microcontrolador. Hice un programa simple de parpadeo de LED en Atmel Studio 7 y tengo su archivo hexadecimal listo para ser transportado al microcontrolador. Estoy tomando esta analogía para entender cómo se carga el archivo hexadecimal en el microcontrolador.
He considerado que mi archivo hexadecimal es un producto que el vendedor (PC) debe entregar al cliente (microcontrolador). El vehículo a utilizar es una camioneta de reparto (AVRDUDE). Pero el problema es el río entre el vendedor y el cliente. Así que necesito un puente para conectarlos. Este puente es el "programador". ¿Es correcta mi analogía? Si no, ayúdame a entender cuál es la propuesta de AVRDUDE y el 'programador'.
Los microcontroladores AVR (y la mayoría de los µC modernos) contienen hardware especial específicamente para programar directamente usando una combinación del puerto SPI (llamado ISP para este caso especial) y el pin de reinicio.
Esta es una característica muy conveniente porque no necesita preocuparse por los cargadores de arranque o las compensaciones de memoria o cualquier otra cosa. Puede programar los chips por separado o después de instalarlos.
Para usar un método diferente para programar el flash, debe usar un cargador de arranque que le indique al chip cómo aceptarlo. UART, por ejemplo.
Algunos AVR también pueden usar otros métodos, por ejemplo, programación de alto voltaje, que no usa un cargador de arranque.
La elección se reduce a lo que es más conveniente/útil para usted.
Una cosa buena de un cargador de arranque es que potencialmente permite una manera fácil de aplicar actualizaciones de campo a su firmware.
En cuanto a tu analogía:
El archivo hexadecimal es el programa que está cargando en la memoria flash del microcontrolador. El programador es el hardware físico que transmitirá estos datos. AVRDUDE es el software que ejecuta este proceso.
Un gestor de arranque no es la única forma de programar un microcontrolador. De hecho, es posible que deba usar algún otro método para incluso poner el programa del cargador de arranque en el microcontrolador antes de poder usar técnicas de carga de arranque en serie. El ATMega que usa es uno de esos chips.
La familia Arduino se basa en un cargador de arranque, pero en el entorno de programación de Arduino encontrará una opción para usar un programador de hardware para cargar el cargador de arranque en un nuevo chip.
Los programadores de hardware le costarán alrededor de $ 10 USD
Tim Wescott
malvado demoníaco
G-aura-V
malvado demoníaco
G-aura-V
malvado demoníaco
malvado demoníaco
Tim Wescott