Yes, c'est bon j'ai trouvé l'adresse du point d'entrée de l'application
C'est à l'offset 0x21000
Pour rappel le point d'entrée c'est l'adresse à laquelle le bootloader fait l'instruction de saut mémoire pour sortir du bootloader et basculer sur l'application.
Ca n'aura finalement pas été trop compliqué : en général quand on développe une application pour un microcontrôleur donné, on ne se casse pas la tête pour la partie startup, à savoir le tout début de l'application qui a pour mission d'initialiser les variables ram avec leur valeurs par défaut (et plusieurs autres bricoles) avant l'appel au main(). On utilise en général le fichier source startup fournit par le fabricant du MCU. C'est ce que je fais, et comme j'ai déjà utilisé ce MCU j'ai ouvert le binaire d'un de mes applicatifs MB90F546, et j'ai regardé le code hexadécimal se trouvant au niveau du point d'entrée de l'applicatif (que je connais forcément là !!). Puis j'ai fait une recherche de la même suite de données binaires dans les dump 4.2.2 et 4.3.0, et dans les 2 cas je retrouve cette même suite de données binaires à 2 adresses :
- Dans la zone bootloader, et qui correspond d'ailleurs à l'adresse du vecteur d'interruption (c'est là que ça démarre à la mise sous tension ou au reset)
- Dans la zone application, donc à l'offset 0x21000
Il est donc facile maintenant de faire une application télechargeable par PSAInterfaceChecker et executée correctement (puisqu'à la fin du flash il y a un ordre de saut vers l'application est est donné).
Du coup il devient faisable de reflasher le bootloader par l'usb (et mettre à jour l'eeprom bien sûr) comme je l'ai détaillé hier : flashage d'un firmware spécial qui embarque le code binaire du bootloader, le stocke en ram (ainsi que les routines d'ecriture en flash), et le flashe dans la zone bootloader
C'est à l'offset 0x21000
Pour rappel le point d'entrée c'est l'adresse à laquelle le bootloader fait l'instruction de saut mémoire pour sortir du bootloader et basculer sur l'application.
Ca n'aura finalement pas été trop compliqué : en général quand on développe une application pour un microcontrôleur donné, on ne se casse pas la tête pour la partie startup, à savoir le tout début de l'application qui a pour mission d'initialiser les variables ram avec leur valeurs par défaut (et plusieurs autres bricoles) avant l'appel au main(). On utilise en général le fichier source startup fournit par le fabricant du MCU. C'est ce que je fais, et comme j'ai déjà utilisé ce MCU j'ai ouvert le binaire d'un de mes applicatifs MB90F546, et j'ai regardé le code hexadécimal se trouvant au niveau du point d'entrée de l'applicatif (que je connais forcément là !!). Puis j'ai fait une recherche de la même suite de données binaires dans les dump 4.2.2 et 4.3.0, et dans les 2 cas je retrouve cette même suite de données binaires à 2 adresses :
- Dans la zone bootloader, et qui correspond d'ailleurs à l'adresse du vecteur d'interruption (c'est là que ça démarre à la mise sous tension ou au reset)
- Dans la zone application, donc à l'offset 0x21000
Il est donc facile maintenant de faire une application télechargeable par PSAInterfaceChecker et executée correctement (puisqu'à la fin du flash il y a un ordre de saut vers l'application est est donné).
Du coup il devient faisable de reflasher le bootloader par l'usb (et mettre à jour l'eeprom bien sûr) comme je l'ai détaillé hier : flashage d'un firmware spécial qui embarque le code binaire du bootloader, le stocke en ram (ainsi que les routines d'ecriture en flash), et le flashe dans la zone bootloader
Commentaire