Bonjour Invité,
Vous avez envie d'échanger connaissances de la mécanique auto avec une bande d'amis ?
Vous voila à la bonne adresse, ici, le maitre mot c'est partage !
Vous devrez vous inscrire avant de pouvoir poster : cliquez sur le lien d'enregistrement ci-dessus pour cela.
Pour commencer à lire les messages, sélectionnez le forum que vous voulez visiter depuis la liste ci-dessous.
Reverse engineering d'un clone de l'interface XS evolution pour reflash n° de série
Winbon45 dit :Moi je cherche coté diagbox "logiciel" comment fait-il pour flasher nos interfaces sans passer par interface checker !! De plus ou est rangé le firmware 4.3.0 dans ce logiciel!
Bonsoir Neoland!
Non c'est pas ce que je cherche mais merci quand même !
Ca je savais qu'il était la moi ce que je cherche c'est l'attribut et le fichier .dll qui l'execute au démarrage mais je crois avoir touvé ma piste !
Dis Winbond les dump tu les fais avec flashkit29 ? Il y a une option lecture et enregistrement du binaire lu ?
Sinon moi comme mon interface est HS en attendant que je la reflashe par le connecteur 12 pins (ça permettra de valider le fait que les interfaces sans ce connecteur peuvent quand même se reflasher d'ailleurs), je vais essayer de trouver le point d'entrée de l'application.
Car j'ai fouillé un peu dans les dossiers et j'ai trouvé les logs de mes flash d'hier :
D'abord le reflash en 4.2.2, qui a bien fonctionné :
Init_Com
_CreateRouter OK
_InitialiseCommBoard_Exp Report com = 3 - Report general = 0
Exit Init_Com
Exit Init_Module_COM
-----------------------------------------------------
GetVersionComposant_COM
_ExecuteCommand GetVersionComposant_COM Report com = 1 - Report general = 0
Firmware Version : APPLI_XS_Fuji_ P106138A V4.2.2 @ACTIA 09.04.09
Exit GetVersionComposant_COM
-----------------------------------------------------
GetReferenceBoard_COM
Card Reference 963830 B/
_BoardGetInfo Report com = 1 - Report general = 0
Exit GetReferenceBoard_COM
-----------------------------------------------------
TelechargeComposant_COM
Path Download : C:\APPLIC\LEXIA\MajAppCom\APPLI software\APPLI 4.2.2.com
Version à télécharger : APPLI_XS_Fuji_ P106138A V4.2.2 @ACTIA 09.04.09
Reset_Board
_ExecuteCommand Reset_Board Report com = 12 - Report general = 104
Exit Reset_Board
_ExecuteCommand TelechargeComposant_COM Report com = 3 - Report general = 0
Saut_Appli
_ExecuteCommand Saut_Appli Report com = 3 - Report general = 0
Exit Saut_Appli
Reset_Board
_ExecuteCommand Reset_Board Report com = 3 - Report general = 0
Exit Reset_Board
Exit TelechargeComposant_COM
--> On voit la commande de telechargement qui est lancée (_ExecuteCommand TelechargeComposant_COM), puis ensuite il y a une demande d’exécution de l'application (_ExecuteCommand Saut_Appli), puis un reset pour revenir au bootloader.
Donc après le téléchargement le programme de mise à jour demande à l'interface de lancer l'application, qui doit indiquer qu'elle démarre du coup le programme déduit que le téléchargement s'est bien déroulé et il affiche OK.
Au niveau du flash de mon firmware fake ça a donné ça :
Init_Com
_CreateRouter OK
_InitialiseCommBoard_Exp Report com = 3 - Report general = 0
Exit Init_Com
Exit Init_Module_COM
-----------------------------------------------------
GetVersionComposant_COM
_ExecuteCommand GetVersionComposant_COM Report com = 1 - Report general = 0
Firmware Version : APPLI_XS_Fuji_ P106138A V4.2.2 @ACTIA 09.04.09
Exit GetVersionComposant_COM
-----------------------------------------------------
GetReferenceBoard_COM
Card Reference 963830 B/
_BoardGetInfo Report com = 1 - Report general = 0
Exit GetReferenceBoard_COM
-----------------------------------------------------
TelechargeComposant_COM
Path Download : Z:\lexia_firmwares\fake_firmware.com
Version à télécharger : APPLI_FAKE_NLC P123456A V1.0.0 @TOTO 18.03.13
Reset_Board
_ExecuteCommand Reset_Board Report com = 12 - Report general = 104
Exit Reset_Board
_ExecuteCommand TelechargeComposant_COM Report com = 3 - Report general = 0
Saut_Appli
_ExecuteCommand Saut_Appli Report com = 30 - Report general = 104
Exit Saut_Appli
Exit TelechargeComposant_COM
--> Donc ça foire bien au niveau du lancement de l'application, le code d'erreur du report général est à 104 alors qu'il est à 0 sur le flash précédent.
Faut que je trouve le point d'entrée de l'application maintenant...
En attendant que tous le monde ce trouve une alternative moi je dit y a pas mieux que la version winbond du flashage , simple ( pas trop) et efficasse apres je pense que notre amis winbond45 va trouvé j'ai vue la qualité de son travail il ma renvoyé mon interface les soudure son nickel et aucun probleme de driver ou de connection merci l'amis .
Oui le flashage du MCU est une chose, après par contre le dessoudage/ressoudage de l'eeprom pour changer le n° de série en est une autre, c'est pas à la portée de tout le monde. C'est donc l'objectif de ce topic, changer le n° de série dans l'eeprom sans dessouder l'eeprom.
En fait il y a plusieurs solutions, dans l'ordre de difficulté de la plus chiante pour l'utilisateur à la plus simple :
1) Démonter l'interface, flasher dans le MCU par le connecteur 12 pins le firmware spécial que je vais écrire et qui va mettre à jour le n° de série de l'eeprom sans la dessouder. Puis reflasher un firmware officiel. Cette solution ne peut que marcher, c'est la plus simple en terme de développement et de temps à passer. Par contre, autant le démontage de 4 vis c'est facile, autant ce qui peut devenir plus compliqué pour les néophytes c'est de fabriquer et mettre au point l'interface de programmation, voire de souder le connecteur 12 pins qui est manquant sur certaines interface lexia (dont la mienne par exemple)
2) Ne pas démonter l'interface, flasher avec le soft PSAInterfaceChecker mon firmware spécial qui va mettre à jour le n° de série de l'eeprom sans la dessouder. Puis reflasher avec le soft PSAInterfaceChecker un firmware original. C'est sur cette solution que je travaille en ce moment car c'est vraiment ce qui simplifierait le plus la vie à tout le monde, même pas besoin de démonter l'interface lexia !! Cette solution est bien partie, on a vu qu'on peut flasher un firmware maison sans problème dans l'interface lexia. Me reste à trouver le point d'entrée de l'application, développer le firmware spécial, et être sûr qu'ensuite on puisse à nouveau flasher un firmware officiel par PSAInterfaceChecker.
3) Utiliser un soft PC (à développer) qui ouvre directement le port USB vers l'interface lexia et exploite le même jeu de commande que les soft PSA pour communiquer avec le bootloader de l'interface, et envoyer des commandes d'écritures vers l'eeprom. Car oui, en fait on peut faire ça ! Le bootloader gère des commandes de lecture/écriture de l'eeprom....
Mais là c'est un gros travail, je regarderai ça dans un second temps
moi j'ai remarquer qu'elle que chose sauf que s'était dans la version 6.1 de diagbox je n'avais pas besoin de changer le fiirmwar jusque qu'a la version 6.05
je sais pas si il y a qu'elle que chose a voir le firmwar changer après la version 6.05
Je ne sais pas j'ai pas encore diagbox d'installé j'ai pas pu faire d'essais.
Mais en tout cas, je pense avoir compris quelque chose, et qui explique pourquoi changer le n° de série dans l'eeprom ne suffit pas et qu'il faut aussi mettre à jour le MCU.
Ce qui m'a mis la puce à l'oreille, c'est le résultat du flash d'hier de mon firmware fake dans l'interface. Chez windbond ça a marché et sans aucun souci il peut reprendre la main pour reflasher un firmware officiel derrière, alors qu'il y avait bien mon firware fake dedans. Et chez moi, foirage total, mon interface est cuite, impossible de reprendre la main dessus.
La seule possibilité c'est que mon interface initialement en 4.2.2 n'avait pas le même bootloader que l'interface de winbond. Ton interface windbond tu l'as déjà flashé avec un dump complet d'interface originale en 4.3.0, donc avec un bootloader plus récent. Ca explique pas mal de chose :
- Que ton interface est capable de reprendre la main après le chargement d'un firmware fake
- Que les interfaces sont reconnues au niveau des périphériques USB de 2 façons différentes
- Qu'il faille absolument aussi flasher le MCU avec un dump complet de 4.3.0 en plus de changer le n° de série dans l'eeprom, car pour fonctionner avec le dernier diagbox il doit falloir absolument le bootloader récent qui fait reconnaitre l'interface en xs evolution au niveau des périphériques USB. Et pour mettre à jour le bootloader, pas le choix, il faut reflasher par le connecteur 12 pins.
Conclusion :
Vu qu'il faut de toute façon impérativement reflasher le MCU par le connecteur 12 pins afin de mettre à jour le bootloader, je peux me concentrer sur la solution 1 exposée ci-dessus, qui est la plus simple d'ailleurs donc c'est pas plus mal
Plus besoin de trouver le point d'entrée, je peux juste développer un firmware standard qui ne nécessite pas d'être appelé par le boot loader. Ce firmware met à jour le n° de série de l'eeprom et basta. Après reflash par le connecteur 12 pins d'un firmware 4.3.0 pour avoir le dernier bootloader et le dernier firmware et c'est bon.
Ca n'évite pas le démontage de l'interface, l'éventuelle soudure d'un connecteur 12 points, et la réalisation de l'interface de programmation, mais ça évite quand même le déssoudage/ressoudage de l'eeprom ainsi que l'achat ou la réalisation de l'interface de programmation de l'eeprom, c'est déjà pas mal !!
Après j'ai bien une autre idée mais on verra plus tard il me faut analyser plus en détail le hardware de l'interface. Car le MCU est capable de placer du code dans la ram externe et de l'executer.
Du coup il y aurait la possibilité de :
- flasher avec PSAInterfaceChecker un firmware spécial dans l'interface.
- Le boot loader lance ce firmware spécial (du coup toujours le point d'entrée à trouver)
- Il met à jour le n° de série dans l'eeprom
- Il copie en ram externe les données binaires du dernier boot loader, et le code nécessaire pour programmer la flash du MCU
- Après coupure des interruptions, il jump sur la suite du programme en ram externe, qui efface la zone bootloader en flash et la remet à jour....
Ce mec est fou As tu oublié que tu étais en vacances ?!?
En tout cas je suis ce post avec grand intéret
Hâte de voir sur quoi il va déboucher !!!
Bonne continuation et courage pour Madame
Ce mec est fou As tu oublié que tu étais en vacances ?!?
Bonjour, je pensait exactement là-même chose.
Bravo _nlc_ !!! ta réflexion fait avancer tout le monde et c'est extrêmement instructif.
On sent la passion pour ce que tu fais.
Bonne continuation je suis impatient de voir l'avancement.
Oui en effet c'est la passion qui fait que je peux avoir le cerveau verrouillé sur quelque chose même pendant les vacances
Et puis aussi j'aime bien les casse-têtes et les défis techniques
Donc les avancées du jour : j'ai la confirmation de mon hypothèse d'hier, il y a bien un bootloader différent ! Pour fonctionner correctement en 4.3.0 il faut le bootloader associé qui fait reconnaitre l'interface en XS évolution au niveau de l'usb.
J'ai pu comparer un dump de clone chinois en 4.2.0 et le dump de l'interface fonctionnelle de winbond en 4.3.0, les bootloader sont bien différents. Sur le clone en 4.2.2 le bootloader date de 2003 !!! Et celui de la 4.3.0 de 2007....
Bizarre que les chinois ne se soient pas mis à jour en tout ce temps !!??
Commentaire