[Butia-devel-list] Placa Butiá basada en Arduino Leonardo (usando el micro ATmega 32u4)

Federico Andrade - InCo fandrade en fing.edu.uy
Sab Abr 6 21:33:01 UYT 2013


Claro, pero no es que yo escribí el bootloader, sino que agarré el
bootloader que hicieron los de arduino, el mismo que venden quemado en
todos sus micros para que la gente los pueda programar usando el ide de
ellos. En particular, agarré el que usan para este micro. Es un bootloader
que ya está mas que testeado y está en producción.
De todas fomas, estuve leyendo el codigo y si bien no lo entendí todo, el
tipo activa el usb sí y hace un montón de cosas con eso.


2013/4/6 Andres Aguirre <aaguirre en fing.edu.uy>

> ese error lo sufrimos mil veces con edgardito en un proyecto que
> trabajamos juntos :P
> Se nos daba por envejecimiento del software, luego de varios días de
> usarse el sistema aparecía eso. Generalmente porque se colgaba el
> microcontrolador, el pc le mandaba un reset al dispositivo y este no
> respondía a los mensajes de enumeración (justamente porque estaba colgado).
> Si decis que mueve el led, primero asegurate que el bootloader realmente
> implemente el protocolo USB y que no tengas que ponerlo vos. Ya sabes que
> clase USB estas usando? todo eso es parte de lo que tenes que pensar, vas a
> querer que se muestre como serial? como un dispositivo de interfaz humana?
> hay muchas alternativas.  Me suena que no tenes nada que hable USB del otro
> lado. Acordate que el micro solo trae el transceiver USB, el stack tenés
> que implementarlo por software o usar una biblioteca que lo haga.
> abrazo
> andres
>
>
>
>
> 2013/4/6 Federico Andrade - InCo <fandrade en fing.edu.uy>
>
>> El error fue lo primero que busque.En mi maquina da error 32 que es
>> broken pipe y en otra pc me da 71 que es error en el protocolo. Por lo que
>> estuve leyendo, estos errores se asocian a problemas de hardware que
>> generan problemas de comunicación...pero no puedo descubir donde ni cual es
>> el problema.
>>
>> Los voltajes están bien, probe en distintas máquinas, con distintos
>> cables. Probe la continuidad desde las patas del micro y la punta que va en
>> la pc del cable usb y estaba todo ok.
>> El micro está corriendo normal con el bootloader...toy desconcertado
>>
>>
>> 2013/4/6 Alan Jhonn Aguiar Schwyn <alanjas en hotmail.com>
>>
>>> Eso lo encontré en una página por ahí.
>>> Quizás si buscás ese error encontrás algo. Parece ser un error común.
>>>
>>> ------------------------------
>>> From: fandrade en fing.edu.uy
>>> Date: Sat, 6 Apr 2013 15:41:41 -0300
>>> To: aaguirre en fing.edu.uy
>>>
>>> CC: butia-devel-l en fing.edu.uy; butia en fing.edu.uy
>>> Subject: Re: [Butia-devel-list] Placa Butiá basada en Arduino Leonardo
>>> (usando el micro ATmega 32u4)
>>>
>>> Nop, he grabado el mismo bootloader para otros micros atmega corren de
>>> una.
>>>
>>> Esta es la salida dp de haber grabado el bootloader:
>>>
>>> fede en leni:~$ avrdude -p m32U4 -P /dev/ttyUSB0 -c avrisp -b 19200 -U flash:w:arduino/arduino/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex
>>>
>>>
>>>
>>>
>>>
>>> avrdude: AVR device initialized and ready to accept instructions
>>>
>>>
>>> Reading | ################################################## | 100% 0.02s
>>>
>>> avrdude: Device signature = 0x1e9587
>>> avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
>>> áá á á á To disable this feature, specify the -D option.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> avrdude: erasing chip
>>> avrdude: reading input file "arduino/arduino/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex"
>>> avrdude: input file arduino/arduino/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex auto detected as Intel Hex
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> avrdude: writing flash (32722 bytes):
>>>
>>> Writing | ################################################## | 100% 9.66s
>>>
>>> avrdude: 32722 bytes of flash written
>>> avrdude: verifying flash memory against arduino/arduino/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex:
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> avrdude: load data flash data from input file arduino/arduino/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex:
>>> avrdude: input file arduino/arduino/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex auto detected as Intel Hex
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> avrdude: input file arduino/arduino/hardware/arduino/bootloaders/caterina/Caterina-Leonardo.hex contains 32722 bytes
>>> avrdude: reading on-chip flash data:
>>>
>>> Reading | ################################################## | 100% 19.13s
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> avrdude: verifying ...
>>> avrdude: 32722 bytes of flash verified
>>>
>>> avrdude: safemode: Fuses OK
>>>
>>> avrdude done. áThank you.
>>>
>>> fede en leni:~$
>>>
>>>
>>> DespuÚs hay que setearle los fuses, y la salida fue la siguiente:
>>>
>>> fede en leni:~$ avrdude -p m32u4 -P /dev/ttyUSB0 -c avrisp -b 19200 -nv
>>> avrdude: Version 5.11.1, compiled on Oct 30 2011 at 10:41:10
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
>>> áá á á á Copyright (c) 2007-2009 Joerg Wunsch
>>>
>>> áá á á á System wide configuration file is "/etc/avrdude.conf"
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á User configuration file is "/home/fede/.avrduderc"
>>> áá á á á User configuration file does not exist or is not a regular file, skipping
>>>
>>> áá á á á Using Port á á á á á á á á á á: /dev/ttyUSB0
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á Using Programmer á á á á á á á: avrisp
>>>
>>> áá á á á Overriding Baud Rate á á á á á: 19200
>>> áá á á á AVR Part á á á á á á á á á á á: ATmega32U4
>>> áá á á á Chip Erase delay á á á á á á á: 9000 us
>>> áá á á á PAGEL á á á á á á á á á á á á : PD7
>>> áá á á á BS2 á á á á á á á á á á á á á : PA0
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á RESET disposition á á á á á á : dedicated
>>> áá á á á RETRY pulse á á á á á á á á á : SCK
>>> áá á á á serial program mode á á á á á : yes
>>> áá á á á parallel program mode á á á á : yes
>>> áá á á á Timeout á á á á á á á á á á á : 200
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á StabDelay á á á á á á á á á á : 100
>>> áá á á á CmdexeDelay á á á á á á á á á : 25
>>> áá á á á SyncLoops á á á á á á á á á á : 32
>>> áá á á á ByteDelay á á á á á á á á á á : 0
>>> áá á á á PollIndex á á á á á á á á á á : 3
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á PollValue á á á á á á á á á á : 0x53
>>> áá á á á Memory Detail á á á á á á á á :
>>>
>>> áá á á á á á á á á á á á á á á á áBlock Poll á á á á á á á Page á á á á á á á á á á á Polled
>>> áá á á á á Memory Type Mode Delay Size áIndx Paged áSize á Size #Pages MinW áMaxW á ReadBack
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á á ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
>>> áá á á á á eeprom á á á á65 á á10 á á 8 á á0 no á á á 1024 á á8 á á á0 á9000 á9000 0x00 0x00
>>> áá á á á á flash á á á á 65 á á 6 á 128 á á0 yes á á 32768 á128 á á256 á4500 á4500 0x00 0x00
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á á lfuse á á á á á0 á á 0 á á 0 á á0 no á á á á á1 á á0 á á á0 á9000 á9000 0x00 0x00
>>> áá á á á á hfuse á á á á á0 á á 0 á á 0 á á0 no á á á á á1 á á0 á á á0 á9000 á9000 0x00 0x00
>>> áá á á á á efuse á á á á á0 á á 0 á á 0 á á0 no á á á á á1 á á0 á á á0 á9000 á9000 0x00 0x00
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á á lock á á á á á 0 á á 0 á á 0 á á0 no á á á á á1 á á0 á á á0 á9000 á9000 0x00 0x00
>>> áá á á á á calibration á á0 á á 0 á á 0 á á0 no á á á á á1 á á0 á á á0 á á 0 á á 0 0x00 0x00
>>> áá á á á á signature á á á0 á á 0 á á 0 á á0 no á á á á á3 á á0 á á á0 á á 0 á á 0 0x00 0x00
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á Programmer Type : STK500
>>> áá á á á Description á á : Atmel AVR ISP
>>> áá á á á Hardware Version: 2
>>> áá á á á Firmware Version: 1.18
>>> áá á á á Topcard á á á á : Unknown
>>> áá á á á Vtarget á á á á : 0.0 V
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> áá á á á Varef á á á á á : 0.0 V
>>> áá á á á Oscillator á á á: Off
>>> áá á á á SCK period á á á: 0.1 us
>>>
>>>
>>> avrdude: AVR device initialized and ready to accept instructions
>>>
>>> Reading | ################################################## | 100% 0.02s
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> avrdude: Device signature = 0x1e9587
>>> avrdude: safemode: lfuse reads as E0
>>> avrdude: safemode: hfuse reads as D8
>>> avrdude: safemode: efuse reads as CB
>>>
>>> avrdude: safemode: lfuse reads as E0
>>> avrdude: safemode: hfuse reads as D8
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> avrdude: safemode: efuse reads as CB
>>> avrdude: safemode: Fuses OK
>>>
>>> avrdude done. áThank you.
>>>
>>> fede en leni:~$
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Esta es la salida dp de haber grabado el bootload. DescubrÝ por ahi que
>>> el bootloader cuando estß funcionando prende y apaga un led en una de las
>>> patas del micro, entonces le puse el led y efectivamente le mismo estß
>>> corriendo.
>>> Sin embargo sigue fallando la comuniaci¾n usb entre la placa y el micro.
>>>
>>> Acß estß la prueba
>>> http://www.youtube.com/watch?v=t-e35YtVw-g&feature=youtu.be
>>>
>>>
>>> Alan, eso que me pusiste por ahi...no lo puedo hacer, ni siendo root..
>>> tenÚs la fuente?
>>> sabÚs bien que es lo que genera?
>>>
>>>
>>>
>>>
>>> 2013/4/5 Andres Aguirre <aaguirre en fing.edu.uy>
>>>
>>> y el bootloader no esperara que toques un bot¾n al iniciar para arrancar
>>> a ejecutar ?
>>> generalmente el c¾digo de los bootloader es:
>>>
>>> if(condici¾n_ejecuci¾n)
>>> á á //c¾digo del bootloader
>>> else
>>> á á //salto a posici¾n donde se encuentra el c¾digo del usuario
>>>
>>> slaudos
>>> á
>>>
>>>
>>> 2013/4/4 Federico Andrade - InCo <fandrade en fing.edu.uy>
>>>
>>> En el micro grabÚ el bootloader que viene con la placa Arduino Leonardo.
>>> Exactamente el mismo, ademßs fueron seteados los fuses tal cual la placa
>>> Arduino Leonardo (que tiene el mismo micro). Al final del proceso de
>>> grabaci¾n, el programita que graba, leÚ la memoria y hace un checksum de lo
>>> que leyo comparado con lo que queria grabar y eso dio bien, o sea que estoy
>>> bastante seguro que el checksum esta ok.
>>>
>>> Creo que el error viene por otro lado :S
>>>
>>>
>>> 2013/4/4 Andres Aguirre <aaguirre en fing.edu.uy>
>>>
>>>
>>> 2013/4/4 Federico Andrade - InCo <fandrade en fing.edu.uy>
>>>
>>> device descriptor read/64, error -32
>>>
>>>
>>> primero que nada, que tiene dentro el micro? viene de fßbrica o le
>>> grabaste algo??
>>> Cuando uno conecta algo al USB se da un proceso llamado enumeraci¾n
>>> entre el dispositivo y el host, es bßsicamente un protocolo que permite que
>>> el sistema operativo descubra que tipo de dispositivo es y asigne recursos
>>> para elá
>>> http://support.atmel.no/knowledgebase/avr32studiohelp/AT32UC3A_Software_Framework/DRIVERS/USBB/EXAMPLES/ENUM_EXAMPLE_FREERTOS/DOC/html/usb_host_task.jpg.
>>> En este protocolo el device intercambia descriptores con el host, esto
>>> tiene que estar implementado por tu micro por vos o por una biblioteca del
>>> fabricante que implemente el stack usb. Hay muchas cosas interesantes acß
>>> que uno puede especificar que estß bueno para charlar mßs adelante.
>>> Asegurate que tengas los bits adecuados en tu micro.
>>> saludos
>>> andres
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________ Butia-devel-l site list
>>> Butia-devel-l en fing.edu.uy
>>> https://www.fing.edu.uy/mailman/listinfo/butia-devel-l
>>>
>>
>>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://www.fing.edu.uy/pipermail/butia-devel-l/attachments/20130406/cf6d8a84/attachment.html


Más información sobre la lista de distribución Butia-devel-l