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

Federico Andrade - InCo fandrade en fing.edu.uy
Dom Abr 7 20:23:16 UYT 2013


Si sí, es USB. Es a partir de ese bootloader que se puede grabar un
programa desde el IDE de arduino a través del puerto USB.


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

> Pero es un bootloader USB?
> Activar el usb si no trae el stack USB implementado es como conectar una
> placa de red a un pc pero no tener un stack tcp-ip en el Sistema Operativo.
>
>
> 2013/4/6 Federico Andrade - InCo <fandrade en fing.edu.uy>
>
>> 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/20130407/637cfaed/attachment.html


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