Para mi aventura en el microprocesamiento, decidí ir con Atmel AVR debido a los vastos recursos disponibles. El Arduino parece tener mucho también, sin mencionar que sus kits de inicio parecen más » a mi nivel. »
El problema es que quiero aprenderlo en ensamblador primero, y luego ir a C / C ++ o lo que sea que use Arduino, pero he oído que Arduino no acepta ensamblaje de AVR. ¿Es esto cierto? ¿Hay alguna forma de evitar eso?
Editar: Yo optaría por el ATMEL STK500, pero por primera vez parece MUY complicado. ¿Hay alguna razón por la que no pueda simplemente obtener un AVR de 8 bits y ponerlo en una placa y experimentar de esa manera? (Supongo que tendría que averiguar cómo conectarlos como tales).
Edit2: Esto es lo que estaba pensando
http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193
Comentarios
- ¿Cómo va? Entonces, ¿qué solución has considerado? Compré Arduino Uo y buscaba una manera de desarrollar en ensamblador también
- Sugeriría usar el controlador 89c51 (8051) para lenguaje ensamblador
Respuesta
Las placas Arduino se pueden programar en ensamblaje. Todo lo que necesita es un cable ICSP (programador en serie en circuito) y la cadena de herramientas AVR (gratis de ATMEL) para escribir en la placa. Entonces obtienes la ventaja de la depuración a bordo.
Como sugieres, puedes simplemente colocar un chip ATMEL en una placa e ir a la ciudad.
El kit al que hiciste referencia parece un gran punto de partida. Puede sacar el chip de la placa y pegarlo en su propia placa (siempre que tenga la potencia regulada correctamente y tenga en cuenta el reloj).
EDIT: Aparentemente, no necesita un ICSP para cargar programas de ensamblaje. Consulte el comentario a continuación para obtener más detalles.
Comentarios
- Ya, yo ‘ probablemente quiero seguir con No ponerlo en mi propia placa de pruebas ahora mismo jajaja No soy tan bueno con circuitos.
- @Sauron – ja – de cualquier manera es bueno. ¡Lo que sea que te enganche! Lo bueno es que los chips individuales son bastante baratos (un par de dólares más o menos).
- Esta respuesta es sustancialmente engañosa: NO SE NECESITA ISP . El cargador de arranque utilizado por Arduino es anterior al proyecto Arduino y no tiene idea alguna de si el archivo que se está cargando se originó con un compilador o un ensamblador. Por favor, no ‘ t perpetuar la idea errónea de que el cargador de arranque en un Arduino tiene algo que ver con el método de escribir programas para apuntar al hardware; es simplemente un mecanismo conveniente para obtener código de cualquier origen en el chip.
- @ChrisStratton – gracias por sus comentarios. ‘ he actualizado mi respuesta para incorporar sus comentarios.
Respuesta
El IDE de Arduino se puede «arreglar» para adaptarse al código de ensamblaje. Aquí está la wiki: http://www.cs.nmsu.edu/~jcook/arduino/index.php?n=Notes.AssemblyMods
Comentarios
- la URL parece estar rota
Responder
Hasta donde yo sé, debería No sea nada específico sobre el gestor de arranque Arduino que podría impedirle utilizar el ensamblaje en lugar de C. El IDE de Arduino puede dificultar la carga de sus propios archivos .hex, pero se parece al gestor de arranque Arduino es compatible con STK500 por lo que debería poder usarlo con avrdude.
Comentarios
- Sí, en realidad, el IDE de Arduino en sí utiliza avrdude para realizar la carga.
Responder
No es nada difícil.
http://www.dwelch.com/arduino/
Debes mirar Creo que ser.c en mi página para elegir que tarjeta. algunos usan diferentes velocidades de puerto serie por defecto y diferentes esquemas de reinicio para ingresar al modo de programación. Si observa el firmware de arduino, encontrará que casi ninguno de los comandos de programación avr es realmente compatible. Realmente no los necesito de todos modos.
Respuesta
el arduino se puede programar con ensamblaje usando GCC-AVR Inline Assembler, revise este enlace para Libro de cocina del ensamblador en línea GCC-AVR
http://web.stanford.edu/class/ee281/projects/aut2002/yingzong-mouse/media/GCCAVRInlAsmCB.pdf
Answer
Las placas Arduino (Uno y Duemilanove en cualquier caso) tienen un conector de programación AVR estándar que es compatible con los programadores y depuradores de Atmel a través de AVR Studio. Studio admite ensamblador y C. Un programador adecuado es el AVRISP MkII, y el AVR Dragon ofrece tanto programación como depuración. Obtendría el último, es más caro a $ 50, pero la función de depuración es invaluable. También puede usar esas herramientas con un chip AVR estándar (no Arduino) conectado a una placa de pruebas o PCB.
Comentarios
- Si bien ‘ es cierto que tienen un encabezado ICSP, hay ‘ s no es necesario usarlo. El cargador de arranque funciona igualmente bien con cualquier medio de autoría del programa y, de hecho, incluso el IDE de Arduino se basa en el programa de utilidad de línea de comandos preexistente
avrdude
para operar el cargador de arranque.
Respuesta
El Arduino se compone de dos piezas: el hardware y el IDE. El IDE principalmente (si no completamente) lo restringe a C y C ++ (con algo de azúcar sintáctico que los desarrolladores han agregado para hacerlo un poco más como Processing / Java). Existe la posibilidad de que el IDE reconozca los archivos .s o .S en el mismo directorio que un boceto estándar (.pde), pero no me quedaría con eso.
No hay nada especial sobre el hardware. Es una placa agradable y amigable con muchas características ingeniosas que los neófitos µC apreciarán, pero si solo desea programar el AVR a través del encabezado del ISP, también puede hacerlo. Necesitará algo como Atmel AVRISP mkII , o cualquier otro programador que funcione con el conector de fila 2×3 en la placa Arduino. Busque uno que sea compatible con el programa avrdude que usará para cargar sus aplicaciones. Manténgase alejado del USBtinyISP de Adafruit; tuve una mala suerte con él y terminé comprando el de Atmel que vinculé por menos de $ 40 de Mouser.
Comentarios
- Extraño, ‘ no he tenido más que buenas experiencias con el IDE de Atmel y el usbtiny. También buspirate se duplicará como isp para muchas plataformas diferentes, una gran herramienta
- No ‘ s no es necesario un adaptador ICSP, el cargador de arranque funciona bien con cualquier medio de autoría del programa
Respuesta
El Aruduino se puede programar absolutamente en ensamblador. ¡Y ni siquiera necesitas un cable ICSP para hacerlo!
Bien, para ser justos, esto no es lo mismo que programarlo en puro ensamblaje desde cero.
Pero puede ensamblar en línea en C. Lo que significa que puede cargar código en su Arduino que tiene ensamblaje en línea, que luego se ejecutará. Considere la biblioteca TVOut , que permite que Arduino emita NTSC / PAL a un televisor.
Esa biblioteca es muy sensible al tiempo (dado que se envía a un televisor, cada línea de exploración debe escribirse a la derecha tiempo.) Por lo tanto, usa ensamblado en línea para acelerar el proceso. Al observar la línea 89 de este archivo de la biblioteca, el autor está usando algunos de los macros de ensamblaje que él escribió.
Ahora. Sospecho que no las escribió usando el IDE predeterminado de Arduino. Pero esta biblioteca llama a su asm, que cualquiera puede importar, compilar y ejecutar a través de su interfaz.
¡Mucha suerte!
Comm ents
- En realidad, también puede hacer archivos fuente de ensamblaje, solo tiene que omitir el IDE de Arduino e interactuar con las herramientas de back-end como avr-gcc (o lo que sea que usar como ensamblador) y avrdude directamente.
Responder
Yo uso Linux como mi plataforma de host, pero creo que estas herramientas también están disponibles para las variedades de Windows.
Yo uso » avra » para el ensamblaje en código hexadecimal convertidor (compilador)
Luego programo el chip usando un programador USBTiny y la herramienta de programación » avrdude «.
Creo que ambas herramientas son de código abierto.