...De retour du taff...
Fiuuu...
Je vais me remettre à taffer sur le motro, mais c'est assez chaud.
En TRES gros:
Le but principal est de faire un ECU "stock" sachant "gérer" une grande plage d'utilisation moteur avec beaucoup de précision. Le MP3.1 stock gère 7000rpm et à une précision de 500tr à peut près... De plus, la MAP de charge partielle est limité à 12x12... Ce qui fait un peu faiblard...
...
A l'heure actuelle, il est très facile de modifié les valeurs max des MAPs... (12x12, 7000 RPM qui devient 12x12, 9000 RPM par ex)...
Le problème est que j'aimerais avoir des MAPs plus grosse (23x10 et 46x1 pour la pleine charge).
...
Pour mieux comprendre la difficulté, il faut comprendre la base de l'ECU:
L'EPROM du MOTRONIC contient le code exécutable par le CPU (MCU dans son cas type i80c51 avec un poil de RAM en interne... Donc SIEMENS 15c515 dans le cas du MP3.1)...
Ce code est en fait la ROM de boot du système (64Ko puisqu'un 8bit ne sait adresser que 64ko soit)...
La première chose intéressante est que l'EPROM fait 256kBits (27C256) soit 32ko... J'ai entendu parlé de ROM en interne sur certains MCU siemens (dans les quelques fragments d'info que l'on trouve sur la toile).
Donc premier grosse galère: Est ce que le MCU de l'ECU à une ROM programmé en interne par BOSCH??? (32ko/256kbits manquant)
...
Pour en avoir le coeur net, un petit service serait déjà de comparer 2 MP3.1 différents comme le 203 et 217 des 106 non cata et cata... Les ouvrir et comparer les REFs des MCUs (SIEMENS B57828 B0266077 9108)
... Logiquement, si un microcode usine existerait, les refs changerait (puisque les 2 ECUS ont des MAPs placées différement)...
Si le MCU du MOTRONIC n'a pas de ROM embarqué, premier bon point.
...
Toujours dans l'idée de gérer des MAPs plus "viriles", un autre problème se pose:
Les MAPs "sotck" sont intercallées au milieu du code exécutable par le MCU... Dans la mesure où l'on conçoit ces MAPs comme de la DATA, elles ont une taille fixe (entête + paliers + valeurs max + données). Les modifier en taille reviendrait à effacé le code exécutable qui les suivent (!!!), donc altérer le fonctionnement propre du programme et donc de l'auto.
...
Une de première solution qui me viend à l'esprit est d'effectuer, à l'adresse de la MAP stock, un saut vers une adresse dans la zone libre de l'EPROM (pour y poser une MAP bien plus grosse)... S'en suit de cette nouvelle MAP, un retour "Après" le saut pour continuer le programme.
En assembleur, ça donne un LCALL pour le "Long jump à la subroutine" et un RET pour le "Return". (codé 12 xx xx pour le LCALL avec xx xx pour la nouvelle adresse et codé 22 pour le RET)...
Ca semble se tenir, mais:
Le programme du MCU (...de l'EPROM) va chercher de la "DATA" à ces adresses "stock" et non du "CODE"... donc un ICALL (12 xx xx) avec le reste de la MAP effacé (le RET à la fin de la nouvelle MÄP en zone libre renvois le programme après l'appel ICALL
) ne serat pas "COMPRIS" par le programme car à cette endroit est sencé se trouver de la DATA et non du CODE
... Donc, retour en arrière pour l'instant!
...
Il me faut donc trouver où est le "DICTIONNAIRE" du programme qui contient toutes les adresses de DATA (MAPs)...
Grossièrement, ce dictionnaire n'a pas l'air d'exister vraiment...
En assembleur 8051, les adresses assimilé à de la DATA sont gérer de cette façon:
MOV DPTR, xxxx
MOV A, A+DPTR...
Où "xxxx" serait une adresse de DATA.
... Cool, on touche au but ...
Mais non
. Il semblerait que le peu d'appel en DATA ne corresponde pas aux adresses des MAPs stock ...
Donc pour l'instant je but ...
Dans l'attente de comprendre comme le 80c51 gère cette DATA et comment l'adresses-t-il
?????
...
Wait and see