Lattuino ... microLattuino p/Stick

245 views
Skip to first unread message

Salvador Eduardo Tropea

unread,
May 5, 2017, 12:39:27 PM5/5/17
to fpga-wars-explora...@googlegroups.com
¡Hola!

Para los que quieran jugar un poco con el Lattuino armé una versión
extremadamente recortada (2kiB de flash y sólo pines de I/O digital)
para el iCE Stick.

Sintetiza con lo justo, de hecho si se le relaja el constrain de
frecuencia el sintetizador dice que no entra. Por lo que es posible que
sea necesario usar el mismo iCECube2 (2016.02).

Agregué el soporte para la IDE de Arduino, por lo que es el mismo
mecanismo que describo para el Lattuino en la Kéfir. La "placa" se llama
"Lattuino Stick (2k)".

Como el canal RS-232 del iCE Stick es el segundo es necesario indicarle
a la IDE que use el /dev/ttyUSB1

Hay que tener en cuenta que ni siquiera la función delay funciona, sólo
funciona lo que use estrictamente la parte de pines digitales (debería
funcionar la parte de puerto serie, no probado).

Este es un ejemplo probado:

void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(0, OUTPUT);
}

void delayTest()
{
unsigned i;
for (i=16; i; i--)
_delay_loop_2(0);
}

void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the
voltage level)
digitalWrite(0, LOW);
delayTest();
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the
voltage LOW
digitalWrite(0, HIGH);
delayTest();
}

Debería ser trivial adaptar esta versión de Lattuino para que funcione
en la IceZum o en la iCE Blink.

Saludos, Salvador

--
Ing. Salvador Eduardo Tropea http://utic.inti.gob.ar/
INTI - Micro y Nanoelectrónica (CMNB) http://www.inti.gob.ar/
Unidad Técnica Sistemas Inteligentes Av. General Paz 5445
Tel: (+54 11) 4724 6300 ext. 6919 San Martín - B1650KNA
FAX: (+54 11) 4754 5194 Buenos Aires * Argentina




Jesús Arroyo

unread,
May 10, 2017, 11:53:51 AM5/10/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
Buenas Salvador:

Estoy probando la síntesis de este miniCore en la Icestick.

He instalado iCEcube2 así como las lattuino-tools. He modificado la variable XIL_TOOLS_ICE_DIR para que apunte a la ruta de mi iCEcube. He tenido también que apuntar /bin/sh -> /bin/bash (en vez de a dash que es lo que usa por defecto).

A continuación he instalado "libswitch-perl" que por lo visto es necesario para compilar.

La generación de lattuino_1 tarda unos 20s y genera el siguiente output (no se si es un error o un warning):

Parsing constraint file: ../lattuino_1.pcf...
/home/jesus/code/fpgacores/lattuino/FPGA/lattuino_1/gen/../lattuino_1.pcf:25: warning pin ISP_RESET doesn't exist in the design netlist.ignoring the set_io command
parse file ../lattuino_1.pcf error. But they are ignored
start to read sdc/scf file Target_Implmnt/Target.scf
sdc_reader OK Target_Implmnt/Target.scf
./command_wrapper.sh: line 5: 28056 Segmentation fault      (core dumped) "$@" > comunica 2>&1
Makefile:233: recipe for target 'gen/Target_Implmnt/sbt/Temp/sbt_temp.sdc' failed
make: *** [gen/Target_Implmnt/sbt/Temp/sbt_temp.sdc] Error 139
make: Leaving directory '/home/jesus/code/fpgacores/lattuino/FPGA/lattuino_1'

En el caso de lattuino_stick obtengo este error:

Pre Loading Built-In Library lattice ...
/home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl:65:7: note Top entity is set to Lattuino_Stick.
/home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl:62:29: warning Ignoring use clause - wbdevinterconpkg not found ... (CD643)
/home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl:242:22: error Can't associate actual.  Formal 'ena_avr25' is unknown. (CD725)
/home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl:368:21: error Expecting keyword of (CD415)
2 errors parsing file /home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl
:0: error
[...]
Synthesis exit by 2.
Makefile:218: recipe for target 'gen/Target_Implmnt/Target.edf' failed
make: *** [gen/Target_Implmnt/Target.edf] Error 2


No se si me falta algo por configurar. Una duda, para descargar el bitstream tengo que utilizar el IDE de iCEcube2?

Muchas gracias!

Un saludo.

Salvador Eduardo Tropea

unread,
May 11, 2017, 8:44:53 AM5/11/17
to Jesús Arroyo, FPGAwars: explorando el lado libre
Hola Jesús!

El 10/05/17 a las 12:53, Jesús Arroyo escribió:
> Buenas Salvador:
>
> Estoy probando la síntesis de este miniCore en la Icestick.

Buenísimo.

> He instalado iCEcube2 así como las lattuino-tools. He modificado la
> variable /XIL_TOOLS_ICE_DIR/ para que apunte a la ruta de mi iCEcube.
> He tenido también que apuntar /bin/sh -> /bin/bash (en vez de a dash
> que es lo que usa por defecto).

Si, esto parece que es necesario para *todas* las herramientas
propietarias (Xilinx, Altera, etc.).
Yo lo menciono en: http://fpgalibre.sourceforge.net/sintesis.html#tp6
Voy a ver si agrego esto en la parte del iCEcube2, buen dato!

> A continuación he instalado "libswitch-perl" que por lo visto es
> necesario para compilar.

No me había percatado, xiltools debería depender de esa biblioteca, otro
buen dato.

> La generación de lattuino_1 tarda unos 20s y genera el siguiente
> output (no se si es un error o un warning):
>
> Parsing constraint file: ../lattuino_1.pcf...
> /home/jesus/code/fpgacores/lattuino/FPGA/lattuino_1/gen/../lattuino_1.pcf:25:
> warning pin ISP_RESET doesn't exist in the design netlist.ignoring the
> set_io command
> parse file ../lattuino_1.pcf error. But they are ignored

Esto es un pin declarado en el PCF, pero no usado en el toplevel, hasta
acá ok.

> start to read sdc/scf file Target_Implmnt/Target.scf
> sdc_reader OK Target_Implmnt/Target.scf
> ./command_wrapper.sh: line 5: 28056 Segmentation fault (core dumped)
> "$@" > comunica 2>&1

Esto ya es un problema. Esto indica que la herramienta murió con SIGSEGV

> Makefile:233: recipe for target
> 'gen/Target_Implmnt/sbt/Temp/sbt_temp.sdc' failed

Al parecer lo que murió es "edifparser", enviame una captura completa de
los errores, quizás viene de un error anterior. Hacé un clean antes.

> make: *** [gen/Target_Implmnt/sbt/Temp/sbt_temp.sdc] Error 139
> make: Leaving directory
> '/home/jesus/code/fpgacores/lattuino/FPGA/lattuino_1'
>
> En el caso de lattuino_stick obtengo este error:
>
> Pre Loading Built-In Library lattice ...
> /home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl:65:7:
> note Top entity is set to Lattuino_Stick.
> /home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl:62:29:
> warning Ignoring use clause - wbdevinterconpkg not found ... (CD643)
> /home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl:242:22:
> error Can't associate actual. Formal 'ena_avr25' is unknown. (CD725)
> /home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl:368:21:
> error Expecting keyword of (CD415)
> 2 errors parsing file
> /home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick/lattuino_stick.vhdl
> :0: error
> [...]
> Synthesis exit by 2.
> Makefile:218: recipe for target 'gen/Target_Implmnt/Target.edf' failed
> make: *** [gen/Target_Implmnt/Target.edf] Error 2

Oops! olvidé subir un cambio en el AVR, ya está en GitHub.

> No se si me falta algo por configurar.

No lo creo, hay que ver porque está reventando la herramienta. Quizás
falló algo en un paso anterior.

> Una duda, para descargar el bitstream tengo que utilizar el IDE de
> iCEcube2?

No, no se puede desde ahí.
El target "transfer-rom" del Makefile lo hace usando flashrom.


Saludos, Salvador

Jesús Arroyo

unread,
May 11, 2017, 9:23:58 AM5/11/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
Buenas Salvador

He actualizado los cambios. He visto que en los Makefile se utiliza directamente el path "/home/opt/iCEcube2.2016.02" en vez de la variable XIL_TOOLS_ICE_DIR. Para probar la he modificado a mano.

Adjunto el output de los dos scripts.

Un saludo.
lattuino_stick.output
lattuino_1.output

Salvador Eduardo Tropea

unread,
May 11, 2017, 11:43:48 AM5/11/17
to fpga-wars-explora...@googlegroups.com
Hola Jesús:

El 11/05/17 a las 10:23, Jesús Arroyo escribió:
> Buenas Salvador
>
> He actualizado los cambios. He visto que en los Makefile se utiliza
> directamente el path "/home/opt/iCEcube2.2016.02" en vez de la
> variable XIL_TOOLS_ICE_DIR.

Es cierto, lo estoy corrigiendo, normalmente los Makefiles se regeneran
automáticamente (llamando a xil_project.pl --make).


> Para probar la he modificado a mano.
>
> Adjunto el output de los dos scripts.

Veo que muere la herramienta, estoy instalando la misma versión para probar.

Salvador Eduardo Tropea

unread,
May 11, 2017, 11:46:57 AM5/11/17
to fpga-wars-explora...@googlegroups.com
El 11/05/17 a las 12:43, Salvador Eduardo Tropea escribió:
>
>> Adjunto el output de los dos scripts.
>
> Veo que muere la herramienta, estoy instalando la misma versión para
> probar.
>
>
No es un problema con la versión, instalé el nuevo y sintetizó:

Entity: Lattuino_1 | Part: iCE40HX4K-TQ144 | Optimized for: N/A |
Constrained:
Synthesis tool: Lattice 2016.02.27810
xil_project.pl version: 0.5.9

Flip Flops: 585/3520 16.62 %
LUTs: 1946/3520 55.28 %
Cells: 1954/3520 55.51 %
--------------------------------------------------------------------------------
BRAMs: 20/20 100.00 %
--------------------------------------------------------------------------------
Max. Clock: 25.15 MHz (39.76 ns) [CLK]
********************************************************************************


Revision: 1.48 - jue may 11 12:42:09 ART 2017
Entity: Lattuino_1 | Part: iCE40HX4K-TQ144 | Optimized for: N/A |
Constrained:
Synthesis tool: Lattice 2017.01.27914
xil_project.pl version: 0.5.9

Flip Flops: 585/3520 16.62 %
LUTs: 1923/3520 54.63 %
Cells: 1931/3520 54.86 %
--------------------------------------------------------------------------------
BRAMs: 20/20 100.00 %
--------------------------------------------------------------------------------
Max. Clock: 25.35 MHz (39.45 ns) [CLK]
********************************************************************************

Voy a comparar los logs.

Salvador Eduardo Tropea

unread,
May 11, 2017, 11:54:33 AM5/11/17
to fpga-wars-explora...@googlegroups.com
El 11/05/17 a las 12:46, Salvador Eduardo Tropea escribió:
> El 11/05/17 a las 12:43, Salvador Eduardo Tropea escribió:
>>
>>> Adjunto el output de los dos scripts.
>>
>> Veo que muere la herramienta, estoy instalando la misma versión para
>> probar.
>>
>>
> No es un problema con la versión, instalé el nuevo y sintetizó:
>
[snip]
>
> Voy a comparar los logs.

El Synplify me dió indéntico al tuyo:

Mapping to part: ice40hx4ktq144
Cell usage:
GND 22 uses
SB_CARRY 210 uses
SB_DFF 57 uses
SB_DFFE 178 uses
SB_DFFESR 169 uses
SB_DFFESS 7 uses
SB_DFFN 14 uses
SB_DFFSR 165 uses
SB_DFFSS 6 uses
SB_GB 5 uses
SB_RAM2048x2 16 uses
SB_RAM256x16 3 uses
SB_RAM512x8 1 use
VCC 22 uses
SB_LUT4 1596 uses

I/O ports: 38
I/O primitives: 35
SB_GB_IO 1 use
SB_IO 34 uses

I/O Register bits: 0
Register bits not including I/Os: 596 (16%)

RAM/ROM usage summary
Block Rams : 20 of 20 (100%)

Total load per clock:
Lattuino_1|CLK: 1

@S |Mapping Summary:
Total LUTs: 1596 (45%)

Distribution of All Consumed LUTs = LUT4
Distribution of All Consumed Luts 1596 = 1596

Por lo que entiendo que los fuentes son idénticos.
Sigo buscando diferencias ;-)

Salvador Eduardo Tropea

unread,
May 11, 2017, 12:21:11 PM5/11/17
to fpga-wars-explora...@googlegroups.com
El 11/05/17 a las 12:54, Salvador Eduardo Tropea escribió:
> El 11/05/17 a las 12:46, Salvador Eduardo Tropea escribió:
>> El 11/05/17 a las 12:43, Salvador Eduardo Tropea escribió:
>>>
>>>> Adjunto el output de los dos scripts.
>>>
>>> Veo que muere la herramienta, estoy instalando la misma versión para
>>> probar.
>>>
>>>
>> No es un problema con la versión, instalé el nuevo y sintetizó:
>>
> [snip]
>>
>> Voy a comparar los logs.
>
> El Synplify me dió indéntico al tuyo:
[snip]
>
> Por lo que entiendo que los fuentes son idénticos.
> Sigo buscando diferencias ;-)

El binario que muere es:

/home/jesus/lscc/iCEcube2.2017.01/sbt_backend/bin/linux/opt/edifparser

En mi sistema el MD5 es "aa62b2fa787ee7ca4a922325b38b7693" (md5sum)

La descripción de la FPGA es:

/home/jesus/lscc/iCEcube2.2017.01/sbt_backend/devices/ICE40P04.dev

MD5: 5b423429ac3eb54dc21d69d58e65e8f0

El resultado de la síntesis es: Target_Implmnt/Target.edf
Esto está en el directorio gen. Adjunto lo que tengo yo.

El directorio de salida es: Target_Implmnt/sbt/netlist
Esto veo que el makefile tuyo lo está creando, ya que encontré:

mkdir gen/Target_Implmnt/sbt/netlist

Verificá que este directorio exista y se pueda escribir ahí, si no está
la herramienta muere miserablemente.


Los constraints son: ../lattuino_1.pcf
Adjunto mi copia.

Veamos si hay alguna diferencia.
Target.edf.bz2
lattuino_1.pcf

Jesús Arroyo

unread,
May 11, 2017, 1:25:14 PM5/11/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
Buenas Salvador:


El jueves, 11 de mayo de 2017, 18:21:11 (UTC+2), Salvador Eduardo Tropea escribió:
El binario que muere es:

/home/jesus/lscc/iCEcube2.2017.01/sbt_backend/bin/linux/opt/edifparser

En mi sistema el MD5 es "aa62b2fa787ee7ca4a922325b38b7693" (md5sum)


Mismo MD5
 
La descripción de la FPGA es:

/home/jesus/lscc/iCEcube2.2017.01/sbt_backend/devices/ICE40P04.dev

MD5: 5b423429ac3eb54dc21d69d58e65e8f0


Mismo MD5
 
El resultado de la síntesis es: Target_Implmnt/Target.edf
Esto está en el directorio gen. Adjunto lo que tengo yo.


Adjunto mi fichero.
 
El directorio de salida es: Target_Implmnt/sbt/netlist
Esto veo que el makefile tuyo lo está creando, ya que encontré:

mkdir gen/Target_Implmnt/sbt/netlist

Verificá que este directorio exista y se pueda escribir ahí, si no está
la herramienta muere miserablemente.


Los directorios tienen permisos. El contenido de netlist es:

$ tree netlist/
netlist/
└── oadb-Lattuino_1
    └── BFPGA_DESIGN_ep
 

Los constraints son: ../lattuino_1.pcf
Adjunto mi copia.

Adjunto también el documento
 
Target.edf.bz2
lattuino_1.pcf

Salvador Eduardo Tropea

unread,
May 11, 2017, 2:10:24 PM5/11/17
to Jesús Arroyo, FPGAwars: explorando el lado libre
El 11/05/17 a las 14:25, Jesús Arroyo escribió:
> Buenas Salvador:
>
> El jueves, 11 de mayo de 2017, 18:21:11 (UTC+2), Salvador Eduardo
> Tropea escribió:
>
> El binario que muere es:
>
> /home/jesus/lscc/iCEcube2.2017.01/sbt_backend/bin/linux/opt/edifparser
>
>
> En mi sistema el MD5 es "aa62b2fa787ee7ca4a922325b38b7693" (md5sum)
>
>
> Mismo MD5

Ok.

>
> La descripción de la FPGA es:
>
> /home/jesus/lscc/iCEcube2.2017.01/sbt_backend/devices/ICE40P04.dev
>
> MD5: 5b423429ac3eb54dc21d69d58e65e8f0
>
>
> Mismo MD5

Ok.

>
> El resultado de la síntesis es: Target_Implmnt/Target.edf
> Esto está en el directorio gen. Adjunto lo que tengo yo.
>
>
> Adjunto mi fichero.

Sólo difieren en la fecha, por lo que son idénticos.

>
> El directorio de salida es: Target_Implmnt/sbt/netlist
> Esto veo que el makefile tuyo lo está creando, ya que encontré:
>
> mkdir gen/Target_Implmnt/sbt/netlist
>
> Verificá que este directorio exista y se pueda escribir ahí, si no
> está
> la herramienta muere miserablemente.
>
>
> Los directorios tienen permisos. El contenido de netlist es:
>
> $ tree netlist/
> netlist/
> └── oadb-Lattuino_1
> └── BFPGA_DESIGN_ep

La herramienta comenzó a crear los directorios, pero quedó ahí, lo menos
que debería generar es:

netlist/
└── oadb-Lattuino_1
├── BFPGA_DESIGN_ep
│ └── Lattuino_1
│ └── INTERFACE
│ ├── master.tag
│ └── netlist.oa
...

>
>
> Los constraints son: ../lattuino_1.pcf
> Adjunto mi copia.
>
>
> Adjunto también el documento

Son idénticos.

>
>
> Veamos si hay alguna diferencia.
>


No es un problema de los archivos. Son los mismos ejecutables con los
mismos datos de entrada. Es algo relacionado con el sistema, quizás
alguna de las versiones de las bibliotecas dinámicas.
Probá esto:

1) Editá command_wrapper.sh para que llame a strace, es decir que donde
dice: (strace es parte del paquete homónimo)

"$@" > comunica 2>&1

Diga:

strace "$@" > comunica 2>&1

2) Corré el comando que corre el makefile y capturale la salida, algo así:

LD_LIBRARY_PATH=/home/jesus/lscc/iCEcube2.2017.01/sbt_backend/lib/linux/opt
./command_wrapper.sh
/home/jesus/lscc/iCEcube2.2017.01/sbt_backend/bin/linux/opt/edifparser
/home/jesus/lscc/iCEcube2.2017.01/sbt_backend/devices/ICE40P04.dev
Target_Implmnt/Target.edf Target_Implmnt/sbt/netlist -pTQ144
-y../lattuino_1.pcf -c --devicename iCE40HX4K > salida.txt 2> error.txt

Esto lo corrés desde donde está el makefile.
Veamos donde es que revienta.

Jesús Arroyo

unread,
May 11, 2017, 2:32:03 PM5/11/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
Buenas

Sí, debe ser alguna dependencia externa. Te adjunto los documentos salida.txt y error.txt.
error.txt
salida.txt

Salvador Eduardo Tropea

unread,
May 11, 2017, 2:49:57 PM5/11/17
to Jesús Arroyo, FPGAwars: explorando el lado libre
Probá instalar libnss-myhostname:i386

El 11/05/17 a las 15:32, Jesús Arroyo escribió:

Salvador Eduardo Tropea

unread,
May 11, 2017, 2:53:00 PM5/11/17
to fpga-wars-explora...@googlegroups.com
Antes que me olvide, actualicé xiltools, nueva versión 1.3.8-1
Y también hice algunos retoques en los Makefiles, hay que actualizar del
repo.

El 11/05/17 a las 15:49, Salvador Eduardo Tropea escribió:

Jesús Arroyo

unread,
May 11, 2017, 3:37:26 PM5/11/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
El jueves, 11 de mayo de 2017, 20:53:00 (UTC+2), Salvador Eduardo Tropea escribió:
Antes que me olvide, actualicé xiltools, nueva versión 1.3.8-1
Y también hice algunos retoques en los Makefiles, hay que actualizar del
repo.

Instalando y actualizando...OK

Sugerencia: podrías añadir los directorios /gen al .gitignore para no tener que eliminarlos cada vez que haga pull. En caso del lattuino_stick genera un fichero ".cvsignore" que creo que no es necesario.

He visto también que se modifican los Makefiles en caliente. Quizá estaría bien que se pasaran como variables de entorno en vez de modificar el fichero.

Lattuino_1 ha generado el bitstream correctamente :) (eso sí, ha tardado bastante).

Lattuino_stick no cabe según mi configuración:

Phase 3
:0: error Unable to fit the design into the selected device. Number of PLBs in design = 166, available in device = 160 (E2070)

[...]

Unknown error

Netlister run-time: 127 (sec)
Makefile:280: recipe for target 'gen/Target_Implmnt/sbt/outputs/netlister/Lattuino_Stick_sbt.sdc' failed
make: *** [gen/Target_Implmnt/sbt/outputs/netlister/Lattuino_Stick_sbt.sdc] Error 9
make: Leaving directory '/home/jesus/code/fpgacores/lattuino/FPGA/lattuino_stick'

Pero lo bueno que ya funciona el mecanismo de sintetizar :), vamos avanzando!


Salvador Eduardo Tropea

unread,
May 12, 2017, 8:43:49 AM5/12/17
to Jesús Arroyo, FPGAwars: explorando el lado libre
Hola Jesús:

El 11/05/17 a las 16:37, Jesús Arroyo escribió:
> El jueves, 11 de mayo de 2017, 20:53:00 (UTC+2), Salvador Eduardo
> Tropea escribió:
>
> Antes que me olvide, actualicé xiltools, nueva versión 1.3.8-1
> Y también hice algunos retoques en los Makefiles, hay que
> actualizar del
> repo.
>
>
> Instalando y actualizando...OK
>
> Sugerencia: podrías añadir los directorios /gen al .gitignore para no
> tener que eliminarlos cada vez que haga pull.

Ok, ya lo agregué.

> En caso del lattuino_stick genera un fichero ".cvsignore" que creo que
> no es necesario.

En realidad si, yo uso CVS ;-)
Un usuario de git puede renombrarlo a ".gitignore"

> He visto también que se modifican los Makefiles en caliente. Quizá
> estaría bien que se pasaran como variables de entorno en vez de
> modificar el fichero.

No termino de entender la propuesta.
Los Makefiles se modifican cada vez que se cambia algo que los afecte,
por ejemplo se agrega un archivo al proyecto.

> Lattuino_1 ha generado el bitstream correctamente :) (eso sí, ha
> tardado bastante).

Si, tarda. La síntesis es un proceso lento, en FPGAs grandes puede tomar
horas, más de un día incluso.

> Lattuino_stick no cabe según mi configuración:
>
> Phase 3
> :0: error Unable to fit the design into the selected device. Number of
> PLBs in design = 166, available in device = 160 (E2070)

¡Qué raro! ¿seguro que está actualizado a lo último que está en el repo?
Con el iCEcube2 2016.02 entraba si se le pedía 24 MHz como frecuencia de
target, aún cuando el stick usa 12 MHz. Esto es porque optimizaba más
cosas para lograr los 24 MHz. Con el iCEcube2 2017.01 no entra con 24
MHz, y si con 12 MHz, que es más intuitivo. En lattuino_stick.prj tiene
que decir "set_option -frequency 12". Acabo de hacer una síntesis desde
0 y entró.
Dio lo mismo que figura en lattuino_stick.txt (al final).

[snip]
> Pero lo bueno que ya funciona el mecanismo de sintetizar :), vamos
> avanzando!
:-)

Saludos, Salvador

Jesús Arroyo

unread,
May 13, 2017, 2:59:27 AM5/13/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
He probado de nuevo y tras unos cuantos minutos... he descargado el Lattuino_stick en la iCEstick!!! :D

Bit Stream Generator succeeded
[...]
Using region: "fpga".
Calibrating delay loop... OK.
Found Micron/Numonyx/ST flash chip "N25Q032..3E" (4096 kB, SPI) on ft2232_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... done.
Erase/write done.
Verifying flash... VERIFIED.
Waiting for CDONE... done.

Te respondo entre líneas las otras cuestiones.


El viernes, 12 de mayo de 2017, 14:43:49 (UTC+2), Salvador Eduardo Tropea escribió:
Hola Jesús:

El 11/05/17 a las 16:37, Jesús Arroyo escribió:
> El jueves, 11 de mayo de 2017, 20:53:00 (UTC+2), Salvador Eduardo
> Tropea escribió:
>
>     Antes que me olvide, actualicé xiltools, nueva versión 1.3.8-1
>     Y también hice algunos retoques en los Makefiles, hay que
>     actualizar del
>     repo.
>
>
> Instalando y actualizando...OK
>
> Sugerencia: podrías añadir los directorios /gen al .gitignore para no
> tener que eliminarlos cada vez que haga pull.

Ok, ya lo agregué.

Gracias!
 

> En caso del lattuino_stick genera un fichero ".cvsignore" que creo que
> no es necesario.

En realidad si, yo uso CVS ;-)
Un usuario de git puede renombrarlo a ".gitignore"


Lo que me extrañó un poco es que en lattuino_1 no genera el fichero .cvsignore y en lattuino_stick si. Debería tener el mismo comportamiento en ambos. Lo molesto desde mi punto de vista es que tengo que eliminar siempre el .cvsignore en lattuino_stick para poder hacer un update. En lattuino_1 esto no ocurre.
 
> He visto también que se modifican los Makefiles en caliente. Quizá
> estaría bien que se pasaran como variables de entorno en vez de
> modificar el fichero.

No termino de entender la propuesta.
Los Makefiles se modifican cada vez que se cambia algo que los afecte,
por ejemplo se agrega un archivo al proyecto.

Me refiero a utilizar los parámetros del make, por ejemplo make XIL_TOOL_ICE_DIR="..." para no tener que modificar el fichero. He visto que has añadido los documentos Makefile y demás al .gitignore pero lo que sucede es que como ya están añadidos al repositorio se tienen en cuenta los cambios, por lo que el Makefile me aparece como modificado en vez de ser ignorado.
 

> Lattuino_1 ha generado el bitstream correctamente :) (eso sí, ha
> tardado bastante).

Si, tarda. La síntesis es un proceso lento, en FPGAs grandes puede tomar
horas, más de un día incluso.

> Lattuino_stick no cabe según mi configuración:
>
> Phase 3
> :0: error Unable to fit the design into the selected device. Number of
> PLBs in design = 166, available in device = 160 (E2070)

¡Qué raro! ¿seguro que está actualizado a lo último que está en el repo?
Con el iCEcube2 2016.02 entraba si se le pedía 24 MHz como frecuencia de
target, aún cuando el stick usa 12 MHz. Esto es porque optimizaba más
cosas para lograr los 24 MHz. Con el iCEcube2 2017.01 no entra con 24
MHz, y si con 12 MHz, que es más intuitivo. En lattuino_stick.prj tiene
que decir "set_option -frequency 12". Acabo de hacer una síntesis desde
0 y entró.
Dio lo mismo que figura en lattuino_stick.txt (al final).

Parece ser que me faltaban esos commits por actualizar. Ahora entra bien :)
 

[snip]
> Pero lo bueno que ya funciona el mecanismo de sintetizar :), vamos
> avanzando!
:-)

Saludos, Salvador

Un saludo.
 

Jesús Arroyo

unread,
May 13, 2017, 7:10:27 AM5/13/17
to FPGAwars: explorando el lado libre
Buenas!

Le he vuelto a dedicar un ratito al proyecto. En este caso he intentado descargar firmdare desde Arduino:
  1. He configurado la placa Lattuino
  2. He seleccionado Lattuino Stick (2k)
  3. He seleccionado el puerto /dev/ttyUSB1, que lo detecta como Lattuino Kefir I (8K) (quizá esto habría que cambiarlo en la configuración)
  4. El ejemplo compila bien, pero al hacer upload sale este error: avrdude: AVR Part "attiny22" not found.

¿Tengo que configurar algo más?¿Qué programador debo utilizar?


Gracias.

Un saludo.

Salvador Eduardo Tropea

unread,
May 15, 2017, 7:44:26 AM5/15/17
to Jesús Arroyo, FPGAwars: explorando el lado libre
Hola Jesús!

El 13/05/17 a las 03:59, Jesús Arroyo escribió:
> He probado de nuevo y tras unos cuantos minutos... he descargado el
> Lattuino_stick en la iCEstick!!! :D
>
> Bit Stream Generator succeeded
> [...]
> Using region: "fpga".
> Calibrating delay loop... OK.
> Found Micron/Numonyx/ST flash chip "N25Q032..3E" (4096 kB, SPI) on
> ft2232_spi.
> Reading old flash chip contents... done.
> Erasing and writing flash chip... done.
> Erase/write done.
> Verifying flash... VERIFIED.
> Waiting for CDONE... done.


Enhorabuena!
Esto puede ser porque no se está volviendo a llamar a xil_project.pl.


> > He visto también que se modifican los Makefiles en caliente. Quizá
> > estaría bien que se pasaran como variables de entorno en vez de
> > modificar el fichero.
>
> No termino de entender la propuesta.
> Los Makefiles se modifican cada vez que se cambia algo que los
> afecte,
> por ejemplo se agrega un archivo al proyecto.
>
>
> Me refiero a utilizar los parámetros del make, por ejemplo make
> XIL_TOOL_ICE_DIR="..." para no tener que modificar el fichero. He
> visto que has añadido los documentos Makefile y demás al .gitignore
> pero lo que sucede es que como ya están añadidos al repositorio se
> tienen en cuenta los cambios, por lo que el Makefile me aparece como
> modificado en vez de ser ignorado.


Mi intención es que no sea indispensable que xil_tools esté instalado
para poder sintetizar el core. Por eso es que traté de incluir todo lo
necesario y forzar algunas fechas usando touch (git no respeta las
fechas de los archivos, lo cual es muy mala idea).
Cualquier cosa que toques, o que yo no haya tenido en cuenta, va a
disparar una regeneración de los archivos.
Por eso es que hay cosas forzadas.
El Makefile, y otros archivos, figuran en el .gitignore no con la
intención que git los ignore, sino con la intención que si corrés
xil_project.pl no los agregue.

>
> > Lattuino_1 ha generado el bitstream correctamente :) (eso sí, ha
> > tardado bastante).
>
> Si, tarda. La síntesis es un proceso lento, en FPGAs grandes puede
> tomar
> horas, más de un día incluso.
>
> > Lattuino_stick no cabe según mi configuración:
> >
> > Phase 3
> > :0: error Unable to fit the design into the selected device.
> Number of
> > PLBs in design = 166, available in device = 160 (E2070)
>
> ¡Qué raro! ¿seguro que está actualizado a lo último que está en el
> repo?
> Con el iCEcube2 2016.02 entraba si se le pedía 24 MHz como
> frecuencia de
> target, aún cuando el stick usa 12 MHz. Esto es porque optimizaba más
> cosas para lograr los 24 MHz. Con el iCEcube2 2017.01 no entra con 24
> MHz, y si con 12 MHz, que es más intuitivo. En lattuino_stick.prj
> tiene
> que decir "set_option -frequency 12". Acabo de hacer una síntesis
> desde
> 0 y entró.
> Dio lo mismo que figura en lattuino_stick.txt (al final).
>
>
> Parece ser que me faltaban esos commits por actualizar. Ahora entra
> bien :)


:-)

Saludos, Salvador

Salvador Eduardo Tropea

unread,
May 15, 2017, 7:51:35 AM5/15/17
to fpga-wars-explora...@googlegroups.com
Hola Jesús!

El 13/05/17 a las 08:10, Jesús Arroyo escribió:
> Buenas!
>
> Le he vuelto a dedicar un ratito al proyecto. En este caso he
> intentado descargar firmdare desde Arduino:
>
> 1. He configurado la placa Lattuino
> 2. He seleccionado Lattuino Stick (2k)
> 3. He seleccionado el puerto /dev/ttyUSB1, que lo detecta como
> Lattuino Kefir I (8K) (quizá esto habría que cambiarlo en la
> configuración)
>

Creo que esto no es una verdadera detección, simplemente le asigna el
primer dispositivo que encuentra, no es que consulte a la CPU.
Lo que creo que hace es ver que hay un FTDI 2232H (por el ID) y se lo
asigna a la primer placa que se comunica usando uno.

> 1. El ejemplo compila bien, pero al hacer upload sale este error:
> avrdude: AVR Part "attiny22" not found.
>

Necesito un poco más de información. En Archivo|Preferencias "Mostrar
salida detallada mientras:" tildá Compilación y Subir.
Enviame todo lo que muestre.
¿Qué versión de la IDE es?

> ¿Tengo que configurar algo más?¿Qué programador debo utilizar?
>

"Atmel STK500 development board"
¿Dice otra cosa?


Saludos, Salvador
> --
> Has recibido este mensaje porque estás suscrito al grupo "FPGAwars:
> explorando el lado libre" de Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus
> mensajes, envía un correo electrónico a
> fpga-wars-explorando-el...@googlegroups.com
> <mailto:fpga-wars-explorando-el...@googlegroups.com>.
> Para publicar en este grupo, envía un correo electrónico a
> fpga-wars-explora...@googlegroups.com
> <mailto:fpga-wars-explora...@googlegroups.com>.
> Visita este grupo en
> https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
> Para ver esta conversación en el sitio web, visita
> https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/02814528-190a-4694-be82-6b870fa32eb1%40googlegroups.com
> <https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/02814528-190a-4694-be82-6b870fa32eb1%40googlegroups.com?utm_medium=email&utm_source=footer>.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.

Jesús Arroyo

unread,
May 15, 2017, 9:16:22 AM5/15/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
Buenas Salvador:


El lunes, 15 de mayo de 2017, 13:51:35 (UTC+2), Salvador Eduardo Tropea escribió:
Hola Jesús!

El 13/05/17 a las 08:10, Jesús Arroyo escribió:
> Buenas!
>
> Le he vuelto a dedicar un ratito al proyecto. En este caso he
> intentado descargar firmdare desde Arduino:
>
>  1. He configurado la placa Lattuino
>  2. He seleccionado Lattuino Stick (2k)
>  3. He seleccionado el puerto /dev/ttyUSB1, que lo detecta como
>     Lattuino Kefir I (8K) (quizá esto habría que cambiarlo en la
>     configuración)
>

Creo que esto no es una verdadera detección, simplemente le asigna el
primer dispositivo que encuentra, no es que consulte a la CPU.
Lo que creo que hace es ver que hay un FTDI 2232H (por el ID) y se lo
asigna a la primer placa que se comunica usando uno.

Puede que sea una detección cutre, si.
 

>  1. El ejemplo compila bien, pero al hacer upload sale este error:
>     avrdude: AVR Part "attiny22" not found.
>

Necesito un poco más de información. En Archivo|Preferencias "Mostrar
salida detallada mientras:" tildá Compilación y Subir.
Enviame todo lo que muestre.
¿Qué versión de la IDE es?

Estoy utilizando la versión 1.8.2 del IDE de Arduino (sin instalar). La compilación funciona correctamente.

El problema está en el Upload. He probado las versiones 6.2 y 6.3 del AVRDUDE.

Arduino: 1.8.2 (Linux), Board: "Lattuino Stick (2k)"

Sketch uses 406 bytes (29%) of program storage space. Maximum is 1392 bytes.
Global variables use 1 bytes (0%) of dynamic memory, leaving 127 bytes for local variables. Maximum is 128 bytes.
/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/bin/avrdude -C/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf -v -pattiny22 -carduino -P/dev/ttyUSB1 -b115200 -D -Uflash:w:/tmp/arduino_build_533023/sketch_may13a.ino.hex:i

avrdude: Version 6.3, compiled on Jan 17 2017 at 11:00:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/home/jesus/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping


avrdude: AVR Part "attiny22" not found.


Valid parts are:
  uc3a0512 = AT32UC3A0512       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14599]
  c128     = AT90CAN128         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:3557]
  c32      = AT90CAN32          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:3941]
  c64      = AT90CAN64          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:3749]
  pwm2     = AT90PWM2           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9109]
  pwm216   = AT90PWM216         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9382]
  pwm2b    = AT90PWM2B          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9302]
  pwm3     = AT90PWM3           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9292]
  pwm316   = AT90PWM316         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9329]
  pwm3b    = AT90PWM3B          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9316]
  1200     = AT90S1200          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2018]
  2313     = AT90S2313          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2247]
  2333     = AT90S2333          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2360]
  2343     = AT90S2343          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2488]
  4414     = AT90S4414          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2134]
An error occurred while uploading the sketch
  4433     = AT90S4433          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2612]
  4434     = AT90S4434          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2736]
  8515     = AT90S8515          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2819]
  8535     = AT90S8535          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:2933]
  usb1286  = AT90USB1286        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:11907]
  usb1287  = AT90USB1287        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:12098]
  usb162   = AT90USB162         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:12111]
  usb646   = AT90USB646         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:11703]
  usb647   = AT90USB647         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:11894]
  usb82    = AT90USB82          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:12298]
  m103     = ATmega103          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:3054]
  m128     = ATmega128          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:3377]
  m1280    = ATmega1280         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10134]
  m1281    = ATmega1281         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10324]
  m1284    = ATmega1284         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:4753]
  m1284p   = ATmega1284P        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:4947]
  m1284rfr2 = ATmega1284RFR2     [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10759]
  m128rfa1 = ATmega128RFA1      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10544]
  m128rfr2 = ATmega128RFR2      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10647]
  m16      = ATmega16           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:4134]
  m161     = ATmega161          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:6279]
  m162     = ATmega162          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:5139]
  m163     = ATmega163          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:5337]
  m164p    = ATmega164P         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:4313]
  m168     = ATmega168          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8116]
  m168p    = ATmega168P         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8305]
  m168pb   = ATmega168PB        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8317]
  m169     = ATmega169          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:5495]
  m16u2    = ATmega16U2         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:12675]
  m2560    = ATmega2560         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10337]
  m2561    = ATmega2561         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10531]
  m2564rfr2 = ATmega2564RFR2     [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10749]
  m256rfr2 = ATmega256RFR2      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10598]
  m32      = ATmega32           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:6102]
  m324p    = ATmega324P         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:4337]
  m324pa   = ATmega324PA        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:4529]
  m325     = ATmega325          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13045]
  m3250    = ATmega3250         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13426]
  m328     = ATmega328          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8518]
  m328p    = ATmega328P         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8703]
  m329     = ATmega329          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:5677]
  m3290    = ATmega3290         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:5876]
  m3290p   = ATmega3290P        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:5890]
  m329p    = ATmega329P         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:5862]
  m32m1    = ATmega32M1         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8715]
  m32u2    = ATmega32U2         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:12487]
  m32u4    = ATmega32U4         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:11512]
  m406     = ATMEGA406          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14937]
  m48      = ATmega48           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:7692]
  m48p     = ATmega48P          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:7879]
  m48pb    = ATmega48PB         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:7891]
  m64      = ATmega64           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:3194]
  m640     = ATmega640          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9944]
  m644     = ATmega644          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:4545]
  m644p    = ATmega644P         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:4736]
  m644rfr2 = ATmega644RFR2      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10769]
  m645     = ATmega645          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13236]
  m6450    = ATmega6450         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13438]
  m649     = ATmega649          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:5903]
  m6490    = ATmega6490         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:6089]
  m64rfr2  = ATmega64RFR2       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10660]
  m8       = ATmega8            [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:6419]
  m8515    = ATmega8515         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:6587]
  m8535    = ATmega8535         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:6745]
  m88      = ATmega88           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:7904]
  m88p     = ATmega88P          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8091]
  m88pb    = ATmega88PB         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8103]
  m8u2     = ATmega8U2          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:12863]
  t10      = ATtiny10           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14892]
  t11      = ATtiny11           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:1513]
  t12      = ATtiny12           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:1577]
  t13      = ATtiny13           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:1710]
  t15      = ATtiny15           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:1885]
  t1634    = ATtiny1634         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14625]
  t20      = ATtiny20           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14902]
  t2313    = ATtiny2313         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8736]
  t24      = ATtiny24           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10780]
  t25      = ATtiny25           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9392]
  t26      = ATtiny26           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:6903]
  t261     = ATtiny261          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:7060]
  t28      = ATtiny28           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:7634]
  t4       = ATtiny4            [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14848]
  t40      = ATtiny40           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14919]
  t4313    = ATtiny4313         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8925]
  t43u     = ATtiny43u          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:11333]
  t44      = ATtiny44           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:10964]
  t45      = ATtiny45           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9576]
  t461     = ATtiny461          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:7251]
  t5       = ATtiny5            [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14865]
  t84      = ATtiny84           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:11148]
  t85      = ATtiny85           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:9759]
  t861     = ATtiny861          [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:7442]
  t88      = ATtiny88           [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:8330]
  t9       = ATtiny9            [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14875]
  x128a1   = ATxmega128A1       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13919]
  x128a1d  = ATxmega128A1revD   [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13935]
  x128a1u  = ATxmega128A1U      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13945]
  x128a3   = ATxmega128A3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13956]
  x128a3u  = ATxmega128A3U      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13966]
  x128a4   = ATxmega128A4       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13977]
  x128a4u  = ATxmega128A4U      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14035]
  x128b1   = ATxmega128B1       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14088]
  x128b3   = ATxmega128B3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14147]
  x128c3   = ATxmega128C3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13846]
  x128d3   = ATxmega128D3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13899]
  x128d4   = ATxmega128D4       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13909]
  x16a4    = ATxmega16A4        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13577]
  x16a4u   = ATxmega16A4U       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13504]
  x16c4    = ATxmega16C4        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13557]
  x16d4    = ATxmega16D4        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13567]
  x16e5    = ATxmega16E5        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14494]
  x192a1   = ATxmega192A1       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14221]
  x192a3   = ATxmega192A3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14237]
  x192a3u  = ATxmega192A3U      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14247]
  x192c3   = ATxmega192C3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14158]
  x192d3   = ATxmega192D3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14211]
  x256a1   = ATxmega256A1       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14321]
  x256a3   = ATxmega256A3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14337]
  x256a3b  = ATxmega256A3B      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14358]
  x256a3bu = ATxmega256A3BU     [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14368]
  x256a3u  = ATxmega256A3U      [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14347]
  x256c3   = ATxmega256C3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14258]
  x256d3   = ATxmega256D3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14311]
  x32a4    = ATxmega32A4        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13666]
  x32a4u   = ATxmega32A4U       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13593]
  x32c4    = ATxmega32C4        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13646]
  x32d4    = ATxmega32D4        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13656]
  x32e5    = ATxmega32E5        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14546]
  x384c3   = ATxmega384C3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14379]
  x384d3   = ATxmega384D3       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14432]
  x64a1    = ATxmega64A1        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13766]
  x64a1u   = ATxmega64A1U       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13782]
  x64a3    = ATxmega64A3        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13793]
  x64a3u   = ATxmega64A3U       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13803]
  x64a4    = ATxmega64A4        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13814]
  x64a4u   = ATxmega64A4U       [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13682]
  x64b1    = ATxmega64B1        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13824]
  x64b3    = ATxmega64B3        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13835]
  x64c3    = ATxmega64C3        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13735]
  x64d3    = ATxmega64D3        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13746]
  x64d4    = ATxmega64D4        [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:13756]
  x8e5     = ATxmega8E5         [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14442]
  ucr2     = deprecated, use 'uc3a0512' [/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf:14615]

El problema básicamente es que en las versiones recientes del AVRDUDE no existe el MCU attiny22 para descargar, ya que especifica en la documentación:

(*) The AT90S2323 and ATtiny22 use the same algorithm.

En referencia al 2343. Pero al seleccionar el 2343 para hacer el upload me dice que no coincide la firma:

$ /home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/bin/avrdude -C/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf -v -p2343 -carduino -P/dev/ttyUSB1 -b115200 -D -Uflash:w:/tmp/arduino_build_533023/sketch_may13a.ino.hex:i

avrdude: Version 6.3, compiled on Jan 17 2017 at 11:00:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf"
         User configuration file is "/home/jesus/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyUSB1
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : AT90S2343
         Chip Erase delay              : 18000 us
         PAGEL                         : P00
         BS2                           : P00
         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         4    12    64    0 no        128    0      0  9000 20000 0x00 0xff
           flash          4    12   128    0 no       2048    0      0  9000 20000 0xff 0xff
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           fuse           0     0     0    0 no          1    0      0  9000 20000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000 20000 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         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.01s

avrdude: Device signature = 0x1e9106
avrdude: Expected signature for AT90S2343 is 1E 91 03
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

 
> Para publicar en este grupo, envía un correo electrónico a

Jesús Arroyo

unread,
May 15, 2017, 10:07:52 AM5/15/17
to Salvador Eduardo Tropea, fpga-wars-explora...@googlegroups.com
Buenas Salvador:

Añadiendo a mano la configuración del ATtiny22 puedo descargar firmware en el Lattuino Stick :D

Es una pasada compilar C y descargarlo en un "AVR" en la iCEstick!!

PD: creo que sería interesante "migrarlo" al 2343 para que sea compatible con las versiones nuevas de avrdude.

Muchas gracias!

Un saludo.



El 15 de mayo de 2017, 15:53, Salvador Eduardo Tropea <salv...@inti.gob.ar> escribió:
Hola Jesús!

El 15/05/17 a las 10:16, Jesús Arroyo escribió:
*
avrdude: AVR Part "attiny22" not found.*

Ahora me acuerdo!!! por este problema es que usé los ATtiny25/45/85 para el Lattuino 1.
Editá tu archivo: /home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf
Y agregale esto:

<-- Comienzo agregado
#------------------------------------------------------------
# ATtiny22
#------------------------------------------------------------

part
     id            = "t22";
     desc          = "ATtiny22";
     has_debugwire = yes;
     flash_instr   = 0xB4, 0x02, 0x12;
     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
                 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
                 0x99, 0xE1, 0xBB, 0xAC;
     stk500_devcode   = 0x20;
##  avr910_devcode   = ?;
##  Try the AT90S2313 devcode:
     avr910_devcode   = 0x20;
     signature        = 0x1e 0x91 0x06;
     reset            = io;
     chip_erase_delay = 4500;

     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
                        "x x x x  x x x x    x x x x  x x x x";

     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
                        "x x x x  x x x x    x x x x  x x x x";

    timeout        = 200;
    stabdelay        = 100;
    cmdexedelay        = 25;
    synchloops        = 32;
    bytedelay        = 0;
    pollindex        = 3;
    pollvalue        = 0x53;
    predelay        = 1;
    postdelay        = 1;
    pollmethod        = 1;

    hvsp_controlstack     =
    0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    hvspcmdexedelay     = 0;
    synchcycles         = 6;
    latchcycles         = 1;
    togglevtg           = 1;
    poweroffdelay       = 25;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 100;
    resetdelay          = 25;
    chiperasepolltimeout = 40;
    chiperasetime       = 0;
    programfusepolltimeout = 25;
    programlockpolltimeout = 25;

    ocdrev              = 1;

     memory "eeprom"
         size            = 256;
         page_size       = 4;
         min_write_delay = 4000;
         max_write_delay = 4500;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";

         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";

    loadpage_lo    = "  1   1   0   0      0   0   0   1",
              "  0   0   0   0      0   0   0   0",
              "  0   0   0   0      0   0  a1  a0",
              "  i   i   i   i      i   i   i   i";

    writepage    = "  1   1   0   0      0   0   1   0",
              "  0   0   x   x      x   x   x   x",
              " a7  a6  a5  a4     a3  a2   0   0",
              "  x   x   x   x      x   x   x   x";

    mode        = 0x41;
    delay        = 6;
    blocksize    = 4;
    readsize    = 256;
       ;
     memory "flash"
         paged           = yes;
         size            = 2048;
         page_size       = 64;
         num_pages       = 32;
         min_write_delay = 4500;
         max_write_delay = 4500;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
         read_lo         = "  0   0   1   0    0   0   0   0",
                           "  0   0   0   0    0  a10 a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

         read_hi         = "  0   0   1   0    1   0   0   0",
                           "  0   0   0   0    0  a10 a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

         loadpage_lo     = "  0   1   0   0    0   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x  a4   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

         loadpage_hi     = "  0   1   0   0    1   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x  a4   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

         writepage       = "  0  1  0  0   1  1  0  0",
                           "  0  0  0  0   0 a10 a9 a8",
                           " a7 a6 a5  x   x  x  x  x",
                           "  x  x  x  x   x  x  x  x";

    mode        = 0x41;
    delay        = 6;
    blocksize    = 32;
    readsize    = 256;
       ;
#   ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!)
     memory "signature"
         size            = 3;
         read            = "0  0  1  1   0  0  0  0   0  0  0  x x  x  x  x",
                           "x  x  x  x   x  x a1 a0   o  o  o  o o  o  o  o";
       ;
     memory "lock"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
                           "x x x x  x x x x  1 1 i i  i i i i";
         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "lfuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
                           "x x x x  x x x x  i i i i  i i i i";

         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "hfuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
                           "x x x x  x x x x  i i i i  i i i i";

         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
       ;

     memory "efuse"
         size            = 1;
         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
                           "x x x x  x x x x  x x x x  x x x i";

         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
                           "x x x x  x x x x  o o o o  o o o o";
        min_write_delay = 9000;
        max_write_delay = 9000;
     ;

     memory "calibration"
         size            = 1;
         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
     ;
  ;
<-- Fin agregado

Es una descripción incompleta, pero le dice cuál es el ID.

[snip]

El problema básicamente es que en las versiones recientes del AVRDUDE no existe el MCU attiny22 para descargar, ya que especifica en la documentación:

(*) The AT90S2323 and ATtiny22 use the same algorithm.

En referencia al 2343. Pero al seleccionar el 2343 para hacer el upload me dice que no coincide la firma:

$ /home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/bin/avrdude -C/home/jesus/Downloads/arduino-1.8.2/hardware/tools/avr/etc/avrdude.conf -v -p2343 -carduino -P/dev/ttyUSB1 -b115200 -D -Uflash:w:/tmp/arduino_build_533023/sketch_may13a.ino.hex:i

[snip]

avrdude: Device signature = 0x1e9106
avrdude: Expected signature for AT90S2343 is 1E 91 03
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

Voy a ver que diferencias hay entre el tiny22 y este.

Saludos, Salvador

Jesús Arroyo

unread,
May 15, 2017, 10:54:40 AM5/15/17
to FPGAwars: explorando el lado libre
Estoy probando distintos ejemplos en la Lattuino Stick!

Ya he detectado los pines de los LEDs. Adjunto un par de ejemplos :-)

Lattuino_Blink.ino.ino
Lattuino_Counter.ino
Auto Generated Inline Image 1

Salvador Eduardo Tropea

unread,
May 15, 2017, 12:26:35 PM5/15/17
to Jesús Arroyo, fpga-wars-explora...@googlegroups.com
El 15/05/17 a las 11:07, Jesús Arroyo escribió:
> Buenas Salvador:
>
> Añadiendo a mano la configuración del ATtiny22 puedo descargar
> firmware en el Lattuino Stick :D

Buenísimo!!

>
> Es una pasada compilar C y descargarlo en un "AVR" en la iCEstick!!

Es aún más loco, Sketch es C++ ... clases, miembros, polimorfismo, etc.

>
> PD: creo que sería interesante "migrarlo" al 2343 para que sea
> compatible con las versiones nuevas de avrdude.

Estuve investigando un poco y parece que el 2343 tiene un mecanismo de
memoria flash no paginado. Por lo que habría que cambiar el código del
bootloader. Para evitarlo estoy usando el ATtiny26 que tiene el set de
instrucciones 2.0 y la flash paginada.
Ahora subo los cambios necesarios.

Jesús Arroyo

unread,
May 15, 2017, 12:30:10 PM5/15/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
El lunes, 15 de mayo de 2017, 18:26:35 (UTC+2), Salvador Eduardo Tropea escribió:
El 15/05/17 a las 11:07, Jesús Arroyo escribió:
> Buenas Salvador:
>
> Añadiendo a mano la configuración del ATtiny22 puedo descargar
> firmware en el Lattuino Stick :D

Buenísimo!!

:)
 

>
> Es una pasada compilar C y descargarlo en un "AVR" en la iCEstick!!

Es aún más loco, Sketch es C++ ... clases, miembros, polimorfismo, etc.


Sí, C/C++/Arduino me refería ;)
 
>
> PD: creo que sería interesante "migrarlo" al 2343 para que sea
> compatible con las versiones nuevas de avrdude.

Estuve investigando un poco y parece que el 2343 tiene un mecanismo de
memoria flash no paginado. Por lo que habría que cambiar el código del
bootloader. Para evitarlo estoy usando el ATtiny26 que tiene el set de
instrucciones 2.0 y la flash paginada.
Ahora subo los cambios necesarios.

Me parece bien. En cuanto lo actualices dímelo para probar que todo funciona OK sin configurar a mano el t22.
 

Saludos, Salvador

Por cierto, he probado a utilizar Serial para las comunicaciones con el procesador, pero no parece funcionar. Dónde podría ver cómo se hace a bajo nivel sin utilizar Serial?

Un saludo.
 

Salvador Eduardo Tropea

unread,
May 15, 2017, 12:45:12 PM5/15/17
to Jesús Arroyo, FPGAwars: explorando el lado libre
El 15/05/17 a las 13:30, Jesús Arroyo escribió:
> >
>
> > PD: creo que sería interesante "migrarlo" al 2343 para que sea
> > compatible con las versiones nuevas de avrdude.
>
> Estuve investigando un poco y parece que el 2343 tiene un
> mecanismo de
> memoria flash no paginado. Por lo que habría que cambiar el código
> del
> bootloader. Para evitarlo estoy usando el ATtiny26 que tiene el
> set de
> instrucciones 2.0 y la flash paginada.
> Ahora subo los cambios necesarios.
>
>
> Me parece bien. En cuanto lo actualices dímelo para probar que todo
> funciona OK sin configurar a mano el t22.

Ya está. Hay que actualizar de GitHub y el plug-in desde la IDE.

>
> Saludos, Salvador
>
>
> Por cierto, he probado a utilizar Serial para las comunicaciones con
> el procesador, pero no parece funcionar. Dónde podría ver cómo se hace
> a bajo nivel sin utilizar Serial?

En el bootloader se usa el puerto serie a bajo nivel
(lattuino/bootloader/lattuino_1_bl/bootloader.c)

Saludos, Salvador

Jesús Arroyo

unread,
May 15, 2017, 12:55:16 PM5/15/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar


El lunes, 15 de mayo de 2017, 18:45:12 (UTC+2), Salvador Eduardo Tropea escribió:
El 15/05/17 a las 13:30, Jesús Arroyo escribió:
> >
>
>     > PD: creo que sería interesante "migrarlo" al 2343 para que sea
>     > compatible con las versiones nuevas de avrdude.
>
>     Estuve investigando un poco y parece que el 2343 tiene un
>     mecanismo de
>     memoria flash no paginado. Por lo que habría que cambiar el código
>     del
>     bootloader. Para evitarlo estoy usando el ATtiny26 que tiene el
>     set de
>     instrucciones 2.0 y la flash paginada.
>     Ahora subo los cambios necesarios.
>
>
> Me parece bien. En cuanto lo actualices dímelo para probar que todo
> funciona OK sin configurar a mano el t22.

Ya está. Hay que actualizar de GitHub y el plug-in desde la IDE.

Actualizado! Pero ... :0: error Fail to get license for Lattice OEM Synplify. Tengo que actualizar la licencia?
 

>
>     Saludos, Salvador
>
>
> Por cierto, he probado a utilizar Serial para las comunicaciones con
> el procesador, pero no parece funcionar. Dónde podría ver cómo se hace
> a bajo nivel sin utilizar Serial?

En el bootloader se usa el puerto serie a bajo nivel
(lattuino/bootloader/lattuino_1_bl/bootloader.c)

Ok. Gracias
 

Salvador Eduardo Tropea

unread,
May 15, 2017, 1:01:05 PM5/15/17
to Jesús Arroyo, FPGAwars: explorando el lado libre
El 15/05/17 a las 13:30, Jesús Arroyo escribió:
>
> Por cierto, he probado a utilizar Serial para las comunicaciones con
> el procesador, pero no parece funcionar. Dónde podría ver cómo se hace
> a bajo nivel sin utilizar Serial?

Este sketch me funcionó:

<---
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
}

void delayTest()
{
unsigned i;
for (i=16; i; i--)
_delay_loop_2(0);
}

void loop() {
Serial.println(F("Hola! Saludos desde el Lattuino!"));
delayTest();
}
<---

Saludos, Salvador

P.D. Fijate que el string lo use directo desde la flash, si dejás que lo
copie a la RAM te quedás sin nada.

Salvador Eduardo Tropea

unread,
May 15, 2017, 1:04:53 PM5/15/17
to Jesús Arroyo, fpga-wars-explora...@googlegroups.com
El 15/05/17 a las 13:55, Jesús Arroyo escribió:
>
> > Me parece bien. En cuanto lo actualices dímelo para probar que todo
> > funciona OK sin configurar a mano el t22.
>
> Ya está. Hay que actualizar de GitHub y el plug-in desde la IDE.
>
>
> Actualizado! Pero ... :0: error Fail to get license for Lattice OEM
> Synplify. Tengo que actualizar la licencia?
Dura meses.
Fijate en la primer línea del license.dat, en el mio dice:

FEATURE LSC_ICECUBE2_A lattice 10.0 17-apr-2018 uncounted \

Esta la renové en abril, por lo que dura un año.

Jesús Arroyo

unread,
May 15, 2017, 4:24:49 PM5/15/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar
Buenas de nuevo:

Lo de la licencia no funcionaba porque se renombró automáticamente la interfaz eth0 a enp0s25. Para que esto no sea así le paso "net.ifnames=0 biosdevname=0" al Kernel en el grub y deja el nombre por defecto a eth0. Así puede iCEcube2 detectar la MAC de eth0.

He actualizado el Lattuino Stick (t26) y también el paquete del Arduino IDE de Lattuino al 1.0.3, eliminando también el parche para ATtiny22.

Al sintetizar el bitstream no cambiaba la firma del chip, es decir, lo seguía detectacdo como un attiny22:


avrdude: Device signature = 0x1e9106
avrdude: Expected signature for ATtiny26 is 1E 91 09

         Double check chip, or use -F to override this check.

Luego he eliminado los ficheros del directorio Work ya que me he fijado que la firma cambia en el .elf. Y ha sintetizado correctamente la versión t26!!
PD: make clean elimina ficheros necesarios para la síntesis, pero no los de Work.

Por último he probado el ejemplo del Serial. Con la versión anterior sólo me enviaba "Ho". Pero he probado de nuevo y ya envía todo el string correctamente :D

Un saludo.

Salvador Eduardo Tropea

unread,
May 16, 2017, 9:01:44 AM5/16/17
to Jesús Arroyo, FPGAwars: explorando el lado libre
Hola Jesús:

El 15/05/17 a las 17:24, Jesús Arroyo escribió:
> Buenas de nuevo:
>
> Lo de la licencia no funcionaba porque se renombró automáticamente la
> interfaz eth0 a enp0s25. Para que esto no sea así le paso
> "net.ifnames=0 biosdevname=0" al Kernel en el grub y deja el nombre
> por defecto a eth0. Así puede iCEcube2 detectar la MAC de eth0.


Buen dato. Agregué muchos de tus detalles a:
http://fpgalibre.sourceforge.net/ice40.html#tp14


> He actualizado el Lattuino Stick (t26) y también el paquete del
> Arduino IDE de Lattuino al 1.0.3, eliminando también el parche para
> ATtiny22.
>
> Al sintetizar el bitstream no cambiaba la firma del chip, es decir, lo
> seguía detectacdo como un attiny22:
>
> avrdude: Device signature = 0x1e9106
> avrdude: Expected signature for ATtiny26 is 1E 91 09
> Double check chip, or use -F to override this check.
>
> Luego he eliminado los ficheros del directorio Work ya que me he
> fijado que la firma cambia en el .elf.

Ok, ya subí al repo una versión actualizada.

> Y ha sintetizado correctamente la versión t26!!
> PD: make clean elimina ficheros necesarios para la síntesis,

Es por el uso forzado.

> pero no los de Work.

Los de Work los elimina el Makefile principal.

>
> Por último he probado el ejemplo del Serial. Con la versión anterior
> sólo me enviaba "Ho". Pero he probado de nuevo y ya envía todo el
> string correctamente :D

El problema es que al seleccionar 2 kiB de flash también se selecciona
128 B de RAM. Esto es demasiado poco, en cuanto se usa un poco el lugar
que queda para el stack es muy pequeño y cosas que hagan varias llamadas
a funciones y demás pueden fallar.

Jesús Arroyo

unread,
May 16, 2017, 9:30:15 AM5/16/17
to FPGAwars: explorando el lado libre, salv...@inti.gob.ar

El martes, 16 de mayo de 2017, 15:01:44 (UTC+2), Salvador Eduardo Tropea escribió:
Hola Jesús:

El 15/05/17 a las 17:24, Jesús Arroyo escribió:
> Buenas de nuevo:
>
> Lo de la licencia no funcionaba porque se renombró automáticamente la
> interfaz eth0 a enp0s25. Para que esto no sea así le paso
> "net.ifnames=0 biosdevname=0" al Kernel en el grub y deja el nombre
> por defecto a eth0. Así puede iCEcube2 detectar la MAC de eth0.


Buen dato. Agregué muchos de tus detalles a:
http://fpgalibre.sourceforge.net/ice40.html#tp14

:)
 



> He actualizado el Lattuino Stick (t26) y también el paquete del
> Arduino IDE de Lattuino al 1.0.3, eliminando también el parche para
> ATtiny22.
>
> Al sintetizar el bitstream no cambiaba la firma del chip, es decir, lo
> seguía detectacdo como un attiny22:
>
> avrdude: Device signature = 0x1e9106
> avrdude: Expected signature for ATtiny26 is 1E 91 09
>          Double check chip, or use -F to override this check.
>
> Luego he eliminado los ficheros del directorio Work ya que me he
> fijado que la firma cambia en el .elf.

Ok, ya subí al repo una versión actualizada.

Perfecto!
 

> Y ha sintetizado correctamente la versión t26!!
> PD: make clean elimina ficheros necesarios para la síntesis,

Es por el uso forzado.

> pero no los de Work.

Los de Work los elimina el Makefile principal.

>
> Por último he probado el ejemplo del Serial. Con la versión anterior
> sólo me enviaba "Ho". Pero he probado de nuevo y ya envía todo el
> string correctamente :D

El problema es que al seleccionar 2 kiB de flash también se selecciona
128 B de RAM. Esto es demasiado poco, en cuanto se usa un poco el lugar
que queda para el stack es muy pequeño y cosas que hagan varias llamadas
a funciones y demás pueden fallar.

Estupendo. Gracias por la aclaración :-)

Un saludo.
 
Reply all
Reply to author
Forward
0 new messages