Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
All por el ao 2007, un da me dije como puedo hacer para que mi auto tenga un mejor rendimiento sin
tener que pagar costosas modificaciones.
Comenc a investigar el funcionamiento del a ECU del auto para ver cuan difcil era modificar su
contenido a fin de obtener una mejora.
Como primer paso, tengo que agradecer a mi Viejo, el cual me prest una ECU de GM de un Corsa
Classic modelo 2004 (CSUN BN S/N: 09355859N).
Una vez con la Ecu sobre el escritorio, not que era muy simple desarmar la carcasa, sacando dos
tornillos laterales (prximamente fotos).
Bien en ese momento me encontr con un simptico bloque de plstico celeste, el cual contendra la
memoria de la ecu ( el KI de la cuestin).
Esta Ecu en particular aloja a la memoria dentro de un zcalo permitiendo sacarla facilmente.
Luego con mayor investigacin pude ver que otras Ecus de Corsa como FDST, FAFW y CDUA, tambin
traan dicho zcalo.
Bsicamente todas estas ecus son idnticas a nivel Hardware. Todas poseen un
Microprocesador MC68HC11E1, de Motorola, el cual accede al SOFTWARE almacenado en la memoria
alojada dentro del zcalo, lo cual me lleva a que eso es motivo suficiente para terminar la intruduccin.
El Famoso Chip
Tras acceder al zcalo que contiene el chip de memoria, podemos ver que esta compuesto por dos
plsticos uno celeste y uno marrn, con cuidado podemos separarlos y finalmente acceder al chip de
memoria.
Inicialmente me encontr con un chip de 28 patas (14 * 2) el cual yo ya tenia una idea de que poda
ser.
Al mirar el cdigo inscripto, pude ver que no era un cdigo comercial, buscando en Internet pude
encontrar mas especificaciones sobre el cdigo del chip.
Resumiendo: el chip de la CSUN BN era una memoria EEPROM 27c256.
Ms adelante pude ver que otras ecus como la FDST, en lugar de tener una EEPROM 27c256 tenan
una EPROM OTP 27c512. (del doble de capacidad que la anterior y del tipo OTP One Time Program).
El Archivo BIN
El binario que se nos genera tras la lectura de la memoria no es mas ni menos que el Software de la
ecu.
Cmo es esto?
Como dijimos antes el Microprocesador principal de la ecu es un Motorola de la familia 68HC11, estos
procesadores no poseen dentro de ellos lugar para almacenar Software, por lo que requieren una
memoria (Nuestro Chip) externa la cual contiene el Soft que es lo que va a definir el comportamiento del
procesador indicando que y cuando tiene que hacer las cosas que deba.
Generalmente, lo que que se modifican son los parmetros ubicados en las tablas conocidos como
mapas, de esta manera la ecu va a generar otra salida a la misma informacin, permitindonos inyectar
mas nafta o modificar el avance o el limitador de rpm, o el ralenti.
Cambio y as nomas?
No. Muchas memorias de Ecus, traen un sistema de Comprobacin de Integridad, en este caso la del
Corsa es muy simple.
Esto quiere decir que si uno cambia un valor en la memoria y no modifica adecuadamente el parmetro
de integridad, la ecu NO ARRANCA.
Conclusin
Bueno teniendo ms una idea del panorama que nos encontramos, les dejo un archivo BINARIO el cual
contiene el soft de la ecu CSUN BN original.
Si pueden conseguir algn programa como el nombrado arriba, Winhex, o similar van a poder ver los
valores hexadecimales.
En proximas entradas veremos donde estan los mapas principales, como modificarlos, y como recalcular
el parmetro de integridad para poder empezar a hacer nuestro primer chip.
De 256 o de 512
Porqu algunas Ecus tienen 27c256 y otra 27c512?
Es simple, por costo y disponibilidad.
una memoria 512 es el doble de una 256, si descargamos de internet las hojas de datos
correspondientes a cada una de estas dos memorias vamos a ver que ambas son compatibles pin a pin,
salvo 1 o 2 pines.
En castellano please?
Una memoria de 512 es compatible con una de 256 dentro de la ecu del corsa debido a que la misma
fue diseada para ello.
Lo que hay que tener en cuenta es que, la memoria de 512 contiene en su interior dos de 256. pues
hay que asegurarnos que el soft este en el lugar que corresponda.
Si leemos una 512 original de GM, vamos a ver que los primeros 256 se encuentran en FF (vacos) y los
segundos 256 poseen el soft.
Ac viene lo trabajoso.
Lo ideal es siempre trabajar con binarios completos (256). para lo cual si ponemos una memoria de 256
lo grabamos directo a la memoria, y si colocamos una memoria de 512 duplicamos el archivo y de esta
manera queda el soft en los dos bancos de la 512.
Y no puedo hacer que el chip de 512 con algo cambie de banco y asi la ecu tenga otros
mapas?
Si seores. e aqui, el famoso chip doble mapa.
Lo que define que bloque de 256 dentro de la 512 se utiliza es una simple patita que se pone a masa o a
positivo ( en la ecu del corsa esta siempre a positivo, por eso agarra siempre el banco superior).
En la imagen (a modo ilustrativo) se puede ver que la pata 1 de la memoria 256 (izquierda) fue
transladada a la pata 22 en la memoria de 512 (derecha), dejando la pata 1 como A15 que es una pata
de adrress que me permite elegir entre un banco u otro perfectamente definido por la mitad superior y
la mitad inferior.
Esta pata la n 1 en la plaqueta de la ecu del Corsa se encuentra siempre con voltaje, para que funcione
la memoria de 256, al colocar una 512, la pata queda tirada a + lo que hace que agarre el segundo
banco de 256.
Osea que si le pongo un boton que lo tire a masa, agarra el otro mapa?
waaaaaaaiiiit... freno de mano. Aca en este punto estamos metiendo mano a una pata, la velocidad
con la que el microprocesador lee el chip es altsima con lo que si nosotros generamos un cambio de
estado en esa pata tiene que ser mas rpido y no tener rebote.
para esto se creo, el famoso zcalo doble mapa.
El zocalo doble mapa es el mismo que el zcalo encriptador?
Si. El zcalo doble mapa utiliza un IC llamado GAL.
Esta Gal segn como este programada, nos permite hacer un fastswitch entre bancos asi como tambin
proteger nuestro chip ante la lectura de algn chipero mal intencionado.
Es decir segun como este programada esa GAL, el zcalo actuara de una u otra forma.
Qu es una GAL?
a buscar en Internet... pero bsicamente es un sistema de compuertas programable que permite re
rutear online que pata va a donde.
Y se puede leer un chip protegido?
Que pregunta. Todo se puede depende de cuanto este dispuesto uno a ensaarse en conseguirlo.
Para que me sirve un doble mapa?
Bueno, ejemplo si tengo GNC, o si quiero NOS o bien podra hacer un mapa vaci y otro con soft, y que
cuando se active la alarma cambie de mapa dejando al auto completamente inmvil.
Si se puede todo.
Y... no hay memorias de 1024, para que yo pueda poner 4 mapas?
Por supuesto, hay de 1024, de 2048 y de 4096, pero son poco comunes.
esto permitira poner 4,8,16 mapas distintos, pero que sentido tendra?
y bueno, algunos dirn en uno el standar en otro para gnc en otro para NOS y en otro vaco para que se
bloquee, yo dira que larguen los frmacos.
Sale muy cara una memoria de estas?
Aprox 15/20 pesos.
Entonces porque sale tan caro chipear el auto?
No tiene que ver con la habilidad que tenga la persona en modificar un binario sino la habilidad que
tenga para con esos cambios generar que el motor tenga mejor perfomance ya sea para correr o como
para ahorro de combustible.
Cuando uno paga un chip en un taller esta pagando garanta (se supone) . Algunos Talleres hasta
banquean el auto.
Si llevo a reparar mi PC a una casa de Computacin y luego se rompe, safo porque estaba en garanta,
ahora si la PC la arreglo yo, y se me rompe... a llorar con Moria.
Lo mismo con el Auto. Y Ac vuelvo a aclarar que el lector escompletamente responsable de uso
de la informacin en este sitio contenida.
Interpretando - El CheckSum
Qu es el Check Sum?
El check sum es el cdigo de comprobacin que como vimos anteriormente la ecu del corsa utiliza para
verificar la integridadde la memoria antes de comenzar a ejecutar el software.
segn wikipedia:
"Una suma de verificacin o checksum es una forma de control de redundancia, una medida muy simple para proteger la
integridad de datos, verificando que no hayan sido corruptos. Es empleado para comunicaciones (internet, comunicacin de
dispositivos, etc.) tanto como para datos almacenados (archivos comprimidos, discos porttiles, etc.).
El proceso consiste en sumar cada uno de los componentes bsicos de un sistema (generalmente cada byte) y almacenar el valor
del resultado. Posteriormente se realiza el mismo procedimiento y se compara el resultado con el valor almacenado. Si ambas
sumas concuerdan se asume que los datos probablemente no han sido corrompidos."
Basados en que estamos tarbajando con un archivo de 32kb, esto quiere decir 32768 bytes o valores o
nmeros.
Generalmente para la identificacion de un valor dentro de una lista de valores se utiliza un ndice, este
ndice se inicializa en "0" (cero), es decir si me refiero al valor ubicado en la posicin "0" me estoy
refiriendo al primer valor.
Como el ndice mnimo es "0" el mximo ser "32767"
De esta manera estamos en condiciones de ver como GM utiliza el ChkSum y donde lo almacena.
El checksum se calcula sumando los valores iniciando en la posicin 8 y terminando en la posicin
32767.
El valor obtenido se compara con el valor almacenado de 16bits en la posicin 6 y 7.
En la imagen se puede ver, la seccin azul es la que se usa para realizar la suma de valores, ntese que
los valores intermedios no se pusieron a fines didcticos pero la suma va desde la posicin 8 a la 32767.
En color amarillo se aprecia el valor tal cual nos tiene que dar.
Es importante aclarar que estos valores estn representados en Base Hexadecimal es indispensable que
el lector conozca y maneje dicho sistema con facilidad.
En color rojo, se puede apreciar la interpretacin ASCII de cada valor Hexadecimal y en este caso nos
muestra el tipo y el numero de serie del binario, el cual debe y corresponde con la etiqueta de la ECU.
Bien, ya sabemos donde est y cmo se calcula el checksum, estamos en condiciones de proseguir con
la hubicacion de los mapas.
hice una herramienta simple para que puedan verificar rapidamente el cheksum de un archivo de 32kb
correspondiente a un binario, como el CSUN original que adjunt con anterioridad.
Interpretando - El Checksum 2
Para complementar la entrada anterior voy a explicar a modo de ejemplo, como calcular el checksum
con un programa comercial: WINHEX, el cual puede ser descargado en versio DEMO.
Lo primero que debemos hacer es ejecutar el programa y abrir nuestro .BIN en este caso el CSUN.
Luego como hemos dicho anteriormente el checksum se calculaba entre las posiciones de memoria 8 a la
32767 o hablando en hexa de 8 a 7FFF.
Cmo calculo el checksum?
Lo que vamos a hacer es "pintar" o "seleccionar" desde la 8 hata la 7FFFcon el programa, pero antes de
hacerlo con el mouse, podemos recurrir a una herramienta de seleccion de bloque, en el men "Edicion".
Men Edicin -> Definir Bloque
Y... ahora?
ahora, recurrimos a otra herramienta del WINHEX, que automticamente nos calculara las suma total del
bloque, y nos dar el resultado.
Para eso nos dirigimos al men: Herramientas -> Calcular Hash
Como resultado el Programa calcula y veremos efectivamente que el valor obtenido es idntico al
ubicado en la posicin 6 y 7.
Resultado Final
Qu vamos a modificar?
Bien, lo que hemos aprendido.
La idea es modificar el corte de rpm elevndolo a 6800 rpms, y lo mas importante recalcular y
reparar el cheksum para que nuestra ecu siga funcionando.
Por donde arrancamos?
Por calcular el valor de las rpms.
Habamos dicho que:
Corte1 = 3.932.490 / (valor en direccion 87D en decimal)
y
Corte1 = 3.932.490 / (valor en direccion 87F en decimal)
vamos a dejar los dos cortes a 6800 rpms, para ello necesitamos saber que valor vamos a poner en el
divisor.
Despejamos
(valor en direccion 87D en decimal) = 3.932.490 / Corte1
y
(valor en direccion 87F en decimal) = 3.932.490 / Corte2
entonces
(valor en direccion 87D en decimal) = 3.932.490 / 6800
y
(valor en direccion 87F en decimal) = 3.932.490 / 6800
siguiendo
= 578
y
= 578
Estos son los valores que tengo que poner en la memoria?
NO. Recordamos que la memoria se encontraba en modo Hexadecimal, por lo que deberemos pasar el
numero 578 Decimal a Hexadecimal, lo que nos dar 02 42.
Ya se lo que tengo que poner Cmo lo hago?
Fcil, edito el archivo ubicndome en la posicin 87D y remplazo los valores con los nuevos.
Listo?
NO.
Falta recalcular y corregir el CheckSum.
Y como lo hago?
Leer bien entradas anteriores
Si pudimos hacer el calculo del nuevo valor de checksum obtendremos como nuevo:
3B F7
Y ahora?
Ahora vamos a la posicin 6, y cambiamos el valor que tenamos por e nuevo valor.
Listo?
Sip, solo falta guardar el binario con otro nombre para no perder el original, y ya tenemos el primer
binario modificado de nuestra ECU.
Qu falta?
No estara mal volver a verificar las cuentas y el cheksum, para estar seguros.
Grabar el nuevo Bin en una nueva memoria EPROM.
Nota: recordar que nuestro binario es para EPROM de 256, en caso de quererlo para EPROM de 512
deberemos duplicar el archivo.
Si todo sali bien, y verificamos los valores y las modifiaciones y de no tocar ningn otro lado,
estaramos en condiciones de probar el chip nuevo con el corte corrido.
Dejo a modo de ejemplo como deberia quedarles el binario tras las modificaciones.
Este programa nos permite comparar dos binarios, sincronizarlos alscroll-ear de manera de ver que
zonas fueron modificadas en uno comparado con otro.
A simple vista al principio de ambas memorias notamos que son muy similares.
Como era de suponerse, el checksum es diferente, el modelo tambin, pero despus parece ser toda
igual.
Pero al seguir bajando nos encontramos con que hay muchas mas diferencias.
A que se deben?
Y algo tenan que cambiar en el firmware desde el 2003 al 2007.
Y los mapas?
Bien resulta que justo los mapas son idnticos en ambas memorias TODOS los mapas, es como que
Y cmo lo modifico?
Edito cada valor que desee dentro de la tabla, guardo el nuevo bin, sin antes olvidarme de reparar el
checksum.
* Corte Rpm 2
* Mapa de Inyeccin a mariposa abierta
Ahora ya tienen todo para arrancar a ver las cosas de mejor forma.
Y como se usa el programa?
No voy a dar una clase de Tuner Pro, pero primero hay que ejecutar el programa, abrir el archivo de
definiciones y luego el archivo Binario de la Ecu.
Ahora podremos modificar ms facilmente, pero siempre antes de grabar una memoria verifiquen todo 2
veces si es necesario. Sobre todo el chksum.
Y que garanta hay de que el archivo de definiciones est bien echo?
Ninguna. Tiene reflejado el contenido de este artculo. El archivo de definiciones se puede
editar/modificar a placer del usuario y de misma forma el que lo baje podr y deber revisar que
coincidan con los datos en el foro.
Yo lo he usado sin inconvenientes pero no me responsabilizo por el mal uso del mismo.
A este punto, cada uno podra sin querer poner el corte a 123 rpms, lo cual realmente no tengo idea que
puede ocasionar, asi que es necesario que se revise todo antes de grabar.
Las memorias 27c256 y 27c512, son memorias que en nuestro caso se encuentran en formato DIP-28.
Las OTP como dijimos anteriormente una vez que se graban luego no se pueden reutilizar.
Las EEPROM si podemos reutilizarlas, pero necesitamos de un "borrador" que posee una luz especial el
cual suele ser caro.
Si. obvio.
Si la idea que tenemos es probar varias modificaciones, lo que podemos usar que esta a nuestro alcance
son memorias FLASH.
Las memorias Flash nos permiten borrar modificar y hacer cuanta cosa queramos.
Lamentablmente es difcil encontrar memorias FLASH de la capacidad que usa el corsa. (tan chicas) pero
a no desesperar.
Por suerte la compatibilidad llega a tal punto que haremos un zcalo el cual la transformara de tal
manera que la ECU la tomar como si fuese una EEPROM.
NOTA IMPORTANTE: para grabar esta memoria vamos a usar archivos de 128kb. con lo que si
estbamos trabajando como yo recomend con archivos de 32kb, as como para las 27c512
haba que duplicarlos en este caso tendremos que cuadriplicarlos.
Voy a proseguir entonces a armar el zcalo , iniciando por el zcalo para la EEPROM 27C256 o 27C512.
Materiales:
* Plaqueta perforada genrica. * Zcalo DIP28 (14x2) o DIP32 (16x2)
* 2 tiras de pines hembras de 14 pines. (conector SIL14, o peine hembra)
* Estao
* Soldador
Paso 1
Colocamos el zcalo
acondicionado procurando insertar las patas como lo indica la imagen. Presionamos bien para que no se
mueva y verificamos que todas las patas estn en su correcta posicin y alineadas con la tira de pines.
Paso 6
Paso Final
En la imagen se puede ver que ste zcalo llega hasta el borde de la plaqueta que antes nos sobraba.
Paso 6 ( AT29C010A )
Es necesario eliminar algunos pines de la AT29C010A (el 1 y el 30 ver hoja de datos - datashet).
Luego se sueldan cada pata con cada pin tal como el zcalo anterior.
Al terminar de soldar los 32 pines, necesitamos hacer un ultimo ajuste para que la FLASH funcione
correctamente.
Paso Final ( AT29C010A )