Ainsi, le travail de ce mandrigal a été motivé par l'absence presque complÚte d'instructions pas à pas utilisant les outils habituels proposés par STMicroelectronics.
Le grand nombre de bootloaders trouvés sur le réseau, parfois trÚs occupés, sont malheureusement «affûtés» pour un cristal particulier.
Le matériel proposé contient la procédure d'utilisation du package CubeMX, du «bootloader» DfuSeDemo et de l'utilitaire de préparation du firmware du gestionnaire de fichiers Dfu, c'est-à -dire que nous résumons notre liste de souhaits du matériel, pardonnez au macro assembleur et au gourou de la fiche technique.
Cuisiner l'environnement ...
Nous avons besoin de CubeMX lui-mĂȘme, le tĂ©lĂ©chargement du gestionnaire de fichiers DfuSeDemo + Dfu, sont tous dans le mĂȘme package, STM32 ST-LINK Utility, nous trouvons tout sur le site Web de STMicroelectronics gratuitement.
Notre bùton expérimental avec la puce STM32F103C8T6 d'oncle Liao

et le programmeur ST-Link Ă partir de lĂ .

Eh bien, votre IDE préféré, dans cette présentation spécifique, nous utilisons KEIL, les paramÚtres de compilation dans d'autres IDE ne sont pas trÚs différents.
Alors allons-y ...
Lancez CubeMX et sélectionnez votre cristal ...

Célébrez votre liste de souhaits ...

Dans cette tĂąche spĂ©cifique, nous activons le pĂ©riphĂ©rique USB â Device FS et, par consĂ©quent, la classe USB Device â DownLoad Update Firmware, et l'inoubliable RCC â High Speed ââClock â Cristal / Ceramic Resonator est celui Ă bord.
Ensuite, sélectionnez le commutateur de mode bootloader-a, dans cet exemple, utilisez simplement le cavalier boot1 existant.

Nous regardons le petit schéma et, conformément à lui, boot1 est attaché à la jambe de PB2, nous l'utilisons donc en mode GPIO_Input.
Terminé, activez l'onglet Configuration de l'horloge et démarrez la machine de sélection de configuration.

Aller Ă l'onglet Cofiguration ...

Sélectionnez le bouton GPIO ...

Et sur le terrain ...

écrire une étiquette personnalisée, que ce soit boot1.
Ensuite, configurez le projet ...

Choisissez Projet â ParamĂštres ...

Sélectionnez et remplissez ....

En conséquence, nous choisissons pour quel IDE Cub nous allons générer le projet, dans notre cas, MDK-ARM V5.
L'onglet Générateur de code dans ce mode de réalisation restera inchangé ...

Eh bien, c'est tout, nous commençons la gĂ©nĂ©ration du projet Project â Generate Code

à la fin, Cub vous demandera de lancer immédiatement votre IDE ... ce que vous devez faire.


Nous commençons la compilation, l'assemblage et le chargement dans le cristal ... F7, F8 ...

Le résultat final ...
Nous basculons les broches de notre carte sur le mode de fonctionnement et connectons le cĂąble USB ...


Ouvrez le panneau de configuration dans Windows â systĂšme â gestionnaire de pĂ©riphĂ©riques â contrĂŽleur USB. Et regardez la liste des appareils, Windows bruira un peu et installera l'appareil STM en mode DFU (si ce n'est pas dĂ©jĂ fait).
Alors, le pilote s'est levé et a décidé de démarrer le "boot" DfuSeDemo ...

Nous regardons ce que nous avons attrapé DFU Device et double-cliquez sur le champ Select Target ...

Nous regardons attentivement et nous émerveillons que le flash jusqu'à l'adresse 0x0800C000 soit fermé pour l'écriture et nous écrivons cette adresse, nous en avons besoin ...
Au fait, je l'ai essayĂ© sur STM32F407VE, oĂč la mĂ©moire est ouverte pour l'enregistrement Ă partir de 0x08000000, c'est-Ă -dire depuis le tout dĂ©but ... pourquoi, dans notre version ce n'est pas si clair, je n'ai pas creusĂ©, c'est enterrĂ© quelque part, mais ce n'est clairement pas Ă©crit, il n'y a pas comme il faut car un gros morceau disparaĂźt sans propriĂ©taire ... peut-ĂȘtre que quelqu'un vous dira oĂč creuser ...
Donc, "la coupe de cheveux vient de commencer" ...
Nous n'avons besoin que de deux fichiers sources ...

Nous les ouvrons dans IDE et nous corrigeons, nous ajoutons ...
Nous tenons compte du fait que CubeMX NE S'ASSOCIE PAS lors de la régénération de l'insert entre le CODE UTILISATEUR COMMENCER et le CODE UTILISATEUR FIN ... là , nous entrerons nos ajouts ...
Commençons par main.c
typedef void (*pFunction)(void); pFunction JumpToApplication; uint32_t JumpAddress; . . . uint32_t AddressMyApplicationBegin = 0x0800C000; uint32_t AddressMyApplicationEnd = 0x0800FBFC; . . . if(HAL_GPIO_ReadPin(boot1_GPIO_Port, boot1_Pin ) == GPIO_PIN_SET) { if (((*(__IO uint32_t *) USBD_DFU_APP_DEFAULT_ADD) & 0x2FFE0000) == 0x20000000) { JumpAddress = *(__IO uint32_t *) (USBD_DFU_APP_DEFAULT_ADD + 4); JumpToApplication = (pFunction) JumpAddress; __set_MSP(*(__IO uint32_t *) USBD_DFU_APP_DEFAULT_ADD); JumpToApplication(); } } MX_USB_DEVICE_Init(); . . .
c'est tout avec main.c ...
allez Ă usbd_conf.h et Ă
#define USBD_DFU_APP_DEFAULT_ADD 0x0800000
rappelez-vous ...
#define USBD_DFU_APP_DEFAULT_ADD 0x080C000
nous passons Ă usbd_dfu_it.c, ici plus ....
. . . extern uint32_t AddressMyApplicationBegin; extern uint32_t AddressMyApplicationEnd; . . . #define FLASH_ERASE_TIME (uint16_t)50 #define FLASH_PROGRAM_TIME (uint16_t)50 . . . , «» ⊠uint16_t MEM_If_Init_FS(void) { HAL_StatusTypeDef flash_ok = HAL_ERROR;
En fait, c'est tout ...
Nous connectons le programmeur, jetons les cavaliers en mode programmation, F7, F8 et botloader sont enregistrés ...
Puis-je utiliser ...
Nous allons maintenant préparer notre application pour le chargement via bootloder ...
L'application préférée clignotera LED ...
Nous préparons et déboguons l'application, et modifions les emplacements individuels dans le compilateur et le corps du programme pour changer l'adresse des vecteurs de lancement et d'interruption du programme ...
Ă savoir dans KEIL â Configurer â Outils Flash

Changer l'adresse du début du programme ...

Nous disons de générer un fichier HEX

et changer l'adresse de la table vectorielle ...
collecte du programme F7 ...
convertir le HEX reçu en un fichier dfo en utilisant l'utilitaire de gestion de fichiers Dfu ...

sélectionnez notre fichier HEX avec le bouton S19 ou HEX ... et cliquez sur Générer ...

nous obtenons le fichier dfu.
En fait, tout est prĂȘt.
Chargement dans le contrĂŽleur ...
Nous connectons notre carte expérimentale avec le botloader déjà chargé à USB, aprÚs avoir réglé les cavaliers en mode DFU.

Vous pouvez contrÎler l'apparence du périphérique STM en mode DFU dans la liste des périphériques.
lancez le "bootloader".

dites-lui notre fichier dfu ...

Nous appuyons sur Upgrade et observons le résultat du chargement ... pour plus de confiance, nous appuyons sur check.

tout est réussi ... vous pouvez courir ...
si l'erreur est sortie, cela signifie quelque part un montant ...

par exemple ...
Donc, nous supposerons que tout est réussi ... mettez le cavalier en mode application

et profitez de la diode clignotante ...
...
Uhhhh Tant de bukoffff. Fatigué de copier des photos :-)
Merci Ă tous pour votre attention ...