Mejores prácticas para la programación de producción de datos / dispositivos flash NAND

5

Un proyecto finalmente ha llegado al punto donde los prototipos están operativos y los patos se están alineando en filas para el primer lote de tableros de preproducción. Utiliza un dispositivo SOC que arranca su núcleo ARM desde un chip externo NAND FLASH, que normalmente contiene un cargador de arranque, la aplicación integrada y otros recursos de datos. Con un cargador de arranque y una aplicación mínimos en FLASH, es fácil de actualizar en el campo. Los prototipos instalaron los cargadores de arranque con un cable JTAG, pero eso parece más que un poco difícil de manejar para lotes de producción más grandes que una docena o más de tableros.

Si se tratara de una PROM. NOR FLASH o OTP, esperaría que un proveedor esté encantado de tomar un archivo Intel HEX o Motorola SRecord y entregar dispositivos que funcionen cuando estén soldados.

Dada la naturaleza diferente de los dispositivos NAND FLASH, ¿a qué problemas debemos estar atentos? ¿Qué preguntas deberíamos hacerle a los vendedores? ¿Qué forma de imagen deberíamos estar esperando poder suministrar?

En resumen, ¿cuál es la práctica habitual para preprogramar un dispositivo NAND FLASH antes del ensamblaje?

Editar:

Si fuera para marcar la diferencia, es un STM (numonyx o micrón, ¿por qué las empresas de chips no pueden venderse mutuamente sus líneas de productos a mitad del ciclo de diseño?) Dispositivo NAND512xxx 512 Mb SLC que desea programación. / p>     

pregunta RBerteig

5 respuestas

2

Resulta que el distribuidor ha descubierto que puede realizar este servicio en piezas sueltas antes de la entrega al centro de montaje. Personalmente no estoy involucrado en el proceso de compra, y no puedo comenzar a adivinar cuánto (si acaso) aumentó el costo de las piezas.

Tuvimos que producir un archivo que contenía una copia de cada bit programable, incluidos los 16 bytes adicionales por página, con los bytes adicionales correctamente formateados con el ECC y la estructura de información de bloque defectuoso que coincide con los supuestos del controlador NAND, y con todos los bloques no utilizados (y sus bytes adicionales) dejados en blanco. El archivo era tan grande como el dispositivo, pero ZIP tenía mucho apalancamiento para la compresión.

Además, tuvimos que generar una tabla de direcciones base y tamaños esperados de las particiones en uso en el dispositivo.

Aparentemente, el programador de FLASH de E / S de datos verificará cada página durante la programación, marcará las páginas que fallan como malas y volverá a intentar automáticamente en la página siguiente. Esto requiere que las particiones tengan suficiente espacio libre para permitir algunas páginas defectuosas. La parte será rechazada si un número específico de páginas es malo, o si una partición no encaja.

Nuestro primer lote está en proceso basado en un volcado de imagen del chip en vivo en una unidad prototipo. Nuestro plan es mejorar eso escribiendo una herramienta que pueda producir la imagen necesaria a pedido o como un paso final de construcción.

    
respondido por el RBerteig
3

El truco aquí es PogoPins (Wikipedia )

Básicamente, crea una plantilla en la que suelta el tablero que a menudo se describe como un Lecho de uñas Probador de circuito / programador, y luego parpadea sin tener que lidiar con el aspecto de acoplamiento de conectores de la interfaz jtag.

LadyAda hizo un tutorial , y también lo hizo SparkFun

    
respondido por el Connor Wolf
1

Cuando hice cosas similares, siempre programé el SoC con JTAG (o un programador de pandillas), luego tuve el formato de núcleo ARM y programé el flash NAND (que se alimenta de datos en serie o Ethernet).

De esta manera, el software puede mapear cualquier bloque defectuoso en la NAND.

    
respondido por el Toby Jaffey
1

Una posible forma de evitar el problema del bloqueo defectuoso es tener un cargador de arranque mínimo en el área inicial sin errores garantizada de la NAND, y tener este programa el contenido principal a través de cualquier interfaz que el producto tenga disponible durante la prueba. p.ej. Conecta temporalmente una tarjeta SD o algo así.

Otra opción si tiene suficiente espacio en la NAND es preprogramar varias imágenes y hacer que el procesador obtenga una buena imagen de estas imágenes la primera vez que se enciende.

Valdría la pena hablar con las compañías que ya ofrecen servicios de programación, ya que pueden haber encontrado soluciones para esto.

    
respondido por el mikeselectricstuff
0

El enfoque más versátil, aunque no sé si alguien lo admite, sería hacer que un programador de chips lea un chip y lo escriba en un archivo, luego ejecute un programa suministrado por el usuario para actualizar el archivo con lo que debería esté en el chip, programe el archivo resultante en el chip y léalo, y ejecute el programa suministrado por el usuario para verificarlo (posiblemente repita el ciclo del programa si el programa de verificación no está satisfecho con el resultado). Cuando eso no es práctico, creo que el mejor enfoque es a menudo simplemente tener un medio para introducir los datos requeridos en el circuito objetivo para que pueda programar el chip de memoria utilizando cualquier forma de corrección de errores y memoria de bloque defectuoso que utiliza. .

    
respondido por el supercat

Lea otras preguntas en las etiquetas