Título/s: | Microcontrolador compatible con AVR, interfaz de depuración y bus WISHBONE |
Autor/es: | Tropea, Salvador E.; Caruso, David M. |
Institución: | INTI-Electrónica e Informática. Buenos Aires, AR |
Editor: | INTI-Electrónica e Informática |
Palabras clave: | Microcontroladores; Dispositivos electrónicos; Interfaces; Arquitectura de computadoras; Hardware; Computadoras personales; Software; Dispositivos periféricos |
Idioma: | spa |
Fecha: | 2010 |
Ver+/- MICROCONTROLADOR COMPATIBLE CON AVR, INTERFAZ DE DEPURACI ´ON Y BUS
WISHBONE Salvador E. Tropea, David M. Caruso Electro´nica e Informa´tica Instituto Nacional de Tecnologı´a Industrial Buenos Aires, Argentina email: salvador@inti.gob.ar ABSTRACT En este trabajo presentamos un microcontrolador compati- ble con la lı´nea AVR de Atmel. Esta implementacio´n pue- de ser configurada para ser compatible con los AVR de se- gunda (ej. ATtiny22), tercera (ej. ATmega103) y cuarta (ej. ATmega8) generacio´n. Este desarrollo incluye los siguientes perife´ricos com- patibles: controlador de interrupciones, puertos de entrada y salida, temporizadores y contadores, UART y watchdog. Para adaptarlo a distintas necesidades se incluyo´ una in- terfaz de expansio´n que utiliza el esta´ndar de interconexio´n WISHBONE. A los fines de facilitar el desarrollo de aplicaciones sobre esta plataforma se lo doto´ de una unidad de depuracio´n y se adapto´ el software necesario para poder realizar depuracio´n de alto nivel con una interfaz de usuario simple e intuitiva. El disen˜o fue verificado usando simuladores y FPGAs de Xilinx (Spartan II y 3A). 1. INTRODUCCI ´ON Nuestro laboratorio realiza aplicaciones con microcon- troladores embebidos de manera frecuente. Es por esta razo´n que al abordar la tecnologı´a FPGA se deseo´ implementar microcontroladores compatibles con los usados en dichos desarrollos. De esta manera personas del equipo que no se dedicaran a esta nueva tecnologı´a podrı´an participar en desa- rrollos con FPGAs. Con esta finalidad se encaro´ el desarrollo de un micro- controlador compatible con el PIC 16C84 [1] y posterior- mente se an˜adio´ una interfaz de depuracio´n para el mismo [2]. Este microcontrolador mostro´ ser u´til y fue transferido a la industria aero-espacial [3]. Sin embargo su arquitectu- ra no es buena para la programacio´n en lenguaje C. En los u´ltimos an˜os nuestro laboratorio se volco´ al uso de la lı´nea AVR de Atmel, que si fue disen˜ada para ser programada en lenguaje C. Por lo que se decidio´ encarar el desarrollo de un equivalente para FPGAs. En este trabajo presentamos las caracterı´sticas del mi- crocontrolador desarrollado y de una interfaz de depuracio´n que permite depurar programas escritos en lenguaje C desde una PC y utilizando un software simple e intuitivo. 2. MICROCONTROLADOR 2.1. Arquitectura El AVR es un microcontrolador del tipo RISC de 8 bits con dos espacios de memoria completamente independien- tes: memoria de programa y memoria de datos. En la memoria de programas se encuentra el co´digo a ejecutar. Es una memoria de 16 bits y la mayor parte de las instrucciones son de este taman˜o. Algunas instrucciones ne- cesitan dos posiciones de memoria (32 bits). La memoria de datos es de 8 bits y se divide en tres sec- ciones. Existen instrucciones especı´ficas para acceder a cada una de estas secciones de memoria, pero tambie´n hay ins- trucciones que pueden acceder a todo el espacio de memoria indistintamente. La parte ma´s baja de esta memoria alberga 32 registros de 8 bits, seis de los cuales pueden agruparse de a pares para formar tres registros de 16 bits, usualmente usa- dos como punteros. A continuacio´n se encuentra el espacio de entrada/salida, con un total de 64 posiciones de 8 bits. El resto de la memoria es RAM. A partir de la segunda generacio´n la lı´nea AVR imple- menta un stack pointer. El mismo es decrementado cada vez que se guarda algo en la pila, usualmente se lo inicializa con la direccio´n ma´s alta de memoria RAM. Este recurso facilita el compilado de aplicaciones en lenguaje C. La mayor parte de las instrucciones se ejecutan en un ciclo de reloj, pero algunas pueden tomar hasta cuatro ciclos, como en el caso del CALL. El stack pointer y el registro de estados se encuentran mapeados en el espacio de memoria de entrada y salida. La ALU implementa las operaciones ba´sicas de suma, resta y desplazamiento. A partir de la cuarta generacio´n se
introduce la multiplicacio´n de enteros con o sin signo y en formato de punto fijo (1.7). 2.2. Implementacio´n Las herramientas de desarrollo utilizadas fueron las re- comendadas por el proyecto FPGALibre [4] [5]. Para este desarrollo se utilizaron estaciones de trabajo que corren De- bian [6] GNU [7] /Linux. Siendo el lenguaje de descripcio´n de hardware utilizado el VHDL. A los fines de simplificar la tarea y comenzar por una base de co´digo funcional se decidio´ basar el desarrollo en el proyecto AVR Core [8] de OpenCores.org. Primeramente se adapto´ el co´digo a los lineamientos del proyecto FPGA- Libre. El co´digo VHDL original se encuentra escrito a muy bajo nivel, sin explotar toda la expresividad del lenguaje, por lo que se decidio´ reescribirlo para lograr un co´digo ma´s compacto y fa´cil de mantener. Tambie´n se unificaron mo´du- los que estaban separados, como la ALU y el procesador de operaciones orientadas a bits. El proyecto original so´lo implementa la tercer genera- cio´n de AVR, en particular trata de modelar el ATmega103. Para lograr mayor flexibilidad se decidio´ hacer parametri- zable a la CPU permitiendo seleccionar entre tres posibles generaciones. De esta manera es posible aprovechar mejor el a´rea de FPGA seleccionando entre tres versiones diferen- tes de acuerdo a la complejidad del proyecto en cuestio´n. Las principales diferencias entre la segunda y la terce- ra generacio´n son el taman˜o del stack pointer (8 bits en la segunda y 16 en las posteriores) y la falta de las instruccio- nes de salto absoluto (JMP y CALL). La cuarta generacio´n agrega multiplicacio´n, movimiento entre pares de registros (16 bits) y mejora la instruccio´n LPM (acceso a la memoria de programa). 2.3. Perife´ricos A los fines de facilitar el uso de aplicaciones ya existen- tes para la lı´nea AVR se decidio´ implementar algunos de los perife´ricos ma´s comunes. Controlador de interrupciones: el mismo permite con- figurar, enmascarar, etc. las interrupciones externas. Se reali- zaron dos implementaciones diferentes, una compatible con las lı´neas modernas (ej. ATtiny22 y ATmega8) y otro con las anteriores (ej. ATmega103). Puertos de entrada y salida: permiten configurar pines como entrada o salida. Se realizo´ una implementacio´n nueva y flexible que pudiera modelar todos los casos posibles. Temporizador y contadores: se adapto´ la implementa- cio´n del proyecto original. La misma implementa los Timers 0 y 2 del ATmega103. Se modifico´ el co´digo para permitir un mayor reuso ya que ambos timers son muy similares. Es- tos timers son de 8 bits y permiten su uso como contadores o generadores de PWM. USART: se adapto´ la implementacio´n del proyecto ori- ginal. La misma es muy flexible y permite la seleccio´n de distintas tasas de transmisio´n y largo de datos. Watchdog: este perife´rico no se encontraba en la imple- mentacio´n original y debido a que se encuentra relacionado con una instruccio´n de la CPU se decidio´ implementarlo. 2.4. Bus de Expansio´n En un microcontrolador los perife´ricos disponibles son fijos, pero en el caso de una implementacio´n en una FPGA es deseable que los mismos puedan agregarse y/o quitarse fa´cilmente. Por esta razo´n se decidio´ implementar un bus de expansio´n. Siguiendo los mismos criterios adoptados en el pasado [1] se selecciono´ el esta´ndar de interconexio´n WISHBONE [9]. El mismo posee las siguientes ventajas: Para casos simples (un maestro y uno o ma´s esclavos) se reduce a poca o ninguna lo´gica adicional. Fue pensado para casos ma´s complejos (ma´s de un maestro, reintento, notificacio´n de error, etc.). No posee royalties y puede ser usado sin costo alguno. La especificacio´n completa se encuentra disponible en internet. Para acceder al bus WISHBONE se implementaron dos registros en el espacio de entrada y salida. Debido a que nuestra implementacio´n dejo´ de lado la memoria EEPROM de los AVR disponı´amos de las direcciones 0x1C a 0x1F. Se decidio´ utilizar las direcciones 0x1E y 0x1F. El regis- tro 0x1F se usa para indicar la direccio´n del perife´rico que deseamos utilizar en el bus WISHBONE. Posteriormente cualquier operacio´n sobre el registro 0x1E se transfiere a trave´s del bus WISHBONE. Esto permite acceder a hasta 256 registros de 8 bits en el bus WISHBONE. El bus WISHBONE contempla la conexio´n de perife´ri- cos lentos por lo que si un perife´rico necesita ma´s de un ciclo de reloj para realizar la operacio´n puede detener al mi- crocontrolador hasta que la misma haya concluido. 2.5. Configuraciones Equivalentes A los fines de proveer al usuario final de configuracio- nes que sean similares a microcontroladores ya existentes se implementaron tres microcontroladores, uno por cada gene- racio´n implementada: ATtiny22: de segunda generacio´n, un u´nico puerto de entrada y salida de 5 bits, un timer de 8 bits, bus WISHBONE, stack pointer de 8 bits, watchdog, una fuente de interrupcio´n externa, 128 bytes de memoria RAM, 1024 words de memoria de programa. ATmega103: de tercera generacio´n, 6 puertos de en-
trada y salida, UART, bus WISHBONE, dos timers de 8 bits, stack pointer de 16 bits, watchdog, ocho fuen- tes de interrupcio´n externa, 4096 bytes de memoria RAM, hasta 65536 words de memoria de programa. ATmega8: de cuarta generacio´n, 3 puertos de entra- da y salida, UART, bus WISHBONE, dos timers de 8 bits, stack pointer de 16 bits, watchdog, dos fuen- tes de interrupcio´n externa, 1024 bytes de memoria RAM, hasta 65536 words de memoria de programa. Todas las configuraciones son parametrizables, pudie´n- dose eliminar los perife´ricos no utilizados. 3. HERRAMIENTAS DE DESARROLLO Debido a que esta implementacio´n incluye todo el set de instrucciones del procesador original, y a que se imple- mentaron tres configuraciones equivalentes a microcontro- ladores existentes, es posible utilizar la mayor parte de las herramientas disponibles para la lı´nea AVR. Existen herramientas de software libre de muy buena ca- lidad disponibles para la lı´nea AVR y que pueden utilizarse con nuestro microcontrolador. 3.1. Ensamblador Para compilar fuentes en assembler escritos para el en- samblador de Atmel (avrasm) es posible utilizar avra [10]. Se distribuye bajo licencia GPL y se puede compilar para las plataformas ma´s populares. Adema´s de ser compatible con el ensamblador de Atmel ofrece un soporte de macros mejorado y ensamblado condicional. 3.2. Compilador de C/C++ A pesar de tratarse de una plataforma de 8 bits es posible obtener una versio´n del compilador de C del proyecto GNU [11] capaz de generar co´digo para el AVR. A esta versio´n del gcc se la conoce como gcc-avr y es capaz de generar co´digo altamente optimizado para AVRs de segunda a quinta generacio´n. 3.3. Biblioteca Esta´ndar de C Una implementacio´n muy completa de la biblioteca es- ta´ndar de C especialmente disen˜ada para los AVR se encuen- tra disponible en el proyecto avr-libc [12]. Esta implementa- cio´n se encuentra especialmente optimizada para los AVRs y permite realizar aplicaciones flexibles y compactas. Uno de los detalles interesantes de esta biblioteca es que es posible redireccionar la entrada y salida esta´ndar (stdin y stdout) a cualquier dispositivo, por ejemplo el puerto serie. 3.4. Depurador El depurador del proyecto GNU, gdb [13], puede com- pilarse con soporte para AVR. A esta versio´n del gdb se la conoce como avr-gdb. El mismo es capaz de depurar progra- mas escritos para los AVR. Debido a que gdb es una aplica- cio´n enorme la misma corre en una PC comunica´ndose con un simulador de AVR o bien con el microcontrolador. GDB es una aplicacio´n de lı´nea de comandos, pero exis- ten varias interfaces de usuario disponibles para hacer ma´s simple su uso. 3.5. Simulador Un simulador capaz de simular el comportamiento de un AVR es el simulavr [14]. El mismo corre en una PC y es po- sible utilizarlo desde el avr-gdb para realizar una depuracio´n del co´digo simulado sin necesidad de disponer de un AVR real. 4. INTERFAZ DE DEPURACI ´ON 4.1. Introduccio´n El desarrollo de sistemas electro´nicos basados en siste- mas embebidos presenta un desafı´o a la hora de eliminar errores de implementacio´n. Esto se debe a que los microcon- troladores utilizados para estas tareas suelen ser pequen˜os y no es posible que ejecuten las complejas tareas involucradas en la depuracio´n de errores. La tarea se dificulta au´n ma´s cuando dichos dispositivos no poseen una interfaz de usua- rio amistosa, sin salida de vı´deo donde conectar un monitor ni entradas de teclado o similares para ingresar datos. Para solucionar estos problemas se suele incluir funcio- nalidad en el microcontrolador que permite realizar las ta- reas de depuracio´n en forma remota utilizando una compu- tadora personal, donde se encuentran disponibles los recur- sos antes mencionados. 4.2. Seleccio´n de la Arquitectura Los dispositivos modernos de la lı´nea AVR poseen faci- lidad de depuracio´n a trave´s de un puerto JTAG (Joint Test Action Group). Una posible solucio´n a este problema hu- biera sido implementar una interfaz compatible. La ventaja de esta solucio´n es que se podrı´a haber utilizado cualquier software ya disponible, sin modificaciones. La desventaja es que las PCs no poseen interfaz JTAG, esto implica un ca- ble especial. Este no es el u´nico problema, en la pra´ctica lo que soportan los programas no es el manejo directo de JTAG sino un protocolo especial que normalmente se implementa utilizando un microcontrolador. Ası´, estos cables en reali- dad implican el uso de un microcontrolador que es el que realmente se comunica por JTAG con el microcontrolador que deseamos depurar. Una solucio´n posible era implemen-
tar esta segunda CPU en la misma FPGA. Por otro lado era necesario implementar una unidad de depuracio´n compatible con la del AVR y someterse a sus li- mitaciones. Nuestro equipo ya poseı´a experiencia en el desa- rrollo de una unidad de depuracio´n [2], ma´s flexible que la de los AVR. Por lo que se decidio´ adaptar nuestra unidad de depuracio´n y evitar la necesidad de un segundomicrocontro- lador. La desventaja de este mecanismo es que es necesario adaptar el software para que funcione con nuestro microcon- trolador. 4.3. Comunicacio´n con la PC Nuestra unidad de depuracio´n original es un perife´rico que soporta el esta´ndar de interconexio´nWISHBONE. Para controlar este tipo de perife´ricos es necesario poder acceder al bus WISHBONE, que se encuentra dentro de la FPGA. Una forma de lograr este acceso es utilizando algu´n tipo de puente. En nuestro trabajo anterior usamos un puente de puerto paralelo en modo EPP a WISHBONE [15], desarro- llado por nuestro equipo. En este caso y debido a que el puerto paralelo ha sido reemplazado casi por completo por el USB optamos por utilizar un puente de USB a WISH- BONE [16] [17], tambie´n desarrollado por nuestro equipo. 4.4. Caracterı´sticas Nuestra unidad de depuracio´n permite: Detener/Reanudar la ejecucio´n del microcontrolador en cualquier momento. Ejecutar su programa paso a paso. Detener la ejecucio´n cuando se alcanzo´ una posicio´n de memoria determinada, punto de parada o break- point. La cantidad de breakpoints es configurable en- tre 1 y 256. Reinicializar el microcontrolador. Acceder a todos los registros, incluyendo el contador de programa. Acceder al espacio de entrada y salida. Inspeccionar la pila de llamadas (calling stack). Detener la ejecucio´n cuando se accede a una posicio´n de memoria de datos, watchpoint. Los accesos pue- den seleccionarse para detenerse por lectura, escritura o ambos. El nu´mero de watchpoints es configurable entre 1 y 256. Alterar la memoria de programa. Detectar desbordes en la pila y detener la ejecucio´n cuando esto sucede. 4.5. Software complementario Para poder depurar programas corriendo en microcon- troladores AVR es posible utilizar el avr-gdb, pero este pro- grama necesita comunicarse con otro programa que es el que realmente controla al microcontrolador. Un programa muy usado es el AVaRICE [18] y al ser software libre fue posible modificarlo. Se agrego´ soporte al AVaRICE para controlar nuestra unidad de depuracio´n utilizando el puerto USB. Como interfaz de usuario para controlar al avr-gdb se se- lecciono´ el programa SETEdit [19]. El mismo es el entorno de trabajo recomendado por el proyecto FPGALibre. SETE- dit implementa el protocolo GDB/MI para la depuracio´n de programas en C/C++ y assembler por lo que no fueron ne- cesarios cambios importantes para lograr que el mismo se adaptara a la depuracio´n de programas escritos en lenguaje C o assembler corriendo en dicho microcontrolador. 4.6. Hardware complementario El microcontrolador en cuestio´n no implementa la fun- cionalidad de reprogramacio´n incluida en el original. Esto no es un problema importante debido a que las FPGAs son reconfigurables y por lo tanto basta con volver a sintetizar el disen˜o para modificar el programa ejecutado por el micro- controlador. Es comu´n que los depuradores remotos puedan modificar el programa ejecutado por el sistema embebido, por lo que para complementar este desarrollo se disen˜o´ un perife´rico WISHBONE capaz de acceder a la memoria de programa del microcontrolador. Esto permitio´ reconfigurar dicha memoria sin necesidad de reconfigurar toda la FPGA. La Fig. 1 ilustra la interconexio´n entre los distintos com- ponentes de hardware antes mencionados, los bloques ilus- trados con relleno so´lido corresponden a los desarrollos des- criptos en este trabajo. En la Fig. 2 se muestra el flujo de da- tos dentro de la computadora, los datos ingresan a trave´s del puerto USB, son tomados por el sistema operativo (Linux) utilizando operaciones ba´sicas de entrada/salida y enviados al espacio de usuario a trave´s de la biblioteca libusb, estos datos son procesados por AVaRICE y traducidos al proto- colo remoto de gdb y finalmente el depurador (avr-gdb) los envı´a a la interfaz de usuario (SETEdit) utilizando el proto- colo GDB/MI. 5. RESULTADOS La Fig. 3 muestra una sesio´n de depuracio´n utilizando SETEdit. En la misma se observa el co´digo fuente del pro- grama, el co´digo desensamblado y una ventana utilizada pa- ra monitorizar el valor de una variable. Este desarrollo fue verificado utilizando FPGAs Spartan II y Spartan 3A de Xilinx. Para la sı´ntesis se utilizo´ el pro- grama XST 10.1.02 K.37. Fig. 1. Diagrama de conexiones de los bloques de hardware.
Fig. 2. Flujo de datos dentro de la computadora. El a´rea ocupada depende de varios para´metros, a conti- nuacio´n se describen algunos ejemplos. Configuracio´n ATmega103 con memoria de programa de 1024x16, sin perife´ricos internos y so´lo una UART pequen˜a en el bus WISHBONE: 644 slices (245 FFs y 1124 LUTs) 3 BRAMs. Configuracio´n ATmega8 con memoria de programa de 1024x16, sin perife´ricos internos y so´lo una UART pequen˜a en el bus WISHBONE: 707 slices (275 FFs y 1224 LUTs) 2 BRAMs y un multiplicador. Configuracio´nATtiny22 con memoria de programa de 1024x16, sin perife´ricos internos y so´lo una UART pequen˜a en el bus WISHBONE: 606 slices (237 FFs y 1053 LUTs) 2 BRAMs. Configuracio´n ATmega8 con memoria de programa de 1024x16, puerto B habilitado, una UART pequen˜a en el bus WISHBONE, interfaz de depuracio´n con 3 breakpoints y 3 watchpoints (USB): 1548 slices (902 FFs y 2477 LUTs) 4 BRAMs y unmultiplicador. Apro- ximadamente 500 de los slices son necesarios para la implementacio´n del puente de USB a WISHBONE. So´lo en el u´ltimo caso se le pidio´ a la herramienta que buscara cumplir con una frecuencia de trabajo fijada de 24 MHz para todo el circuito, salvo para el PHY de USB que debı´a correr a 48 MHz. En el resto de los casos no se pi- dio´ ningu´n requisito en particular y la herramienta repor- to frecuencias de trabajo de entre 30 y 37 MHz para una Spartan 3A grado 4. 5.1. Control de Motores de DC Con la finalidad de verificar el correcto funcionamien- to del microcontrolador y la capacidad de la unidad de de- puracio´n, se encaro´ el desarrollo de un control de posicio´n para motores de corriente continua. Para dicho control se decidio´ implementar un PID. Dicho desarrollo utiliza los si- guientes perife´ricos conectados al bus WISHBONE: Modulador PWM de 15 bits de resolucio´n. Decodificador de encoder relativo con 16 bits de reso- lucio´n. UART pequen˜a trabajando a 115200 baudios. La configuracio´n usada es compatible con el ATmega8 con una memoria de programa de 4096x16 y la unidad de depuracio´n habilitada. De los perife´ricos internos so´lo el puerto B se encuentra habilitado. Dicha configuracio´n in- sumio´ 1732 slices (1009 FFs y 2786 LUTs) 7 BRAMs y un multiplicador (Spartan 3A). Habie´ndose ya obtenido los primeros resultados exito- sos queda por refinar el mecanismo de determinacio´n de las constantes del PID. 6. CONCLUSIONES La eleccio´n de la arquitectura AVR permitio´ contar con una amplia gama de herramientas y bibliotecas. Al mismo tiempo se comprobo´ que programar este dispositivo es tan fa´cil como programar un AVR comercial. La unidad de depuracio´n obtenida es poderosa, capaz de realizar la mayor parte de las operaciones realizadas por de- puradores utilizados en computadoras personales, y que es de gran ayuda a la hora de buscar errores en sistemas fun- cionando en tiempo real. El uso de FPGAs posee como ventaja el hecho de que la unidad de depuracio´n puede removerse en la versio´n defini- tiva del disen˜o con lo que el mismo no ocupa recursos en el dispositivo final. En el caso en que el disen˜o ocupe pra´cti- camente el total de la FPGA basta con usar una FPGA ma´s grande durante la etapa de desarrollo, a los fines de incluir unidades de depuracio´n como esta. La seleccio´n del esta´ndar de interconexio´nWISHBONE permitio´ el reuso de un puente de puerto USB y abre la posi- bilidad a la implementacio´n de otro tipo de mecanismos de comunicacio´n, como podrı´an ser RS-232 o Ethernet. La eleccio´n de modificar un programa como AVaRICE permitio´ acelerar notablemente el desarrollo y reusar interfa- ces de usuario ya existentes y con las cuales nuestro equipo ya se encontraba familiarizado. La utilizacio´n de las herramientas propuestas por el pro- yecto FPGALibre mostro´ ser adecuada para este desarrollo. Fig. 3. Sesio´n de depuracio´n.
7. REFERENCIAS [1] S. E. Tropea and J. P. D. Borgna, “Microcontrolador com- patible con PIC16C84, bus WISHBONE y video,” in FPGA Based Systems. Mar del Plata: Surlabs Project, II SPL, 2006, pp. 117–122. [2] S. E. Tropea, “Interfaz de depuracio´n para microcontrolador,” in 2008 4th Southern Conference on Programmable Logic Designer Forum Proceedings, Bariloche, 2008, pp. 105–108. [3] R. M. Cibils, A. Busto, J. L. Gonella, R. Martinez, A. J. Chie- lens, J. M. Otero, M. ˜Nun˜ez, and S. E. Tropea, “Wide range neutron flux measuring channel for aerospace application,” in Space Technology and Applications International Forum- STAIF 2008 Proceedings, vol. 969, New Me´xico, 2008, pp. 316–325. [4] S. E. Tropea, D. J. Brengi, and J. P. D. Borgna, “FPGAlibre: Herramientas de software libre para disen˜o con FPGAs,” in FPGA Based Systems. Mar del Plata: Surlabs Project, II SPL, 2006, pp. 173–180. [5] INTI Electro´nica e Informa´tica et al., “Proyecto FPGA Li- bre,” http://fpgalibre.sourceforge.net/. [6] Debian, “Sistema operativo Debian GNU/Linux,” http://- www.debian.org. [7] “GNU project,” http://www.gnu.org/. [8] R. Lepetenok. (2009, Nov.) AVR Core. OpenCores.org. [On- line]. Available: http://www.opencores.org/project,avr core [9] Silicore and OpenCores.Org, “WISHBONE System-on-Chip (SoC) interconnection architecture for portable IP cores,” http://prdownloads.sf.net/fpgalibre/wbspec b3-2.pdf?down- load. [10] (2009, Nov.) Avr assembler (avra). [Online]. Available: http://avra.sourceforge.net/ [11] (2009, Nov.) GCC, the GNU compiler collection. [Online]. Available: http://gcc.gnu.org/ [12] M. Michalkiewicz, J. Wunsch et al. (2009, Nov.) AVR C run- time library. [Online]. Available: http://www.nongnu.org/- avr-libc/ [13] (2009, Nov.) GDB: The GNU project debugger. [Online]. Available: http://www.gnu.org/software/gdb/ [14] T. A. Roth et al. (2009, Nov.) Simulavr: an AVR simulator. [Online]. Available: http://savannah.nongnu.org/- projects/simulavr/ [15] A. Trapanotto, D. J. Brengi, and S. E. Tropea, “Puente IEEE 1284 en modo EPP a bus WISHBONE,” in FPGA Based Sys- tems. Mar del Plata: Surlabs Project, II SPL, 2006, pp. 257– 264. [16] R. A. Melo and S. E. Tropea, “IP core puente USB a WISH- BONE,” in XV Workshop Iberchip, vol. 2, Buenos Aires, 2009, pp. 531–533. [17] S. E. Tropea and R. A. Melo, “USB framework - IP core and related software,” in XV Workshop Iberchip, vol. 1, Buenos Aires, 2009, pp. 309–313. [18] S. Finneran. (2009, Nov.) AVR in circuit emulator. [Online]. Available: http://avarice.sourceforge.net/ [19] Salvador E. Tropea et al., “SETEdit, un editor de texto ami- gable,” http://setedit.sourceforge.net. Ver+/- | |
![]() | Descargar |
Atrás |