1. #21
    Expert éminent
    Avatar de Auteur
    Profil pro
    Inscrit en
    avril 2004
    Messages
    6 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 6 569
    Points : 9 192
    Points
    9 192

    Par défaut

    Citation Envoyé par kenzokenza Voir le message
    Mon système sera implanté sur un site de panneaux solaires, je ne pourrai donc pas venir à chaque fois avec un pc et un jtag pour charger un programme , donc je voudrais reprogrammer STM1 sans passer par un jtag. Tu vois un peu ce je souhaite faire ?
    D'accord là je comprends beaucoup mieux.


    Pourquoi ne pas remplacer ton STM2 par un petit PC, genre Raspberry (si c'est possible) ? Cela pourrait faciliter la maintenance de ton système. STM1 y serait branché dessus en permanence, ça ne poserait pas de souci.

  2. #22
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    3 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués

    Informations forums :
    Inscription : juin 2009
    Messages : 3 303
    Points : 8 569
    Points
    8 569
    Billets dans le blog
    1

    Par défaut

    Ce que je veux surtout te dire, c'est que le fait que l'architecture ait déjà été validée n'est pas une raison valable pour ne pas la changer. Si tu t'en sors avec l'architecture actuelle, tu peux la garder ; si tu ne t'en sors pas, tu dois la changer.

    Comme évoqué plus haut, il faut faire un bootloader. C'est un programme qui récupère des données depuis un flux d'entrée et reprogrammer la flash du MCU avec. En général, il prend soin de ne pas s'écraser lui-même.
    Mon système sera implanté sur un site de panneaux solaires, je ne pourrai donc pas venir à chaque fois avec un pc et un jtag pour charger un programme , donc je voudrais reprogrammer STM1 sans passer par un jtag.
    Il faut déjà que tu répondes à la question "comment souhaite-je le reprogrammer ?". Un bootloader n'est pas pleinement un programme générique. Il faut adapter les flux d'entrées (origine du nouveau programme) et de sortie (reprogrammation de la fash). Il faut aussi penser à la manière donc ton application passe du mode normal au mode bootloader. Il faut aussi bien voir que tu auras 2 binaires : le binaire du bootloader et celui de l'application "normale".

    Tu trouveras beaucoup d'articles et de tutoriels sur le sujet. Vincent t'en a déjà pointé. Il existe aussi des bootloaders prêts à l'emploi, aux adaptions déjà précisées prêt, comme celui-ci : https://www.feaser.com/openblt/doku.php?id=homepage Un ancien collègue s'en était servi et l'avait trouvé très bien.

  3. #23
    Expert confirmé
    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 387
    Points : 4 048
    Points
    4 048

    Par défaut

    Citation Envoyé par kenzokenza Voir le message
    Avez vous un schéma de câblage correspondant à votre Texas Instrument que je pourrai adapter au mien.?
    Oui, j'ai celui de la carte d'évaluation de mon micro MSP430F5529 mais ça ne va rien t'apprendre puisque le bootloader USB est à 98% une histoire de logiciel.
    C'est cette carte que j'ai chez moi :

    Elle permet de mettre en oeuvre un micro ayant un port USB OTG. Texas fournis plein de doc là dessus.

    Le schéma de principe est simplement celui-ci et comme tu peux le voir, le schéma de câblage ne t'apportera rien puisque tout est en soft.
    Nom : im1.PNG
Affichages : 81
Taille : 9,8 Ko
    Ils ont mis un HUB USB parce que d'un côté il y a le micro (F5529) et l'autre l'émulateur (ça remplace la sonde JTAG) comme ça tu peux programmer et débugger la carte d'évaluation sans avoir besoin d'acheter une sonde exprès.


    En gros, la carte d'évaluation se compose comme ça (si tu regardes bien, tu verra vers le milieu de l'image un bouton qui s'appelle BSL pour BootStrapLoader) :
    Nom : im2.PNG
Affichages : 87
Taille : 50,7 Ko
    Si au démarrage de la carte, le bouton BSL est enfoncé alors le bootloader se lance, à la place du programme principal.

    Et TI donne le soft + les sources côté PC pour charger un .hex directement dans le micro via le port USB.
    Nom : im4.PNG
Affichages : 88
Taille : 94,9 Ko

    Puis des que tu fais un reset, en ayant bien sur relâché le bouton BSL, alors c'est nouveau soft qui démarre. Par défaut le bootloader est comme ça, c'est à dire qu'il configure le micro en esclave USB HID mais TI donne les sources pour qu'on puisse le modifier comme par exemple qu'il puisse démarrer en Hote USB ainsi le micro peut recevoir une clé USB. Bon c'est sur que c'est du boulot de modifier un bootloader mais comme le micro est un USB OTG alors c'est possible.


    Citation Envoyé par kenzokenza Voir le message
    Cela remettrait en question l'architecture du système. je travaille sur ce projet que depuis trois mois et l'architecture a déja été validé.
    Je vois...
    Si dans ton équipe vous êtes organisés comme nous l'étions dans mon labo, de l'époque, alors tu peux avoir :
    - Ceux qui font du soft
    - Ceux qui font du hard
    - Ceux qui font les PCB : CAO + test CEM
    - Ceux qui gère l'aspect mécanique (les problématiques du coffret, de l'étanchéité, des fixations etc...)

    Moi je faisais à 70% du Hard + CAO + Test CEM et 30% de Soft alors je peux confirmer que lorsque arrive une couille dans l'architecture alors que les cartes électroniques sont déjà routées et pré-testé en CEM, la moindre modification du hard peut être très compliqué :

    Coût d'un nouveau jeu de carte prototype + nouvelle configuration des outils de production pour la dépose de composant et le soudage + nouveau test hard + nouveau test CEM et potentiellement de nouveaux problèmes par exemple de consommation (régulateur devenu trop faible), d'encombrement (peut être que les entretoises prévues pour supporter le PCB d'origine doivent être déplacées car il est devenu un poil plus grand) etc... j'ai connu tout ça... et des fois il y a même un impact sur le coffret de l'appareil Beaucoup de monde doit retoucher sa partie !

    Celui qui a fait le hard aurait du se soucier un minima du soft surtout dans l'aspect timing et nécessité de la présence d'une mémoire tampon comme dans le cas présent.

    Concentre toi sur un problème à la fois :
    1) La mémoire tampon car le bus SPI ne va pas assez vite, essaye de gérer ça avec la mémoire du STM1 si tu as encore de la place. Il faut que tu fasses des calculs pour savoir quelle doit être la taille de cette mémoire.

    2) Le problème du bootloader USB ou pas. La version USB est le top mais demande beaucoup de travail et de maîtrise mais à la fin tu pourra te pointer simplement avec un clé USB (faudra que le bootloader lance le micro en USB hote et prenne en charge le FAT32). Soit tu implémentes le bootloader UART et il te faudra un PC et un câble USB/série pour mettre à jour STM1 (je suis quasi sur que ST fourni même le logiciel côté PC avec son bootloader)

  4. #24
    Candidat au Club
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : août 2016
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    Citation Envoyé par Auteur Voir le message
    D'accord là je comprends beaucoup mieux.


    Pourquoi ne pas remplacer ton STM2 par un petit PC, genre Raspberry (si c'est possible) ? Cela pourrait faciliter la maintenance de ton système. STM1 y serait branché dessus en permanence, ça ne poserait pas de souci.
    Et comment je mettrai le source dans la mémoire flash du STM1. quelle type de communication existera- t-il entre le rasberry et STM1?
    merci

  5. #25
    Expert éminent
    Avatar de Auteur
    Profil pro
    Inscrit en
    avril 2004
    Messages
    6 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 6 569
    Points : 9 192
    Points
    9 192

    Par défaut

    Si je prends les platines Nucleo et Arduino que je connais, la liaison entre PC et carte se fait par USB. L'idée donc serait d'accéder à distance à ton mini PC puis y télécharger tous tes fichiers. Ensuite, toujours avec les accès à distance, tu transferts le programme vers ta carte STM en utilisant le logiciel idoine via le port USB.

    C'est comme ça que je vois les choses, j'ignore si c'est possible avec ton matériel.

  6. #26
    Candidat au Club
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    août 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : août 2016
    Messages : 12
    Points : 2
    Points
    2

    Par défaut

    Bonjour à tous,

    Finalement voici la solution pour laquelle j'ai opté pour reprogrammer la mémoire flash de mon microcontroleur de travail (STM1) sans utiliser de jtag.

    J'utilise STM2 avec un carte SD et à travers un cable ETHERNET du STM2 je fais l'acquisition des données (c'est à dire mon code source) depuis un serveur et puis je les stocke dans la carte SD.
    Et enfin j'envoie le fichier qui se trouve dans la SD vers la mémoire flash du STM1 en utilisant le protocole SPI.

    Je me pose quelque question. Comment pourrai je envoyer le fichier de l'interface éthernet directement dans la carte SD sans utiliser la flash du STM2? car l'objectif est de reprogrammer uniquement la flash du STM1. voici le schéma proposé. Merci
    Images attachées Images attachées  

  7. #27
    Expert confirmé
    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 387
    Points : 4 048
    Points
    4 048

    Par défaut

    Il y a un gros problème car tu ne peux pas reprogrammer STM1 au travers du bus SPI.

    Le bootloader de ST (pour le STM32F107xxx) fonctionne avec l'USART1, USART2, CAN2 ou USB. Voir la doc du fabricant que j'ai donné dans les premiers messages.

    Concernant ta remarque sur la flash de STM2 et la SD card, je pense qu'il y a une confusion. Il ne faut pas voir cette SD comme une extension de ta mémoire flash car ce n'est absolument pas comme ça que ça fonctionne sur ce type de microcontrôleur.

    Dans ton micro, dans sa version la plus grosse, il y a 256ko de mémoire flash pour contenir le programme. On peut dire que c'est son disque dur. Et il y a 64ko de RAM pour bosser comme dans un PC. Sur ce type de microcontrôleur tout est figé, tu ne peux ni réduire ni augmenter quoi que ce soit. Le compteur programme et le pointeur de pile ne vont pas à l'extérieur du micro. Donc on peut ajouter des mémoires RAM et des SD card voir même un Hdd de PC sur le micro, autant qu'on le souhaite, ça n'augmentera pas ces caractéristiques.

    Tous ces ajouts seront des périphériques de type mémoire pour stocker des données. Une SD card n'est qu'un périphérique SPI tout comme l'esclave Ethercat.

    Si tu mettais un programme dans une SD connecté sur le SPI d'un microcontrôleur, celui ci ne sera jamais aller exécuter ce qu'il y a dans la SD. Le compteur programme ne sait aller que dans les 256ko de flash interne.

    Donc lorsque tu dis :
    Comment pourrai je envoyer le fichier de l'interface éthernet directement dans la carte SD sans utiliser la flash du STM2
    Ça n'a pas de sens puisque la mémoire flash du STM2 contient un programme qui lit des données issues de ethernet puis les stocks simplement dans une SD via le SPI (de la même manière que tu envois des données du STM1 dans l'esclave Ethercat)

    Je ne sais pas si je suis clair ?

    Si tu débutes avec les microcontrôleurs c'est normal que tu fasses des parallèles avec les PC car il y en a beaucoup. Mais par moment il y a des pièges. Sur un PC une SD peut véritablement être considérée comme une extension du disque dur. Mais sur ton micro ce n'est pas du tout le cas.

    Je peux expliquer autrement si tu le souhaites.
    A+

  8. #28
    Expert confirmé
    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 387
    Points : 4 048
    Points
    4 048

    Par défaut

    Voilà comment moi je vois les choses.

    - En fonction de tes contraintes car je suppose que tu ne peux plus toucher au hard de STM1
    - En fonction de ton idée de départ


    Nom : Capture du 2016-09-08 22:33:10.png
Affichages : 52
Taille : 29,3 Ko

    Le programme dans le STM2 doit :
    1. implémenter FAT pour causer avec la SD card via SPI
    2. savoir lire un fichier arrivant de Ethernet et pourquoi pas un petit serveur web
    3. savoir écrire ce fichier dans la SD card au format FAT
    4. savoir lire un ordre d'invocation (du bootloader dans STM1) arrivant de ethernet, en gros ça consiste souvent a mettre une broche a 1
    5. savoir aller chercher le fichier dans la SD card via le SPI
    6. savoir envoyer ce fichier sur le port UART en direction de STM1 (pour mémoire STM1 a vu son bootloader s'activé à l'étape 4 donc le STM1 sait que ce qui arrive par l'UART est un nouveau programme a mettre en mémoire flash)
    7. savoir faire des trucs que tu as besoin en plus


    Le programme dans le STM1 doit juste contenir le bootloader de chez ST.

    C'est beaucoup de boulot mais ça doit fonctionner.

    Pour la mise au point et le débroussaillage du truc moi je commencerai par simplement mettre un bootloader dans STM1 et voir si avec un PC j'arrive a mettre à jour le programme au travers du port série.
    Si ça marche alors je m'attaquerai a STM2 que STM1 croit être un PC en quelques sorte et d'où la nécessité d'implémenter le système de fichier FAT.

  9. #29
    Membre à l'essai
    Inscrit en
    novembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 22
    Points : 19
    Points
    19

    Par défaut

    Citation Envoyé par kenzokenza Voir le message
    Bonjour à tous,

    Finalement voici la solution pour laquelle j'ai opté pour reprogrammer la mémoire flash de mon microcontroleur de travail (STM1) sans utiliser de jtag.

    J'utilise STM2 avec un carte SD et à travers un cable ETHERNET du STM2 je fais l'acquisition des données (c'est à dire mon code source) depuis un serveur et puis je les stocke dans la carte SD.
    Et enfin j'envoie le fichier qui se trouve dans la SD vers la mémoire flash du STM1 en utilisant le protocole SPI.

    Je me pose quelque question. Comment pourrai je envoyer le fichier de l'interface éthernet directement dans la carte SD sans utiliser la flash du STM2? car l'objectif est de reprogrammer uniquement la flash du STM1. voici le schéma proposé. Merci
    Attention le protocol Ethercat est fait pour etre le seul sur le reseau, toute trame qui n'est pas une trame ethercat se feras jeter a la poubelle!
    si tu veut faire passer des trame autre que ethercat il te faut un reseau a part. cela peut devenir contraignant.

Discussions similaires

  1. Réponses: 18
    Dernier message: 14/08/2014, 18h22
  2. Réponses: 12
    Dernier message: 24/05/2006, 16h37
  3. comment inclure du code C dans un plugin
    Par Stopher dans le forum 4D
    Réponses: 6
    Dernier message: 28/04/2006, 13h39
  4. Réponses: 2
    Dernier message: 14/04/2006, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo