Cubriendo más memoria flash

[Curmudegeoclast] se quedó sin memoria flash en una placa Trinket M0, por lo que decidió usar epoxi y volar drásticamente 2 MB de flash adicional además de la CPU original.

Simplemente nos desharemos de nuestros “niños de hoy” en el futuro: el chip SAMD21 ARM estándar tiene 256 kB (!) De flash para empezar, y está en una placa de interruptores con solo cinco pines GPIO, para 51 kB / pin ¡proporción! ¿Y ahora agrega 2 MB más? Eso es una locura. La razón declarada de [Curmudegeoclast]El ejercicio es MicroPython, que requiere un gran bloque solo para el lenguaje base. Sospechamos que también hay suficiente “¿no está bien?” también en la mezcla. Lo que.

El truco es un clásico. Comienza con cables incompletos soldados a pines y dispuestos con una placa de expansión SOIC. Siguiendo esta prueba de concepto, se aporta cierto grado de integridad estructural a los procedimientos pegando el chip de relámpago, un insecto muerto, en la parte superior del microcontrolador. Nos encanta la resistencia de voltaje SPI (0805?), Que también ha sido soldada de punto a punto. No pudimos resistir la tentación de enterrar todo en pegamento caliente para una estabilidad “a largo plazo”, pero también hay mejores opciones.

Este truco toma una tabla minimalista y la sobredimensiona, y por eso, felicidad. ¿Qué llenarías en 2 MB de flash libre en un pequeño microcontrolador? ¿Alguno de ustedes que usa MicroPython o CircuitPython se preocupa por comentar sobre los requisitos de memoria flash? 256 kB debería ser suficiente para cualquiera.

  • Thanos dice:

    640kb de RAM es suficiente para todos “Bill Gates hablando de DOS” …

    • Hombre sin marcar dice:

      Bill Gates no fue en realidad quien dijo eso. Era un ingeniero de IBM (cuyo nombre se perdió antes de la historia) en la arquitectura de la computadora IBM. La barrera de 640kb nunca fue una limitación de DOS, fue una limitación de la computadora.

    • huésped dice:

      Asistí a un seminario hace muchos años donde el chico que habla dijo que estaba presente cuando Bill Gates dijo que … Me sentí como un mentiroso. jaja … ¿Bill Gates alguna vez respondió a eso públicamente? No, no lo estaba buscando, pero creo que lo haré ahora. [done searching for the answer I wanted]

      Es esto:
      “Escuché a alguien decir que esta frase la dijo en realidad un ingeniero de IBM. Lamentablemente no recuerdo dónde lo leí ni el nombre del ingeniero. ¿Sabes algo sobre esto? “

      “640K debería ser suficiente para cualquiera” * fue * * * ciertamente * dijo Bill Gates. Lo dijo en una de las primeras ferias de microcomputadoras en Seattle a mediados de 1981. Es la máquina de relaciones públicas de Microsoft la que a lo largo de los años ha intentado reescribir la historia y pretender que Gates nunca hizo este comentario característico. “

      Desde aquí: https://en.wikiquote.org/wiki/Talk:Bill_Gates#640_k.2F1_MB

      Parece que no hay forma de probarlo o refutarlo en la actualidad. Me encantaría saber si alguien más podría asistir a esa feria comercial en 1981, donde supuestamente dijo eso.

      • Hombre sin marcar dice:

        Incluso si Gates lo dijo (y como usted indicó que no probó), nunca fue culpa de Microsoft. Por el contrario, Microsoft ha realizado grandes esfuerzos para superar el límite de 640kB (como estandarizar los mecanismos de cambio bancario).

  • DainBramage dice:

    En esta era de memoria diminuta y barata, no entiendo por qué cualquier dispositivo viene con menos de 2 MB. Parece un desperdicio no.

    • Dmitry Grinberg dice:

      energía

    • Redhatter (VK4MSL) dice:

      Porque almacenar 0,001 bits es difícil.

      • Nicolás dice:

        Casi me lo pierdo.

    • Mella dice:

      La memoria flash se borra estableciendo todos los bits del sector en ‘1’, y la escritura funciona estableciendo un bit separado en ‘0’. Por ejemplo, estoy trabajando en un software para una aplicación con un chip de 32 mb que solo se puede quitar en 4kb bits. Mi MCU tiene suficiente RAM para almacenar en búfer un elemento completo de 4kb, por lo que “editar” un elemento de 4kb es simple: lea el contenido en la RAM, elimine el elemento, reescriba el contenido modificado.

      Si tuviera que usar ese mismo chip con, por ejemplo, Atmega328, tendría que copiar todo el elemento de 4kb en otro lugar del chip flash, luego eliminar el elemento anterior y reescribirlo con la nueva copia guardada como referencia. Esto es más lento, desgasta el chip más rápido y consume más energía. Si necesita desarrollar un dispositivo robusto con un chip flash cuyo bloque borrable mínimo es demasiado grande para ser almacenado en la RAM, también querrá idear un esquema para rotar a qué partes del chip se usan como almacenamiento temporal para nivelar la memoria RAM. desgaste.

    • W dice:

      Si su código coincide con 32kB y se ejecuta en un dispositivo de $ 0.50, ¿por qué pagaría $ 3 o más por dispositivos con 2MB? Especialmente cuando construyes 100.000 de ellos.

      En segundo lugar, la memoria flash “pequeña y barata” es una memoria flash poco fiable que funciona solo porque encima hay una capa de mapeo de bloques. El espacio de código para micro debe ser completamente confiable para no tener agujeros (rendimiento mucho mayor); por lo tanto, es más grueso y los tamaños más caros. Tampoco hay forma de que un fabricante coloque dos golpes (de procesos diferentes) en un dispositivo de $ 0.50 porque los costos de ingresos son demasiado altos.

    • mac012345 dice:

      Problema de proceso. límites de flash integrados fiables, rápidos y baratos de alrededor de 4 MB. Después de eso, debe optar por el flash QSPI que no es * barato * en comparación con el flash integrado.

    • treinta y uno dice:

      Sí, recuerde que los procesos utilizados para crear memoria flash de muy alta densidad son muy diferentes de los utilizados para crear MCU. En realidad, no puede poner ambos en la misma pieza de silicona sin hacer una gran compensación. En primer lugar, los transistores de los procesos de memoria flash suelen ser mucho menos fiables. Por lo general, estos errores se corrigen debido al uso de una lógica de controlador de memoria flash separada en un chip en particular que administra todos los diferentes bancos de memoria y evita los defectuosos.

      Además, para reducir los costos, el consumo de memoria de bolsillo solo puede manejar problemas en bloques bastante grandes. A menudo, este bloque es más grande que el que las MCU inferiores podrían manejar razonablemente.

      Por lo tanto, el área de la memoria flash es probablemente 10-100 veces más grande en la MCU de rango insertada (ATmega, Cortex-M0 / M3 / M4, etc.) que en la linterna dedicada.

      Cuando realmente se necesita más memoria flash, se vuelve más común en dispositivos de gama alta solo apilar un lanzador flash de alta densidad y un lanzador MCU. Por supuesto, este proceso no es barato, por lo que solo ocurre cuando realmente se necesita tanta memoria flash.

  • Jz321 dice:

    Las variantes de 32 pines del SAMD21 tienen 26 GPIO, no 5, ¿jajaja?

    • Moryc dice:

      La placa tiene 5 GPIO …

      • Jz321 dice:

        Un artículo dice que el stock SAMD21 tiene 5 GPIO sin embargo …

        • Elliot Williams dice:

          Reparado.

  • Steve123 dice:

    2 MB de almacenamiento se pueden llenar fácilmente con mapas de bits.

  • Scott Shawcroft dice:

    Scott (también conocido como tannewt) aquí. Soy el desarrollador principal de CircuitPython. Gran parte del flash se toma del kernel de MicroPython, que recarga Python 3.4. Otra buena parte de la memoria flash la utilizan los módulos compatibles con C que proporcionan API al hardware en sí. Finalmente, las placas sin flash SPI externo tienen sistemas de archivos internos en el flash SPI que se utilizan para almacenar el código de usuario. Gemma M0 y Trinket M0 tienen sistemas de archivos de 64 kb. Agregar un flash SPI externo libera esos 64k para más módulos C y brinda más espacio para el código de usuario.

    El resultado final es esencialmente una cadena de herramientas autónoma. La entrada a CircuitPython es texto legible a través de almacenamiento masivo USB y el resto se realiza en el microcontrolador. Una ventaja adicional es que su código lo acompaña de una manera editable por humanos. Por lo tanto, puede conectarlo a otra computadora para editarlo y no preocuparse por dónde lo guardó o si se lo envió por correo electrónico por primera vez.

    • Sjaak dice:

      ¿Por qué no agregar soporte para mikrosd en modo SPI? Memoria más barata y extraíble también.

      • Scott Shawcroft dice:

        Las tarjetas microSD son compatibles con la última versión candidata (2.x). En realidad, usa código Python para interactuar con la tarjeta, por lo que aún necesita otro sistema de archivos para arrancar ahora.

  • Ricardo dice:

    Puse mis manos sobre uno de estos. Están MUY compuestos. Realmente es un plug and play. Si puede, consiga uno. Si eres un estudiante de la vieja escuela con código asm / c / c ++ como yo, puedes encontrar tu opinión sobre lo que se necesita para crear dispositivos integrados. Deseche ese IDE. 🙂 Volvió a ese momento y a codificar los sistemas de los 80 y 8 bits como el ZX80 / ZX81 que comencé a codificar en BASIC.

  • Abdulbasit dice:

    A menudo, ¿realmente llamas a esto un truco? Habría sido más fácil para él si hubiera reestructurado la junta

    • Gurningtree dice:

      Entonces, modificar algo de una manera difícil para expandir la capacidad en lugar de proyectar algo para hacer el truco mediante métodos convencionales, ¿no es eso un truco?

    • Elliot Williams dice:

      Este es ciertamente un truco, según todas las definiciones: es una solución, es un poco superficial y es un abuso creativo de la ofensa.

      Ahora si fuera yo, yo volus reestructuró el tablero. Romper algunos de esos pines extra, y así sucesivamente. Pero entonces no tendría este factor de forma diminuto. Y eso sería ingeniería, no un truco.

      • dastelas dice:

        Entonces, básicamente tendrías un Feather M0 Express. El atractivo de Trinket es su pequeño tamaño. Mantuve ese rastro y tengo mucho espacio para python-libs y código.

  • Galane dice:

    No me importaría agregar 32 o 64 gigabytes al almacenamiento integrado de mi teléfono Galaxy S4. Entonces no debería insertar todos los programas que puedan estar en la tarjeta SD.

    • andarb dice:

      Es muy molesto que en un mundo donde el almacenamiento y la duración de la batería son consideraciones muy valiosas para los consumidores, los fabricantes continúan eliminando las ranuras de almacenamiento expandidas y presionan los dispositivos para reducir el tamaño de las baterías y, por lo tanto, reducen el tamaño de las baterías. No conozco a nadie que elija el “paperphone 47” en lugar de “la batería dura una semana y contiene todas las fotos que ha tomado en un teléfono” con el doble grosor.

  • przemek klosowski dice:

    El DOS original se escribió para la computadora IBM original con una CPU 8088, que tenía 20 líneas de dirección y, por lo tanto, solo podía usar 1 MB de memoria. Entonces, sí, fue una restricción para DOS. Recuerde, todo fue malo, porque la arquitectura x86 usaba segmentos de 64kB, lo que en realidad facilitó la adaptación de DOS para CPU con más de un bus de direcciones de 20 bits: eran solo más segmentos.

    • Hombre sin marcar dice:

      “El DOS original se escribió para la computadora IBM original con una CPU 8088, que tenía 20 líneas de dirección y, por lo tanto, solo podía usar 1 MB de memoria. Entonces, sí, fue una restricción para DOS. “

      No, no lo fue. Todo lo que supere los 640kB fue respaldado por la BIOS o la memoria gráfica. También se reservó el primer kB de memoria para la tabla de interrupciones.

      http://wiki.osdev.org/Memory_Map_(x86)

      Tenga en cuenta que BDA y EBDA no existían en la primera computadora.

  • customdev dice:

    Motein tiene uno. La mayoría de los chips ESP8266 soldados a bordo tienen uno. Ahora, si pudiera mover el bote, le pediría a alguien que probara un chip CY15B104Q FRAM …

  • dastelas dice:

    Elliot, fue 100% “¿no sería genial?”. Eso, para mí, es la esencia misma de un truco. También fue un ejercicio para sumergirse en el hardware SAMD21 y la base del código CircuitPython.

    Desde entonces he construido otro que es bastante más ordenado. Se agregó una foto de esto a la publicación original.

  • deshipu dice:

    Para aquellos que quieren probarlo pero no tienden a descubrir las conexiones y el código correctos, lo copié y documenté con un chip aquí: https://la-tecnologia.io/project/21578-pewpew-featherwing/log / 68146-replicando-el-truco-de-baratija-m0-express-hack

Isabella Ortiz
Isabella Ortiz

Deja una respuesta

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