![]() |
|
| Samsung Galaxy S III Subforo para hablar del espectacular Galaxy S3 de Samsung |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
|
Lo he colocado aquí porque no me encaja en desarrollo, si no lo consideran bien ubicado, muévanlo a donde les parezca oportuno.
Como todo en esta vida, creo que a todos nos gustaría entender qué está pasando con las eMMCs de nuestros S3, y que ha hecho Samsung al respecto. Aquí es donde entra en juego este post. Pues bien, voy a intentar explicar a que se debe el error, y como lo ha arreglado Samsung. En primer lugar, deciros que es muy difícil leer, en primer lugar el ARM descompilado del kernel, y en segundo lugar, el dump de la RAM del MMC. Así que no estoy seguro al 100% que lo que digo sea cierto, sin embargo si estoy casi seguro al 99.9999%. Leer un DUMP de una RAM es muy complicado. Asi que, ¿Qué pasa? En primer lugar nos vamos al parche del firmware para el eMMC que publicó Samsung y encontramos lo siguiente: (Ver el parche completo) Código:
if (!strncmp(host->card->cid.prod_name, "VTU00M", 6) &&
(host->card->cid.prod_rev == 0xf1) &&
(mmc_start_movi_smart(host->card) == 0x2))
host->card->movi_ops = 0x2;
if (host->card->movi_ops == 0x2) {
err = mmc_start_movi_operation(host->card);
if (err) {
pr_warning("%s: movi operation is failed\n",
mmc_hostname(host));
goto remove_card;
}
}
Código:
int mmc_start_movi_smart(struct mmc_card *card) {
(...)
if (date != 0x20120413) {
err = -1;
return err;
}
(...)
}
A continuación pasa lo siguiente: Cuando la eMMC se inicializa se ejecuta mmc_movi_cmd(card->host, 0xEFAC62EC); y mc_movi_cmd(card->host, 0x10210000);, por lo que la tarjeta entra en modo de escritura a la RAM de la misma. Ahora lo que hace es escribir en la RAM con MMC_ERASE_GROUP_START(Dirección) MMC_ERASE_GROUP_END(Valor) MMC_ERASE(0). Los dos grupos escritos son: Código:
10B5034A9047002800D1FEE710BD0000739D0500 para la dirección 0x40300 y E3F789FD para la 0x5C7EA (Si os interesa aquí os dejo el juego de instrucciones Thumb de ARM) Código:
00040300 PUSH {R4,LR}
00040302 LDR R2, =0x59D73
00040304 BLX R2
00040306 CMP R0, #0
00040308 BNE locret_4030C
0004030A
0004030A loc_4030A ; CODE XREF: loc_4030Aj
0004030A Bloc_4030A
0004030C
0004030C
0004030C locret_4030C; CODE XREF: 00040308j
0004030C POP {R4,PC}
0004030C
Nos encontramos con que en la pila de llamadas, están los manejadores de MMC24 y MMC25. Dichos handlers pertenecen a MMC_WRITE_BLOCK y MMC_WRITE_MULTIPLE_BLOCK. Si vemos este trozo de DUMP: Código:
0005C7DE R4, R0 0005C7E0 R0, SP, #0x1D8+1d4 Así que un pequeño Q&A: ¿Se degrada la eMMC por tener el bug? Después de lo visto, me atrevo a afirmar que NO. Una eMMC con el BUG no tiene motivos para estar más degradada que otra. ¿Podemos encontrar algún patrón que describa el problema? Diría que SI (aunque no puedo confirmarlo). El patrón será teléfonos que contienen muchos datos en su memoria, y que son reescritos habitualmente. Es decir, tienes la memoria casi llena, y cambias los datos de ella de vez en cuando. Por ejemplo, la tienes a tope de música y cambias canciones por otras nuevas porque no te entran. También entraría en este patrón la gente que no tiene la memoria muy llena, pero si la cambia a menudo. (Instala muchas roms, copia muchas cosas a la memoria interna desde el PC...) Esto ocurre cuando el wear leveling llega al final de la eMMC, en ciertas ocasiones y tras un numero de ciclos de escrituras, se salta el final de la tarjeta, y bueno, los que lo halláis estudiado, ya sabéis que un bit que no exista en la memoria supone escribir en una parte que no quieres. ¿Debería no fallar con el parche de Samsung? Si, debería no fallar, sin embargo el parche contiene una singularidad. Si ocurriera el bug durante el funcionamiento del dispositivo (recordemos que qué el bug ocurra desde el punto de la probabilidad es improbable) el kernel entraría en un loop infinito bloqueando el teléfono. Esto es una medida de prevención (a mi parecer). Asi que recuerda, si se te ha quedado el teléfono bloqueado durante el arranque con alguna versión parcheada, y no sabes por qué, quizás sea porque se acaba de producir el bug y el kérnel ha impedido que destroce el teléfono. La probabilidad de que esto ocurra es tan baja que porbablemente tu bloqueo sea motivo de otra cosa. Si esto ocurriera, tras in reinicio volvería a funcionar. De hecho, en estadísitca de andar por casa, esto ocurriría en 1 de cada 20 millones de encendidos, acercándose la probabilidad a 1/128 cada vez que se copian datos a la eMMC en todos los bloques tras unas 10000 lecturas de cada uno de ellos. La probabilidad de que ocurriese en uno de cada 128 reinicios (la más desfavorable) sería tras escribir 156 Teras de información en el chip. Si copiarais en la memoria 10GB al día (cosa que nadie hace) el teléfono quedaría inútil en 43 años con el BUG. Esto indicaría que la memoria moriría antes por uso que el teléfono por el bug con el fix apilcado. No toméis al pie de la letra esta estadística, por favor. ¿Qué modelos fallan? Curiosamente, según nos indica el kernel, no fallan todos los modelos de VTU00M 0xf1, si no sólo los que tienen el firmware fecha 13/04/2012. Los de otras fechas (si existiesen) no fallarían. Última edición por Adelaiglesia Día 23/01/13 a las 05:29:19 Razón: Corrijo URLS que estan mal puestas && aclaro cosa que tras releer no quedaba clara |
| Los siguientes 203 usuarios han agradecido a Adelaiglesia su comentario: | ||
|
|
|
#2
|
|
Excelente post, clarifica muchas cosas!!!! y pese a que es técnico no es difícil de entender....muy bien explicado..saludos desde chile.
|
|
#3
|
|
los de otras fechas si existiesen? existen y bastantes el mio es un VTU00M 0xf1 y es de noviembre el chip, y el movil de diciembre, quiere decir que no tengo peligro?
|
|
#4
|
|
Supuestamente (y estoy convencido de ello) no, pero no te lo puedo asegurar porque mi certeza depende del fix que ha realizado Samsung. Yo diría que NO.
|
|
#5
|
|
y como supiste que es de noviembre?? lo pregunto porque se ha dicho reiteradamente que la fecha que aparece al ejecutar el programa EMMC CHECK no es la que corresponde a la fecha de firmware de dicho chip, por lo tanto aunque te aparezca noviembre (como mi caso también) también podrías estar afectado.
|
|
#6
|
|
|
Cita:
|
| Gracias de parte de: | ||
|
#7
|
|
aa pues si, me basaba en eso, entonces ni idea, bueno, estoy parcheado ya con la 4.1.2
|
|
#8
|
||||
|
||||
|
¿Entonces a partir de ahora todas la rom que salgan tienen que llevar el parche?
|
| Gracias de parte de: | ||
|
#9
|
|
Muy buen post, si señor...
Aclarado y más tranquilo aún, por si no lo estaba...
|
|
#10
|
||||
|
||||
|
Muy buen post,me quito el sombrero si señor. Yo soy uno de los que tiene el VTU00M 0xf1 y estaba preocupado por el desgaste que pudiera haber sufrido en estos meses, pero la verdad, ojalá tengas razón y no exista tal desgaste.
|
| Gracias de parte de: | ||
|
#11
|
||||
|
||||
|
Me ha gustado mucho la explicación, muy entendible.
Una duda, si el eMMC Check no da la fecha del firmware, como se puede obtener? |
|
#12
|
||||
|
||||
|
Muchas gracias, es un trabajo extraordinario y muy útil.
|
|
#13
|
|
Uau! Alucinante.... llevaba dias buscando un Post asi me has acalarado muchas cosas. Gracias!
|
|
#14
|
|
Preguntilla tonta. Aunque yo se programar, reconozco que se me queda grande el problema. ¿Es muy complicado hacer un pequeño programilla que chequee la fecha del chip?
Creo que hay gran parte del código del parche que se puede reutilizar... el problema es disponer del entorno de desarrollo adecuado. |
|
#15
|
||||
|
||||
|
Re: S3 Muerte Súbita: ¿Por qué? [Técnico]
Te hubiera entendido más si hubieras escrito en Chino :confused::confused::confused:pero te pongo el gracias, por el curro que te has pegado!! Saludos
|
|
#16
|
||||
|
||||
|
Gracias por la descripción del problema. Muy clara a la vez que rigurosa
. Otras explicaciones que hay por ahí sobre las repetidas lecturas en el chip me sonaban tan extrañas que me hacian dudar de que el bug hubiese sido cazado. Ahora estoy más tranquilo.
|
|
#17
|
||||
|
||||
|
Gracias por el curro y compartirlo.
|
|
#18
|
|
Gracias tío, muy buena explicación +10
|
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
| Herramientas | |
|
|
Hora actual: 20:40:30 (GMT +1)
HTCMania: líderes desde el 2007



. Otras explicaciones que hay por ahí sobre las repetidas lecturas en el chip me sonaban tan extrañas que me hacian dudar de que el bug hubiese sido cazado. Ahora estoy más tranquilo.



