Banner publicitario de PCBWay

Problemas con TV TD Systems

No, es que para entender bien todo el proceso necesitas leer los temas que tratan sobre esto.
Básicamente se trata de lo siguiente...
Cuando el bootloader se encuentra funcionando, es posible realizar varias cosas.
Si cuentas con un respaldo/volcado que funciona, puedes borrar toda la memoria e-MMC por comando.
Obviamente esto borrará el bootloader, pero como se encuentra cargado en RAM, seguirá operando, por eso es muy importante que durante el proceso de restauración, el TV no se desconecte de la red eléctrica, porque obviamente se eliminará de la RAM.
Después de que la e_MMC ha sido borrada, se procede a grabar el volcado, también por comando.
El volcado contiene el bootloader y volverá a grabarse en la e-MMC, incluyendo todas las particiones.
Cuando termine el proceso de grabado a la e-MMC, ya se podrá desconectar el TV.

En el enlace que coloqué se realiza el mismo procedimiento, pero cargando el bootloader para posteriormente instalar el firmware.
Pero se requiere tener el bootloader adecuado, ya que no se debe grabar cualquiera, y el bootloader se puede extraer del firmware.
Así la vida es mas facil, mil gracias. Te garantizo que he leído mucho del hilo de TVDT, pero se tocan tantos puntos que al final me pierdo y no se cual me vale.

Pero la duda me surje con lo siguiente, he leído varias veces (y creo recordar que tu me lo dijiste) que una emmc nueva necesita un volcado de una imagen de un sistema funcional. ¿Por qué? ¿No es suficiente con grabar el bootloader y luego instalar por usb el archivo oficial? ¿Se supone que el archivo oficial crea todas las particiones y todo el sistema no? Esto me tiene muy confundido.

De nuevo gracias :)
 
1751309607206.png


Bueno hay 3 cosas
1 - La parte del boot , todo lo que va alli se puede sacar del update, esta el codigo de las consolas "realtek" y "vmlinux" , certificados los parametros de configuracion del pcb, el MBR , el GPT header etc.
2 - El factory, factory_ro, estan la MAC y datos de tu placa
3 - El sistema , todo eso se recupera haciendo un update por usb.

Entonces si se tiene un dump que esten bien la parte 1 y 2 , y nos da errores en la 3 , se puede hacer el "erase trim" y recuperar la 3 haciendo un update por usb.

Si la memoria es nueva es mejor partir de un bin funcional , si quisieras conservar tu MAC y dotas del factory , despues se podria sobreescribir si pudiste hacer un dump de tu memoria.


Tambien se puede extraer del update los ficheros para montar el boot , pero mas lio.
 
Ver el archivo adjunto 329985


Bueno hay 3 cosas
1 - La parte del boot , todo lo que va alli se puede sacar del update, esta el codigo de las consolas "realtek" y "vmlinux" , certificados los parametros de configuracion del pcb, el MBR , el GPT header etc.
2 - El factory, factory_ro, estan la MAC y datos de tu placa
3 - El sistema , todo eso se recupera haciendo un update por usb.

Entonces si se tiene un dump que esten bien la parte 1 y 2 , y nos da errores en la 3 , se puede hacer el "erase trim" y recuperar la 3 haciendo un update por usb.

Si la memoria es nueva es mejor partir de un bin funcional , si quisieras conservar tu MAC y dotas del factory , despues se podria sobreescribir si pudiste hacer un dump de tu memoria.


Tambien se puede extraer del update los ficheros para montar el boot , pero mas lio.
Entiendo que el comando mmc erase trim 0x01E000 0xE71FDF empieza a borrar justo en "reserved", dejando "secure store" tambien sin borrar, ¿lo pruebo directamente asi, o con mmc erase trim 0x018000 0xE71FDF para borrar tambien "secure store"?

Aun tengo la memoria que esta corrupta, aunque viene de camino una nueva por si hiciera falta, aprender a grabar el bin en la eMMC va a ser otra guerra ;). Pero me lo paso bien y algo aprenderé o eso espero.

Cuando hablas del dump, hablas de un volcado de la memoria obviamente, pero cuando hablas de update por usb, ¿te refieres a update con el software original, el .img?

Muchas gracias!!
 
Pero la duda me surge con lo siguiente, he leído varias veces (y creo recordar que tú me lo dijiste) que una eMMC nueva necesita un volcado de una imagen de un sistema funcional. ¿Por qué?
Porque obviamente al estar nueva no tiene nada y hay que grabarle el contenido extraído de otra e-MMC.
¿No es suficiente con grabar el bootloader y luego instalar por USB el archivo oficial?
¿Se supone que el archivo oficial crea todas las particiones y todo el sistema, no? Esto me tiene muy confundido.
Es que la restauración se puede realizar de las dos formas.
Suponiendo que el sistema operativo esté corrupto pero el bootloader está en buen estado, que es cuando existe comunicación serial o cuando solo se carga hasta el logo.
1.- Borras la e-MMC y grabas el volcado porque el bootloader está bien.
2.- Tienes el firmware y únicamente lo reinstalas por memoria USB porque el bootloader puede realizar la instalación.
3.- Si la e-MMC está dañada necesitas reemplazarla, puedes grabar solo el bootloader con RTICE y después el firmware.
El problema es que aún no hay disponible un RTICE para RTD2842/2850/51, en este caso se debe grabar la e-MMC con un volcado funcional.
Esto no se puede hacer por comandos porque no hay bootloader en la e-MMC.
RTICE sí puede tener comunicación con el SoC y grabar el bootloader porque este sirve de intermediario con la e-MMC y la comunicación no es RS-232, sino I2C utilizando el bus para DDC que comparte las líneas con las del UART.
 
Si el primer comando esta ok, el problema esta mucho mas arriba, pero ya que estamos borramos desde ahi.
El usb update es el fichero .img si
No me lo creo... que crack! ha encendido! en modo tienda, dice que pulse 2 veces ok para salir, pero no encuentro el mando, mañana lo busco que es tarde. Mañana seguiré con ello, pero no me quedo sin contestar y darte las gracias.

Menciono el proceso por si a alguien le sirve en el futuro:

Antes de nada desde el modo Linux he hecho una copia de los primeros 48MB de mmcblk0 por si acaso con el típico comando dd de linux (si te digo la verdad, no se si sirve para algo, pero creo que son justo los bytes de la parte importante que me has mostrado con el layout si no me equivoco).

Después he borrado tal y como me has dicho con "mmc erase trim 0x01E000 0xE71FDF", he renombrado el install_2851.img a install.img, lo pongo en la placa por usb, desde TVDT doy a Update firmware por USB, y a esperar. Si es cierto que ha tenido un rato que parecia que entraba en un bucle raro, justamente aquí (¿quizá porque la tele estaba "apagada" y no habia imagen? O puede que no tenga nada que ver):

D:Install UI GDM[ 121.884200] 00:02:01.882 (2)-0356 GDMA_ReceivePicture, wrong width size, src=1920, dst=0
A_Display GDMA FD = 7, Addr = 38000000
sub thread ... , got msg = Install system
baker ==== [1920*1080],facw=0.375000, fach=0.533333
D:Install UI GDM[ 122.980286] 00:02:02.978 (2)-0356 GDMA_ReceivePicture, wrong width size, src=1920, dst=0
A_Display GDMA FD = 7, Addr = 38800000
sub thread ... , got msg = Install system
baker ==== [1920*1080],facw=0.375000, fach=0.533333
D:Install UI GDM[ 124.076204] 00:02:04.074 (2)-0356 GDMA_ReceivePicture, wrong width size, src=1920, dst=0
A_Display GDMA FD = 7, Addr = 38000000
sub thread ... , got msg = Install system
baker ==== [1920*1080],facw=0.375000, fach=0.533333
D:Install UI GDM[ 125.172101] 00:02:05.170 (2)-0356 GDMA_ReceivePicture, wrong width size, src=1920, dst=0
A_Display GDMA FD = 7, Addr = 38800000
sub thread ... , got msg = Install system
baker ==== [1920*1080],facw=0.375000, fach=0.533333


Pero después de un ratito ha continuado y ha terminado.

El layout tras el borrado ha quedado así:

Realtek> layout view

[Warning] Your platform un-upgrade install.img![layout view] +-----------------------------+ 0x00000001d2000000
| FREE SPACE (7569376KBytes) | +-----------------------------+ 0x0000000004008000
| fw table ( 32KBytes) | +-----------------------------+ 0x0000000004000000
| reserved ( 4096KBytes) | +-----------------------------+ 0x0000000003c00000
|secure store ( 12288KBytes) | +-----------------------------+ 0x0000000003000000
| factory ( 16384KBytes) | +-----------------------------+ 0x0000000002000000
| eeprom ( 4096KBytes) | +-----------------------------+ 0x0000000001c00000
| factory ro ( 4096KBytes) | +-----------------------------+ 0x0000000001800000
| bootcode ( 24576KBytes) | +-----------------------------+ 0x0000000000000000

Realtek>

Te lo muestro porque no comprendo muy bien por que no ha eliminado "reserved" y "fw table", si se supone que tenía que comenzar el borrado desde después de secure store (0x01E000, 122,880 sectores x 512bytes), ¿Está protegido por el sistema? Me genera curiosidad.

Dejo el log completo de la instalación por si quereis echarlo un vistazo.

¿Que magía hace el trim del comando mmc erase para que ahora sí haya funcionado?

Aun así, las tarjetas eMMC vienen de camino, porque imagino que si ya ha fallado no tardaré mucho en necesitar regrabar, eso si, trataré de hacer un volcado completo si funciona todo bien...

MIL GRACIAS, mañana cuando termine de probar todo me paso a comentar.



Porque obviamente al estar nueva no tiene nada y hay que grabarle el contenido extraído de otra e-MMC.
Pero entiendo que esto es parecido a los pcs. El bootloader es como la bios en un pc, teniendo esto ya tengo la opción de poder cargar un sistema operativo. Solo que en este caso está todo en la misma memoria, tanto bios como sistema operativo.

Es como si para instalar windows necesitara hacer un volcado de un disco que antes tuviera windows, o mas concretamente un volcado de la misma bios y el mismo sistema operativo. Y si no tuviera bios con grabar la bios es suficiente para poder cargar el sistema operativo, obviamente la bios que corresponde. De ahí el lío en mi cabeza imagino. Quizá este mezclando cosas o quizá este en lo cierto pero no me esté haciendo entender.

Es que la restauración se puede realizar de las dos formas.
Suponiendo que el sistema operativo esté corrupto pero el bootloader está en buen estado, que es cuando existe comunicación serial o cuando solo se carga hasta el logo.
1.- Borras la e-MMC y grabas el volcado porque el bootloader está bien.
2.- Tienes el firmware y únicamente lo reinstalas por memoria USB porque el bootloader puede realizar la instalación.
3.- Si la e-MMC está dañada necesitas reemplazarla, puedes grabar solo el bootloader con RTICE y después el firmware.
El problema es que aún no hay disponible un RTICE para RTD2842/2850/51, en este caso se debe grabar la e-MMC con un volcado funcional.
Esto no se puede hacer por comandos porque no hay bootloader en la e-MMC.
RTICE sí puede tener comunicación con el SoC y grabar el bootloader porque este sirve de intermediario con la e-MMC y la comunicación no es RS-232, sino I2C utilizando el bus para DDC que comparte las líneas con las del UART.
Vale, con esto me pierdo aún un poco, seguire leyendo para comprender todo bien, sobre todo porque RTICE aún no he pillado para que sirve concretamente (lo vi solo por encima ya que por ahora no lo necesitaba).

Para que me aclare, a ver si consigo que mi cabeza cuadrada lo entienda, la pregunta es:

Si yo con un programador grabo en la eMMC el bootloader, sueldo a la placa (o sueldo a placa y grabo mediante pinout, es lo mismo), debería ya tener opción de comunicar via UART, ¿no? Y por lo tanto podría cargar el firmware via usb. Si es que no, ¿por qué?

Gracias D@arkbytes, y de verdad no me tomes por pesado, es por aprendizaje ;)
 

Adjuntos

  • instalacion por usb tras borrado.log.txt
    807.4 KB · Visitas: 2
Última edición:
Si yo con un programador grabo en la eMMC el bootloader, sueldo a la placa (o sueldo a placa y grabo mediante pinout, es lo mismo), debería ya tener opción de comunicar via UART, ¿no? Y por lo tanto podría cargar el firmware via usb. Si es que no, ¿por qué?
En teoría así debería ser, pero hay que saber en qué posición debe grabarse.
Si el SoC busca el bootloader al inicio como se muestra en el layout, pues funcionaría.
Alguna vez quise hacer la prueba, pero se me olvida, y como estas pruebas llevan tiempo, lo he dejado pendiente.
 
En teoría así debería ser, pero hay que saber en qué posición debe grabarse.
Si el SoC busca el bootloader al inicio como se muestra en el layout, pues funcionaría.
Alguna vez quise hacer la prueba, pero se me olvida, y como estas pruebas llevan tiempo, lo he dejado pendiente.
Me estaba volviendo loco, no lo entendía. Pero parece que mi lógica no estaba tan equivocada. Eso si, ni se me habia pasado por la cabeza lo de la "posición".

Llevo 3 dias pensando para que hacer una copia de toda la imagen si con grabar unos pocos megas es mas que suficiente, pero tiene toda la lógica que si el bootloader puede estar en cualquier sitio el volcado usado sea completo... Aunque intuyo que lo normal sera que esté siempre al inicio ¿no?

He hecho un monton de copias de "trozos" con dd, tengo los 2 bootloader como me dijiste, tengo copiados 48 MB iniciales que he hecho hoy, 1GB, 7GB, que no se si vale para algo pero pensé... si tengo que regrabar la eMMC imagino que algo me servirá. Lo mismo estoy mezclando conceptos y no es eso lo que se graba con el programador, pero oye, poco a poco, bastante estoy aprendiendo ya con vosotros.

Si algun día haces la prueba y lo cuentas mencioname :)
 
Antes de nada desde el modo Linux he hecho una copia de los primeros 48MB de mmcblk0 por si acaso con el típico comando dd de linux (si te digo la verdad, no se si sirve para algo, pero creo que son justo los bytes de la parte importante que me has mostrado con el layout si no me equivoco).
Con eso suficiente , la parte del bootloader y por encima de los factory, Yo haria hasta aqui 0x0000000003c00000 con el secure store incluido, aunque nunca he visto datos en esa parte, quizas use el RPMB de la emmc que es mas seguro.

Después he borrado tal y como me has dicho con "mmc erase trim 0x01E000 0xE71FDF", he renombrado el install_2851.img a install.img, lo pongo en la placa por usb, desde TVDT doy a Update firmware por USB, y a esperar. Si es cierto que ha tenido un rato que parecia que entraba en un bucle raro, justamente aquí (¿quizá porque la tele estaba "apagada" y no habia imagen? O puede que no tenga nada que ver):
Es normal , parece como que prueba diferentes resoluciones para el panel o algo asi, lo hace siempre.
Te lo muestro porque no comprendo muy bien por que no ha eliminado "reserved" y "fw table", si se supone que tenía que comenzar el borrado desde después de secure store (0x01E000, 122,880 sectores x 512bytes), ¿Está protegido por el sistema? Me genera curiosidad.
Supongo que el bootloader ha detectado que no estaban y los a creado de nuevo, algo se vve en el log que has subido.
.
D/TC:0 tee_ta_register_ta_store:784 Registering TA store: 'REE' (priority 10)
D/TC:0 tee_ta_register_ta_store:784 Registering TA store: 'Secure Storage TA' (priority 9)

¿Que magía hace el trim del comando mmc erase para que ahora sí haya funcionado?
Seguramente buscando en inet "emmc trim" "erase trim" alguien lo explique mejor, dentro de la emmc hay una cpu y una nand, digamos que seria como un disco duro con su controladora. La nand esta dividida en sectores con datos y una zona para el ECC "correccion de errores, marcar el sector como malo etc. Las nands nuevas pueden tener sectores defectuosos o fastidiarse cuando se usa, la cpu mantiene se encarga de mantener una lista , comprobar los ECC etc. El trim lo que hace es marcar el sector como malo y añadilo a una lista para no usarlo. No me he preocupado mucho en estudiar exactamente que hacen.


La cpu tiene un codigo interno , seria un primer bootloader, ese bootloader seria el que usaria el RTICE para poder grabar una EMMC nueva por I2C o serie o usb si el boot interno lo permite. Ese boot interno comprueba si en la emmc esta el segundo boot y este esta bien firmado, si es asi lo cargara en ram y lo ejecutara, Seguramente use el "arm secure boot" , algo asi: ROM code estaria dentro de la cpu y lo demas ya en la emmc.

1751351858224.png

Puedes ver el contenido en los factory desde el comando "realtek >" con "factory" y "facro" te dara un help, usa el list o info.
 
Es normal , parece como que prueba diferentes resoluciones para el panel o algo asi, lo hace siempre.

Supongo que el bootloader ha detectado que no estaban y los a creado de nuevo, algo se vve en el log que has subido.
.
D/TC:0 tee_ta_register_ta_store:784 Registering TA store: 'REE' (priority 10)
D/TC:0 tee_ta_register_ta_store:784 Registering TA store: 'Secure Storage TA' (priority 9)


Seguramente buscando en inet "emmc trim" "erase trim" alguien lo explique mejor, dentro de la emmc hay una cpu y una nand, digamos que seria como un disco duro con su controladora. La nand esta dividida en sectores con datos y una zona para el ECC "correccion de errores, marcar el sector como malo etc. Las nands nuevas pueden tener sectores defectuosos o fastidiarse cuando se usa, la cpu mantiene se encarga de mantener una lista , comprobar los ECC etc. El trim lo que hace es marcar el sector como malo y añadilo a una lista para no usarlo. No me he preocupado mucho en estudiar exactamente que hacen.


La cpu tiene un codigo interno , seria un primer bootloader, ese bootloader seria el que usaria el RTICE para poder grabar una EMMC nueva por I2C o serie o usb si el boot interno lo permite. Ese boot interno comprueba si en la emmc esta el segundo boot y este esta bien firmado, si es asi lo cargara en ram y lo ejecutara, Seguramente use el "arm secure boot" , algo asi: ROM code estaria dentro de la cpu y lo demas ya en la emmc.

Ver el archivo adjunto 330008

Puedes ver el contenido en los factory desde el comando "realtek >" con "factory" y "facro" te dara un help, usa el list o info.
Bueno bueno bueno.... pues paso por aquí para decirte que efectivamente todo funciona.

Tele como nueva, te estoy muy muy muy agradecido, daba por hecho que tendría que regrabar y aunque no me asusta (no lo he hecho nunca y de hecho me gustaría aprender) era un muy mal momento por falta de tiempo.

He estado indagando sobre el trim, y al parecer es una forma de "liberar" bloques, pero no los borra como tal, luego al parecer el controlador hace un garbage collection y reasigna bloques defectuosos. Pero ojo, pq segun he leído puede que ni siquiera los bloques estuvieran defectuosos como tal sino que hubiera problemas en el sistema de ficheros y al liberarlos se reasignen como válidos y se sobreescriban de forma natural.

Me queda la duda de que habría pasado si hubiera hecho un mmc erase normal, sin el trim.

Pero la tele funciona que es lo que importa.

No me enrollo más, muchisimas gracias (y a todos los demás tambien por supuesto).
 
Última edición:
Atrás
Arriba