Verschieben Sie die eingebettete Programmierung von Keil nach Linux

9

Ich verwende derzeit Keil, um für ein STM32-Discovery-Board zu entwickeln. Mein Projekt steht kurz vor dem Abschluss und ich möchte auf eine Linux-basierte Gebäudeumgebung umsteigen. Ich habe das vorkonfigurierte Flashing-Tool und die STLink-Treiber für Windows verwendet, um das Board zu flashen, und ich habe Keil dazu gebracht, eine Bin-Datei zu exportieren, die ich mit qSTLink2 auf meinem Linux-Computer flashen konnte . So weit, ist es gut.

Jetzt bin ich fest entschlossen, den Prozess des Aufbaus des gesamten Projekts voranzutreiben. Speziell:

Wie portiere ich meine .uvproj auf ein Makefile, während ich Dinge wie die Startdatei 'startup_stm32l1xx_md.s' berücksichtige?

Lg102
quelle
Ich habe in einem STM32 insbesondere unter einer Linux-GCC-Build-Umgebung nicht verwendet, aber Sie werden wahrscheinlich feststellen, dass GCC eine andere Startdatei benötigt. Am besten finden Sie ein bereits funktionierendes einfaches Projekt und fügen dann Ihren Code hinzu.
PeterJ
Zweifellos der harte Weg.
Ignacio Vazquez-Abrams
Könnte ich die aktuelle .o-Datei verwenden, die Keil mit MDK-ARM generiert hat, die Kompilierung für diese eine Datei vorerst ignorieren und statisch verknüpfen?
Lg102
Wie PeterJ schon schrieb. Es wird eine andere Startdatei mit unterschiedlichen Beschriftungen und unterschiedlicher Semantik verwendet. Es sollte keine Möglichkeit geben, die Datei Keil startup_stm32l1xx_md.o beizubehalten. Haben Sie nicht die Quelle startup_stm32l1xx_md.s dafür?
Harper
Ich tue es, aber es scheint sich an MDK-ARM zu orientieren (oder so behauptet der Header). Ich habe es durch ein anderes ersetzt . Ich bin mir jedoch nicht sicher, was die Unterscheidung zwischen mittlerer und hoher Dichte bedeutet.
Lg102

Antworten:

11

Habe es geschafft. Ich dachte, ich würde meine Ergebnisse teilen, damit andere sie nutzen können. Vielen Dank für Ihre Zeit, alle zusammen.


Ich habe diese ARM-Toolchain verwendet , um mein Projekt zu erstellen, und die Texane / Stlink- Bibliothek, die mit dem ./st-flashTool geliefert wird, um die Binärdatei auf meinem STM32L1 zu flashen. Während texane / stlink mit GDB geliefert wird, habe ich festgestellt, dass ich den Building + Flashing-Prozess ohne GDB durchführen kann.

Mein Makefile sah dann so aus. Es ist nicht sehr hübsch oder abstrakt, aber es erledigt den Job.

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

In welchem:

  • arm-none-eabi-gcc
    Die ARM-Toolchain
  • -T stm32l1xx.ld
    Das Linker-Dokument
  • -mthumb -mcpu=cortex-m3
    Sagen Sie GCC, dass dies für einen M3 ist
  • -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER
    Definiert für den Standard-Peripherietreiber
  • startup_stm32l1xx_md.s
    GCC-orientiertes Startdokument.
  • system_stm32l1xx.c main.c [ sources ]
    Liste meiner Quelldateien
  • -lm
    Für Math.h( L ib M ath)
  • --specs=nosys.specs
    Verwenden Sie keine Systemaufrufe wie _exit.
  • -o Project.elf
    Ausgabename
Lg102
quelle
1
Woher kommt die stm32l1xx.ldDatei?
Wut
3

Es gibt eine Gnu ARM-Toolchain (arm-none-eabi), und angeblich funktioniert openOCD mit gdb (obwohl ich dies unter Win7 nicht geschafft habe - openOCD stellt eine Verbindung zu einer STM32F4disco-Karte her, OK, aber gdb hat Probleme mit der Verbindung zu openOCD ).

Haben einige Graben um hier und Sie finden Links zu den Toolchain, openocd und Beispielprojekte , die Startquelle enthalten.

markt
quelle