jueves, 9 de julio de 2009

Bloques defectuosos en NAND interna

En todo el entusiasmo de ver funcionar mi cacharrito, el día 26 de junio vi en el dmesg

"debian kernel: JFFS2 notice: (666) check_node_data: wrong data CRC in data node at 0x07ebf000: read 0xbfae941a, calculated 0x15b28e17"

Cuando hacía badblocks /dev/
mtdblock1 me daba 133 bloques defectuosos.

Así que escribí a la empresa, y me respondieron:

<<

Please see below response from our Tech. Team:

This is acceptable and normal for Nand flash, we have checked with vendors like Samsung, Hynix and others and had the answer that max. acceptable bad block number is 80 for 128MB NFlash.

Usually linux kernel will handle bad blocks automatically. When you update filesystem kernel will avoid using these bad blocks.

There is another possibility that those bad blocks message is a false alarm, you can try to reflash the sheevaplug to see if there are less bad blocks.

The easiest way to reflash uboot and other images is through SheevaPlug installer:

http://plugcomputer.org/plugwiki/index.php/SheevaPlug_Installer

Please follow the instructions in this web page to reflash your SheevaPlug if you would like to.

If you still encounter the problem, please keep us inform.

Thank you.

Sincerely,

Support#1702

Globalscale Technologies Inc.

>>

Efectivamente, reflasheé el aparato tal y como describe ese procedimiento (alpha-6), que me funcionó sin ningún problema (salvo que me daba advertencias quejándose de unos timeouts), y ahora el badblocks ya no da ningún bloque roto.

No sé si es que era una falsa alarma, como decían ellos, o si es que en el proceso de reescritura de la flash se da cuenta de los sectores defectuosos y los marca para directamente no usarlos. Eso está por descubrir...

lunes, 6 de julio de 2009

JFFS2 en dispositivos no MTD

Tengo el plug con una tarjeta SD con todo el sistema y el /home. Le puse el lenny, tal y como se describe en una página por ahí resulta muy fácil. Sugiere poner ext2, y es lo que le puse.

¿El problema? Que las memorias flash tienen un número de ciclos de escritura (en realidad, de borrado, pero en la práctica cada escritura es un borrado seguido de una escritura, así que dejémoslo en "ciclos de escritura") limitado, y que los sistemas de ficheros clásicos tienen unas determinadas "áreas calientes" que sufren un gran número de escrituras (índices, tablas de metainformación etc).

Para ello se inventaron sistemas de ficheros como el JFFS2, que es lo que lleva la Ubuntu que trae por defecto. El problema es que JFFS2 sólo se puede montar sobre dispositivos MTD. Y para Sheevaplug así como la memoria NAND interna sí es un dispositivo MTD, la tarjeta SD no lo es. Y no se puede montar JFFS2 sobre un dispositivo no MTD.

Existe una manera, mediante el módulo block2mtd, pero este módulo no está disponible en el núcleo kirkwood que tengo en el aparato. ¡Así que no puedo hacer el equilibrado de desgaste!!

Voy a preguntarle a los de la empresa este problema a ver si pueden darme alguna pista.