Práctico: GreatFET es una herramienta integrada que lo hace todo

Hay una nueva herramienta de pirateo integrada en la escena que le brinda una interfaz Python interactiva para un chip rápido a bordo con montones de GPIO, la capacidad de disfrazarse como diferentes dispositivos USB y un legado de trucos bajo la manga. Este es el GreatFET, el sucesor del muy querido GoodFET.

Escuché por primera vez que esta placa estaba a punto de lanzarse hace casi un año y pedí una mirada anticipada. Cuando comenzó el envío a fines de abril, me enviaron uno. Exploremos para obtener una revisión práctica del GreatFET de Great Scott Gadgets.

Muchas E / S rápidas con acceso directo desde su computadora

GreatFET es un cuchillo deshonesto para proyectos integrados: tiene como objetivo reemplazar varias herramientas y elementos durante el desarrollo para que pueda resolver el problema que tiene frente a usted ahora y descubrir todo lo demás más adelante. Por ejemplo, considere probar un nuevo chip. Puede vincularlo a su microcontrolador favorito, escribir y ejecutar un código de prueba y ver si el chip que está probando funciona la primera vez. Pero probablemente tenga la dirección I2C incorrecta, o haya vinculado TX / RX o MISO / MOSI, o muchas otras compras frecuentes.

En pocas palabras, GreatFET está diseñado para brindarle un shell Python interactivo que controla montones de pines IO en la placa. Ejecuta comandos y obtiene comentarios tan rápido como puede escribirlos. Pero esta es la punta del iceberg con GreatFET. En el tema más avanzado, esta placa se puede usar para copiar dispositivos USB, como un dispositivo de adquisición de datos para construir instrumentos personalizados, para flashear y depurar MSP430, o como un probador automático en entornos de fábrica.

Oficialmente llamada GreatFET One, esta placa es un gran paso adelante en términos de pines disponibles, caballos de fuerza e interacción de software, con un precio de $ 89.99.

Descripción general del hardware GreatFET

El chip en el centro del GreatFET es un NXP LPC4330 en un paquete masivo LQFP-144. A cada lado de la placa, puede ver que la mayoría de esos 144 pines están rotos, con cabezas hembra de 40 pines. También hay un encabezado de clavija SIL-20 de "fila adicional" en un lado. La visión aquí es sobre la capacidad de agregar hardware a la placa con escudos que Great Scott Gadgets llama "Vecinos" como un sombrero para [Travis Goodspeed] que diseñó el GoodFET original.

El LPC4330 es el mismo chip que encontrará en el HackRF One; ARM Cortex-M4 de 32 bits con velocidad de reloj de hasta 204 MHz. HackRF se ha hecho un nombre por sí mismo como un recurso en el ámbito de la radio diseñado por programas, podría pensar en él como un dispositivo similar sin el circuito de radio analógico adjunto. La placa tiene un puerto USB de alta velocidad para la interfaz con su computadora y un puerto USB de velocidad completa, por lo que se puede usar como FaceDancer para copiar dispositivos USB, pero bajo el control de Python.

Etiquetas debajo del tablero Cabezas de alfiler etiquetadas en los bordes La etiqueta USB1 tiene la sugerencia "(Conectar al destino)". ¡También hay un recordatorio de tolerancia de pin de 3.3V!

Tengo que decirle buena suerte a Great Scott Gadgets en la etiqueta de esta placa. Una molestia de la creación de prototipos con placas de programación es que la cosa se sienta en el banco con un montón de cables de salto ya conectados, y luego tiene que moverlo para leer las etiquetas de los pines en la parte inferior de la placa. Los pines GreatFET están etiquetados en ambos lados, con etiquetas en la parte superior en el borde exterior. Las señales de uso común como SDA, SCL, MISO o MISO se etiquetan individualmente. Ambos puertos USB están etiquetados con sugerencias para indicarle lo que está buscando, y todas las almohadillas de prueba a continuación tienen etiquetas descriptivas. Se incluye una pegatina con la forma y el tamaño del tablero para encontrar un alfiler especial que se solía distribuir en KiCon y otros eventos de conciertos.

Tablero "Vecino" y palanca de "palanca" para separarlo del GreatFET

Puede omitir fácilmente las señales requeridas, pero para aplicaciones más sólidas, es posible que desee comprar o construir un vecino. Mi kit de revisión incluía Daffodil Neighbor, que trae una barra de pan sin costuras a la fiesta. Podrías construir fácilmente tu propio vecino con un estribor y dos cabezas de alfiler de dos filas, ya que el espaciado es predecible de 0.1 ″. La fila adicional de pines es opcional cuando se construyen vecinos. Cada GreatFET One incluye sabiamente una "llave", una sencilla herramienta de PCB que se utiliza para separar las dos placas sin doblar las clavijas, y la necesita para superar las 100 clavijas que hacen las conexiones entre las dos placas.

El software ofrece una gran versatilidad

Sí, el hardware de esta placa es animal, pero el software más promete versatilidad. No sé si esta es la herramienta de hardware de los desarrolladores o viceversa, pero ciertamente desdibuja la línea.

El estado actual del software no es lo suficientemente maduro y la documentación y las API se están procesando. Me encontré con algunos agotados desde la puerta, pero después de que se resolvieron, las partes probadas fueron simples y las partes de la API utilizadas fueron simples.

Primero las trampas. Intenté instalar estas bibliotecas para Python 2.7 y fue inútil; tienes que usar Python 3, lo cual es bueno porque Python 2.X llega al final de su vida después de seis meses. Luego, tuve problemas para conectarme a la placa de manera confiable, y asumí tontamente que tenía problemas con udev cuando en realidad tenía un cable de extensión USB desgastado. Finalmente, no he actualizado el firmware, que es lo primero que debe hacer en el hardware de este nuevo. Afortunadamente, todas estas cosas son bastante simples si sigues la guía inicial.

$ sudo pip3 install --upgrade greatfet

$ gf info
Found a GreatFET One!
  Board ID: 0
  Firmware version: git-2019.5.1.dev0
  Part ID: a0000a30654364
  Serial number: 000057cc67e630187657
$ gf fw --auto
Trying to find a GreatFET device...
GreatFET One found. (Serial number: 000057cc67e630187657)
Writing data to SPI flash...
Written 84812 bytes of 84812.
Write complete!
Resetting GreatFET...
Reset complete!

Documento de Python para API GreatFET DAC

Desde aquí puede controlar el tablero a través de una interfaz de línea de comandos, escribiendo comandos en un shell de Python en vivo o escribiendo y ejecutando sus propios scripts de Python. Aquí hay algo de aprendizaje curvo. La documentación y los tutoriales en línea son un poco escasos ahora, y la mayor parte de la información está disponible en el excelente paquete de Python. Por ejemplo escribiendo help(gf.apis.dac) eso me ayudó a averiguar qué pin investigar para la salida DAC.

Dicho esto, muchas de las funciones existentes se han trasladado a GreatFET, por lo que si está acostumbrado a usar GoodFET con MSP430 o Facedancer para desarrollo USB, creo que se sentirá como en casa. Tomemos algo de esto para una prueba de manejo.

Ejecución de prueba: I2C, DAC y Facedancer

Uno de los lugares en los que suelo utilizar herramientas interactivas (especialmente Bus Pirate) es para probar nuevas pantallas. Esto se debe a que generalmente tienen una larga cadena de comandos iniciales necesarios para activarlos, y quiero asegurarme de tenerlos justo antes de comenzar a escribir y compilar código para un proyecto.

Pantalla OLED I2C

Esto resultó ser extremadamente fácil con GreatFET. En solo unos minutos tenía una pantalla conectada y mostraba un patrón en cruz. La tabla es un objeto de Python en la enorme biblioteca que instalamos anteriormente, y la documentación de esa biblioteca aparece cuando se usa una pestaña. Usé la función de escaneo para encontrar la dirección. Los comandos I2C se pueden enviar agregando 0x80 o 0x40 al comienzo de la matriz de bytes para indicar la escritura de comandos o la escritura de datos.

La función help () de Python proporciona la documentación más detallada

Aquí está el código que utilicé. Realmente amo la capacidad de crear un script rápido como este, porque es simple hacer GitHub para mí (u otros) para usar en el futuro.

from greatfet import GreatFET

ssd1306init = [0xA8, 0x1f, 0xd3, 0x00, 0x40, 0xa0, 0xc0, 0xda, 0x02, 0x81, 0x7f, 0xa4, 0xa6, 0x20, 0x00, 0x21, 0x00, 0xff, 0x22, 0x00, 0x03, 0xd5, 0x80, 0x8d, 0x14, 0xaf]

gf = GreatFET()

addrscan = gf.i2c.scan()

addr = 0

for i in range(len(addrscan)):
    if addrscan[i][0] != False:
        # i is both the index of the array
        # and the address tested in the scan
        addr = i

if addr != 0:
    #Initialize the OLED
    gf.i2c.write(addr, [0x80] + ssd1306init)

    #Make screen buffer and fill with hash pattern
    screenbuff = list()
    screenbuff += 128*[0xCC,0xCC,0x33,0x33]

    #Write screen buffer to OLED
    gf.i2c.write(addr, [0x40] + screenbuff)

DAC de 0-3,3 V con resolución de 10 bits

Luego probé el DAC. No hay mucho que informar aquí. La función de ayuda de Python (gf.apis.dac) nos dice cómo configurar el voltaje y qué pin se usa para la salida: "Establecer el valor DAC en ADC0_0 (0-1023)". Mirando la enorme lista de funciones de pines en la wiki, veo que el pin 5 de J2 se asigna a ADC0_0. Puede ver que mi DMM confirma que establecer el valor en 512 (50% de la resolución) produce el 50% del riel de 3.3 V:

>>> gf.apis.dac.set(512)

Emulación USB Facedancer

La página del producto GreatFET enlaza con Facedancer rap, que se puede usar para copiar dispositivos USB, así que decidí intentarlo también. Conozco esta herramienta desde que Travis Goodspeed comenzó a mostrar prototipos en 2012, pero esta es la primera vez que la pruebo y es realmente genial.

Utiliza dos cables USB y ambos se conectan a la placa a través de microUSB y a una computadora (no es necesario que sea el mismo) a través de USB Tipo-A. El software Facedancer está escrito en Python (también tuve que instalar un pyserial) e incluye algunas muestras diferentes. Lo más simple que he encontrado mirando a mi alrededor es la capacidad de montar un archivo ISO usando la placa. Esto hace que GreatFET parezca una memoria USB con archivos. Tenía a mano una versión antigua de Mint que usé en la prueba.

$ git clone [email protected]:usb-tools/Facedancer.git
$ sudo pip3 install pyserial
$ cd Facedancer
$ ./facedancer-umass.py /Marge/linuxmint-18.3-cinnamon-64bit.iso

Fracaso total: ¡puedes recuperarte de esto!

Hay una función de la clase greatfet llamada onboard_flash. No juegues con esta función. No leí con atención los comentarios del documental sobre esto y simplemente escribí alegremente "La-Tecnologia" en el primer espacio de direcciones de este flash. Por supuesto, tan pronto como reinicié el tablero, ya no contaba. Esta función le permite reemplazar el firmware programado en la placa. Al observar este error, hay una advertencia clara de esto:

La versión corta de la historia: hay un modo DFU integrado en el excelente paquete de Python instalado en su computadora. La versión larga es que compilé desde la fuente y no pude obtener mi binario para revivir la placa. Después de abrir un número en GitHub, fui dirigido a los comandos apropiados. Primero, el código que no tienes que ejecutar:

In [46]: #Do Not Run This Code!
In [47]: arr = bytes("La-Tecnologia",'utf-8')

In [48]: gf.onboard_flash.write(arr,address=0x00,erase_first=True)

In [49]: gf.onboard_flash.read(0x00,8)
Out[49]: array('B', [72, 97, 99, 107, 97, 100, 97, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

Si hace esto, o cualquier otra tontería para bloquear su placa, el chip NXP tiene un modo DFU de dispositivo que es bastante simple y lo revivirá después de unos veinte segundos. Simplemente mantenga presionado el botón "DFU" en la placa, presione y suelte el botón "RESET", luego ejecute el siguiente comando:

$ gf fw --dfu --autoflash
dfu-util 0.9
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 1fc9:000c
Run-time device DFU version 0100
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0100
Device returned transfer size 2048
Copying data from PC to DFU device
Download [=========================] 100% 52736 bytes
Download done.
dfu-util: unable to read DFU status after completion
Trying to find a GreatFET device...
libgreat compatible board in flash-stub mode found. (Serial number: 000057cc67e630187657)
Writing data to SPI flash...
Written 84812 bytes of 84812.
Write complete!
Resetting GreatFET...
Reset complete!

Estas herramientas hacen todo lo posible si decide utilizarlas

¿Cuál es el veredicto final sobre el GreatFET? Si decides adentrarte en todo y hacer esto, la tabla que tienes en tu equipo cumplirá con su nombre y será una gran herramienta.

Eso se aplica a casi cualquier herramienta de banco, ¿verdad? Si eres realmente bueno en el uso de tu osciloscopio, pero luego necesitas realizar algunos trucos avanzados con el rango de un amigo de otro fabricante, te llevará algo de tiempo resolver las cosas. El GreatFET tiene una curva de aprendizaje, pero si dedicas el tiempo y haces de esta tu herramienta, el cielo es el límite de lo que puedes hacer con él. Sin embargo, si rara vez lo toma, tendrá que mirar los tutoriales cada vez.

Para mí, esta herramienta tiene mucho sentido, ya que soy un usuario frecuente de Python en el escritorio. Puedo confiar mis scripts GreatFET para rapear y verlos como mis propios tutoriales. Esto es mucho preferible a mi herramienta anterior, Bus Pirate, que tiene su propio lenguaje de terminal en vivo, que tengo que volver a aprender sin la misma capacidad fácil de guardar y hacer referencia a sesiones de pirateo anteriores. Y la extensibilidad de Python es tan amplia que cualquier procesamiento, grabación o manipulación de E / S de datos es posible y relativamente fácil.

El poder del chip en esta placa es una locura, pero realmente ¿por qué no apuntar a un chip fuerte en términos de IO, velocidad, memoria, etc.? Nunca exagere las características de este chip. El etiquetado de la placa y los métodos de la interfaz están bien pensados ​​y bien ejecutados. No veo cómo el hardware podría ser mejor en el GreatFET.

Mi única duda es el estado de la documentación y la API. En este momento no veo una forma de leer desde el ADC, y no estoy seguro de si solo hay un pin ADC o si puede multiplexar en unos pocos pines. Este es solo un ejemplo del estado alfa de los tutoriales y la información de inicio rápido. Pero espero que esto mejore. El proyecto es completamente de código abierto, el equipo es bueno para responder a los problemas de GitHub y creo que un buen conjunto de ejemplos contribuyentes usados ​​crecerá a medida que más personas comiencen a usar el tablero.

  • Greg A. dice:

    colóquelo en una caja y se verá obligado a adoptar un diseño tosco para evitar que la puerta de la base microbiana quede demasiado encerrada. por supuesto, todos tenemos impresoras 3d

  • Ren dice:

    ¡DETENER!
    ¡Deténgase inmediatamente!
    Sombreros, abrigos, escudos, etc., son nombres que se dan a las interfaces periféricas vinculadas a las placas de desarrollo.
    NOTA: siguen una convención para recibir el nombre de "algo" que lleva una persona.
    ¡Vecino VIOLA dijo congreso y necesita cambiar!
    ¿Puedo sugerir un "gemelo"?
    B ^)

    • matemático dice:

      Todavía necesitamos ... una MASCARA

    • macsimski dice:

      oh, lo hago con un vecino y me divierto mucho ...

      • Ren dice:

        ¡Tablas no "anchas"!
        B ^)

    • Elliot Williams dice:

      ¿Qué hacen los vecinos? ¿Reunirse, ayudarse unos a otros?

      • Sheldon dice:

        ¿Se juzga silenciosamente a sí mismo por no mantener el césped cortado de su lado de la cerca?

    • AVR dice:

      Todos tendrán que retroceder en el tiempo, esto se ha desarrollado hace mucho tiempo.

  • Alphatek dice:

    Entonces ... es un microcontrolador de pantano. Con el hardware accesible a través de bibliotecas. Estoy impresionado. En realidad. ¡Qué éxito!

    • eriklscott dice:

      Creo que las bibliotecas están un poco aquí ... 🙂

  • Mike Szczys dice:

    No publicamos contenido patrocinado. Este es un vistazo a una nueva herramienta, no un anuncio. Lo siento, no encuentras una necesidad en tu banco, al menos ahora sabes que no es para ti 😉

    • Hambre dice:

      ¿Nuevo? Tal vez si ha estado bajo una roca durante el año pasado.

      Si no es un anuncio, es solo contenido reciclado de baja calidad, típico de HaD hoy en día.

    • Konstantin Kavruk dice:

      de acuerdo con la nota "patrocinada", encontré una GUI para la cosa, simplificando enormemente su uso. Mirar

    • Konstantin Kavruk dice:

      Creo que olvidé el enlace https://github.com/dsl400/friendly-buspirate

  • Rog Fanther dice:

    Me gustaría ver algunos experimentos sobre la velocidad a la que puede alimentar esos pines gpio.
    Como, por ejemplo, la interfaz con el chip NAND o NOR (variedad normal, no el spi). O incluso espiar, en cosas que necesitan velocidad.

    • Osgeld dice:

      No puedo decir nada sobre esto, pero tengo algunas tablas en el mismo rango de potencia y la recta es casi más rápida que un interruptor.

      Por programa es un curso mejor ahora que acaba de superar el punto de tener control en tiempo real

  • Helio dice:

    El fragmento de código de Python parece ignorar la capacidad del lenguaje para expresarse. Sería un poco más pedante y lo escribiría así (tenga en cuenta que no está probado):

    from greatfet import GreatFET
    
    greatfet = GreatFET()
    
    ssd1306_init = [0xa8, 0x1f, 0xd3, 0x00, 0x40, 0xa0, 0xc0, 0xda,
                    0x02, 0x81, 0x7f, 0xa4, 0xa6, 0x20, 0x00, 0x21,
                    0x00, 0xff, 0x22, 0x00, 0x03, 0xd5, 0x80, 0x8d,
                    0x14, 0xaf]
    
    screen_buffer = [0xcc, 0xcc, 0x33, 0x33] * 128
    
    addresses = [address
                 for address, response
                 in enumerate(greatfet.i2c.scan())
                 if response[0]]  # Can we change the condition to any(response)?
    
    if addresses:
        last_address = addresses[-1]
        greatfet.i2c.write(last_address, [0x80] + ssd1306_init)
        greatfet.i2c.write(last_address, [0x40] + screen_buffer)
    
    

    -
    Codifique como Base64 para evitar problemas de formato:
    ZnJvbSBncmVhdGZldCBpbXBvcnQgR3JlYXRGRVQKCmdyZWF0ZmV0ID0gR3JlYXRGRVQoKQoKc3Nk
    MTMwNl9pbml0ID0gWzB4YTgsIDB4MWYsIDB4ZDMsIDB4MDAsIDB4NDAsIDB4YTAsIDB4YzAsIDB4
    ZGEsCiAgICAgICAgICAgICAgICAweDAyLCAweDgxLCAweDdmLCAweGE0LCAweGE2LCAweDIwLCAw
    eDAwLCAweDIxLAogICAgICAgICAgICAgICAgMHgwMCwgMHhmZiwgMHgyMiwgMHgwMCwgMHgwMywg
    MHhkNSwgMHg4MCwgMHg4ZCwKICAgICAgICAgICAgICAgIDB4MTQsIDB4YWZdCgpzY3JlZW5fYnVm
    ZmVyID0gWzB4Y2MsIDB4Y2MsIDB4MzMsIDB4MzNdICogMTI4CgphZGRyZXNzZXMgPSBbYWRkcmVz
    cwogICAgICAgICAgICAgZm9yIGFkZHJlc3MsIHJlc3BvbnNlCiAgICAgICAgICAgICBpbiBlbnVt
    ZXJhdGUoZ3JlYXRmZXQuaTJjLnNjYW4oKSkKICAgICAgICAgICAgIGlmIHJlc3BvbnNlWzBdXSAg
    IyBDYW4gd2UgY2hhbmdlIHRoZSBjb25kaXRpb24gdG8gYW55KHJlc3BvbnNlKT8KCmlmIGFkZHJl
    c3NlczoKICAgIGxhc3RfYWRkcmVzcyA9IGFkZHJlc3Nlc1stMV0KICAgIGdyZWF0ZmV0LmkyYy53
    cml0ZShsYXN0X2FkZHJlc3MsIFsweDgwXSArIHNzZDEzMDZfaW5pdCkKICAgIGdyZWF0ZmV0Lmky
    Yy53cml0ZShsYXN0X2FkZHJlc3MsIFsweDQwXSArIHNjcmVlbl9idWZmZXIpCgo =

    • Helio [0x2b3bfa0] dice:

      Veo que el código del artículo se ha actualizado para incluir algunas de mis sugerencias, reemplazando un repugnante bucle "while" con el práctico operador de multiplicación. Sin embargo, todavía me falta algo de PEP8 (sensato), la guía de estilo de código oficial de Python, para los no iniciados, y el uso de modismos como listas de comprensión para reemplazar los bucles tradicionales.

      Hablar del estilo del código no es la mejor manera de hacer amigos, ni la mejor manera de hacer un buen código. Dicho esto, me gustaría saber si la forma menos expresiva de escribir el manuscrito original se inventó para que pudiéramos entenderlo, o si esa simple demostración se hizo rápidamente para ilustrar el artículo y no necesita tal nivel de pinchazo.

      También me gustaría agregar que el condicional `if respuesta[0]`en la lista, el entendimiento podría ser más explícito si es necesario expandiéndolo a` si la respuesta[0] ! = Falso` para comparar con todos los tipos que no son falsos, o `si la respuesta[0] no es "Falso" para filtrar todos los elementos que se establecen explícitamente en "Falso". La idea de usar `si alguien (respuesta)` era comprobar que ambos escriben una[0]`) o leer una respuesta (` respuesta[1]`) es` Verdadero`. Para comprobar ambos, como si fuera una operación `y`, puede usar` if all (answer)`.

      • celdrono dice:

        Encuentro que retrocedo y copio / pego el código antiguo con la suficiente frecuencia como para que definitivamente valga la pena el tiempo dedicado a pulir mis demostraciones de aprendizaje iniciales.

        Sí, ciertamente califica como malicioso, pero vale la pena el esfuerzo de un código de demostración refactico. Agrego las primeras pruebas al código a medida que lo simplifico; y esas pruebas sirven como excelentes demostraciones de la interfaz. La refactorización también me ayuda a ver el código desde diferentes ángulos, por lo que entiendo todo mejor. Y, en serio, no lleva mucho tiempo, porque todavía tengo todo fresco en la mente. (Sí, sé que tengo que hacer TDD desde el principio, pero cuando trabajo en esto, me emociono por obtener resultados primero. El truco es reconocer desde el principio que necesito refactorizar y probar).

        De todos modos, sé que cuando recoja ese código en dos años, lo recolectaré rápidamente, incluso si lo he ignorado mientras tanto. Incluso si solo reutilizo la mitad de mis demostraciones, la recompensa de comenzar un proyecto decentemente limpio da como resultado un gran impulso para el nuevo.

  • Tom Nardi dice:

    Tengo el mismo problema con Bus Pirate (quizás todos lo tenemos). Vuelvo a él después de no usarlo por un tiempo, e inmediatamente lucho por recordar toda la sintaxis y los matices. Entonces, algo con lo que pueda trabajar en Python que sea comparativamente difícil de olvidar sería una gran mejora.

    En cuanto al precio, seguro que a todos nos gustaría verlo un poco más bajo. Pero paga un poco más cuando trata con un dispositivo de código abierto producido en relativamente pocos números. Dicho esto, al igual que con HackRF e incluso Bus Pirate, es una buena apuesta que veremos "clones" extranjeros durante demasiado tiempo.

    Así que cómprelo ahora si quiere ser compatible con Great Scott Gadgets, o de lo contrario arriesgue la versión barata de importación.

    • Zapato dice:

      He estado usando SPIDriver últimamente y lo encontré realmente útil solo porque puedo guardar y comentar los scripts de Python. Estaba considerando a Bus Pirate para hacer cosas de i2c, pero tienes razón, lo extrañaría.

      El GreatFET parece interesante y más flexible pero caro en comparación. Puede que sea demasiado suave para mis necesidades personales, pero es una opción tentadora sobre I2CDriver.

    • Vadear dice:

      También puede ver las placas basadas en FT232H con pyftdi. Pueden hacer muchas cosas similares. El greatfet es ciertamente más poderoso, pero las placas FT232H se pueden comprar a bajo precio en las fuentes habituales.

    • NiHaoMike dice:

      Teniendo en cuenta que cuesta casi tanto como una placa de desarrollo Artix 7 FPGA con la opción USB 3.0, esperaría algo como un ICE40 más alto (si una herramienta de código abierto importa) conectado a un par de chips FX2 y algo de RAM. Luego, agregue una biblioteca de Python que abstraiga la complejidad de la programación FPGA si el usuario solo desea unas pocas interfaces comunes rápidas, lo que permite a los desarrolladores agregar soporte para más interfaces para admitir más dispositivos.

      • Rogan Dawes dice:

        Parece que quieres Glasgow ... (¡Yo también!)

  • Hambre dice:

    Tengo que estar de acuerdo, ftdi board y jlink mini tienen menos de $ 30 y puedes hacer más con ellos.

    Sin mencionar que el gran niño tiene más de 3 años ... incluso se habló de un sombrero negro en 2016. Pero supongo que cuando la única investigación de los escritores de HaD pasa por el blog de adafruit, podría parecer "¡NUEVO NUEVO NUEVO!"

  • jafinch78 dice:

    El Gladiolus Neighbor capaz de IR me alertó y ciertamente me compra. A medida que las habilidades de HackRF se pirateaban para mejorar el rendimiento con elementos de mejor calidad respaldados como fuera posible ... ya he estado pensando un poco en mejorar las habilidades para piratear el Gladiolus Neighbor.

    https://github.com/greatscottgadgets/greatfet/wiki/Neighbors

  • Nathan dice:

    Estoy en el mercado para crear Shikra para descartar el firmware de los chips, pero la placa del diablo no está disponible y BusPirate es demasiado lento para eso. ¿GreatFET también sería bueno para eso?

    • Rogan Dawes dice:

      Hay varias placas equivalentes disponibles en AliExpress, etc. Te falta la etiqueta de alfiler ordenada, etc., pero es básicamente el mismo tablero.
      por ejemplo, https://www.aliexpress.com/item/32803289122.html

      • Rog Fanther dice:

        No es exactamente equivalente al gran Fet debido a la falta de gpio, pero se puede usar en los casos más comunes cuando un bus pirata sería suficiente.

      • Kurt dice:

        Curiosamente, es un clon de Shikra 1: 1. ¿luego?

        • Elliot Williams dice:

          Debo admitir que no sé qué es Shikra, pero esta placa parece una implementación simple del proyecto de referencia FT232.

          ¿O se trata del diseño de referencia menos EEPROM? La EEPROM es buena para mantener las cosas configurables.

          Utilizo una tabla de este tipo de vez en cuando. Hace un excelente SPI rápido y es bueno como adaptador OpenOCD JTAG. Es más rápido / mejor que Bus Pirate en todos los sentidos, excepto que tú mismo sigues trabajando mucho. (Lo que disfruto.)

          Pero lo que pasa con GreatFET es que a) hace aún más, especialmente USB-man-in-the-middle, yb) es mucho más personalizable / escribible / flexible, porque casi todo es básicamente una marioneta desde el lado de la computadora y Pitón.

          El problema de Mike sobre si es hardware para programadores o viceversa es visible.

  • megabyte dice:

    Por curiosidad, ¿qué significa "DFU"? Solo puedo pensar en "¡Maldita sea!" ¡Mierda! "pero estoy bastante seguro de que eso no está bien.

    • Dmitrii dice:

      Actualización de firmware de hardware

      • ren dice:

        Gracias, también tenía curiosidad (al igual que [mb])
        Universidad Financiera de Dallas
        Descarga Flying Units
        Unidades fijadas digitalmente
        Árbitros del futuro húmedo
        Oscurecer el uranio fluorescente

    • sqelch dice:

      Digo "No huyas" porque te uniste a DFU y digo que tenías la intención de hacerlo

  • Max dice:

    Esperaba que algún tipo de Bus Pirate fuera realmente utilizable (ya que tiene una GUI efectiva) básicamente para siempre, por la misma razón: la vida es demasiado corta para "aprender" los comandos de la consola que usas una vez en una luna azul y olvidar antes incluso de cerrar la ventana de la terminal. No, tener una lista de "ayuda" de lo que se supone que debe hacer lo que no es mejor. No, lo mismo sucede solo con Python en lugar de los comandos de la consola, tampoco mejor (pero aparentemente mucho más caro). Puedo lanzar una GUI en dos décadas y reconocer _literalmente instantáneamente_ "aquí está la pestaña" Herramienta SPI ", aquí está el cuadro de texto que escribo mis datos hexadecimales para enviar, este otro es donde obtengo mi respuesta, y aquí está" Enviar "I haga clic en un botón para hacerlo '. NADA más puede hacer eso. GUI solamente. Que es, por supuesto, la razón por la que no existe absolutamente nadie utilizable para algún dispositivo barato de clase Bus Pirate del que haya oído hablar, por supuesto: nada personal, el Universo simplemente odia tu puto coraje. Afortunadamente, aparentemente debería ser trivial codificar uno yo mismo si no me gusta esto; presumiblemente en Python no recuerdo cómo usarlo primero. Es el castigo estándar por solo querer mantener tus dispositivos electrónicos o lo que he escuchado, tontamente por no aspirar a unirte a la GUI App Coder Master Race. Porque si por alguna razón no puede hacer malabares con tres docenas de marcos GUI / libros de soporte que necesitan libros de soporte basados ​​en libros de soporte / sistemas de compilación que configuran sistemas de compilación que configuran sistemas de compilación (diferentes semanalmente) vinculando todo con algo moderno y moderno. como Rust o Haskell mientras duermes con las manos atadas a la espalda, entonces claramente eres solo una pérdida de oxígeno completamente bueno. Claramente.

    • Ren dice:

      ¿Estoy detectando un poco de sarcasmo en tu comentario?
      B ^)

  • Mike M. dice:

    ¿Por qué no usar un núcleo STM32 barato con Micropython?

  • Eric Min dice:

    De acuerdo, todavía soy un novato en ingeniería integrada, pero ¿en qué se diferencia del software estándar de Micropython o de cualquier software con firmware de intérprete cargado?

    • Jarrett dice:

      Estoy bastante seguro de que Python se ejecuta en el escritorio, con una rápida comunicación USB a la placa. Python de escritorio completo tiene ventajas obvias sobre Micropython, incluida la posibilidad de guardar / hacer proyectos realmente complicados, millones de paquetes de Python y no tener que aprender los caprichos de una implementación incrustada extraña de Python.

      También probablemente más rápido, porque la implementación de las funciones de un microcontrolador es innata, más que interpretada.

  • Él rió dice:

    ¿En qué se diferencia de esto un microcontrolador A-32-bit (STM32F4) con micrófono, usb, i2c, spi, lcd, etc.?

    • Roca dice:

      Intente graficar datos de sensores en tiempo real en una computadora portátil Jupyter con un micrófono ...

  • fulano de tal dice:

    Puede obtener clones chinos de las encuestas jtag de j-link v10 por alrededor de $ 40. Estos tienen un procesador nxp lpc4330 y algunos cambiadores de nivel.

Gloria Vega
Gloria Vega

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *