Déplacer la programmation intégrée de Keil vers Linux

9

J'utilise actuellement Keil pour développer une carte de découverte STM32. Mon projet est presque terminé et j'aimerais passer à un environnement de construction basé sur Linux. J'ai utilisé l'outil de clignotement préconfiguré et les pilotes STLink pour Windows pour flasher la carte, et j'ai obtenu keil pour exporter un fichier bin, que j'ai réussi à flasher sur ma machine Linux en utilisant qSTLink2 . Jusqu'ici tout va bien.

Maintenant, je suis bloqué sur le déplacement du processus de construction de l'ensemble du projet. Plus précisément:

Comment puis-je porter mon .uvproj vers un makefile, tout en prenant en compte le fichier de démarrage 'startup_stm32l1xx_md.s'?

Lg102
la source
Je ne l'ai pas utilisé dans un STM32 en particulier sous un environnement de construction Linux GCC, mais vous trouverez probablement que GCC a besoin d'un fichier de démarrage différent. Il serait peut-être préférable de trouver un projet simple déjà fonctionnel, puis d'y ajouter votre code.
PeterJ
À la dure, sans aucun doute.
Ignacio Vazquez-Abrams
Puis-je utiliser le fichier .o actuel généré par Keil à l'aide de MDK-ARM, ignorer la compilation de ce fichier pour l'instant et le lier statiquement?
Lg102
Comme PeterJ l'a déjà écrit. Il utilisera un fichier de démarrage différent avec des étiquettes et des sémantiques différentes. Il ne devrait y avoir aucun moyen de conserver le fichier Keil startup_stm32l1xx_md.o. Vous n'avez pas la source startup_stm32l1xx_md.s pour cela?
harper
Je le fais, mais il semble orienté vers MDK-ARM (ou alors l'en-tête le prétend). Je l'ai remplacé par un autre . Je ne sais pas ce que la distinction entre moyenne et haute densité implique cependant.
Lg102

Réponses:

11

Je l'ai fait. J'ai pensé que je partagerais mes résultats afin que d'autres puissent l'utiliser. Merci pour votre temps, tout le monde.


J'ai utilisé cette chaîne d' outils ARM pour construire mon projet, et la bibliothèque texane / stlink , fournie avec l' ./st-flashoutil, pour flasher le binaire sur mon STM32L1. Alors que texane / stlink est livré avec GDB, j'ai trouvé que je pouvais faire le processus de construction + flashage sans lui.

Mon Makefile a fini par ressembler à ceci. Ce n'est pas très joli ou abstrait, mais ça fait le travail.

all:
    arm-none-eabi-gcc -T stm32l1xx.ld -mthumb -mcpu=cortex-m3 -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER startup_stm32l1xx_md.s system_stm32l1xx.c main.c [ sources ] -lm --specs=nosys.specs -o Project.elf

Dans lequel:

  • arm-none-eabi-gcc
    La chaîne d'outils ARM
  • -T stm32l1xx.ld
    Le document de l'éditeur de liens
  • -mthumb -mcpu=cortex-m3
    Dites à GCC que c'est pour un M3
  • -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER
    Définit pour le pilote de périphérique standard
  • startup_stm32l1xx_md.s
    Document de démarrage orienté GCC.
  • system_stm32l1xx.c main.c [ sources ]
    Liste de mes fichiers source
  • -lm
    Pour Math.h( L ib M ath)
  • --specs=nosys.specs
    N'utilisez pas d'appels de système comme _exit.
  • -o Project.elf
    Nom de sortie
Lg102
la source
1
D'où vient le stm32l1xx.ldfichier?
rage le
3

Il existe une chaîne d'outils Gnu ARM (arm-none-eabi), et soi-disant openOCD fonctionne avec gdb (bien que je n'ai pas pu y arriver sous Win7 - openOCD se connecte à une carte STM32F4disco OK, mais gdb a des problèmes de connexion à openOCD ).

Faites quelques recherches ici et vous trouverez des liens vers la chaîne d'outils, openOCD et des exemples de projets qui incluent la source de démarrage.

markt
la source