Sobre el checksum
Dandole vueltas al checksum se me ocurre una idea. Supongamos que esto funciona asi: el firmware (el boot) al iniciarse ejecuta una rutina de calculo de checksum entre las direcciones inicio_a_final escritas en la eeprom y el resultado lo compara con el escrito en la eeprom, si no coincide muestra en el display un error y el deco se detiene.
¿Y si ponemos en la eeprom una condicion que se cumpla siempre sea cual sea el firmware contenido en la flash sobre el que se debe calcular?. Si esto funciona podriamos reflashear otros firmwares sin tener que volver a modificar la eeprom por este motivo.
La primera condicion que se me ocurre (hay otras) es poner el inicio como siempre a FF800000, y el final tambien al mismo FF800000 con un checksum 00000000,
tomando como ejemplo el hex para el 4410, seria modificar en la eeprom la linea de este modo
:101F200040365F31FF800000FF80000000000000AD
Esta solucion plantea algunas dudas, puede que la suposicion no sea acertada o que el programador haya incluido alguna comprobacion mas, por ejemplo un numero minimo de bytes sobre los que calcular o un valor de checksum no valido por imposible, y que el engaño no funcione.
Y tambien si esto nos resulta interesante porque si anulamos esta comprobacion de validez mediante el checksum, tambien nos quedamos sin una rutina de chequeo ante la corrupcion interna del firmware.
Un saludo.
|