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?


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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.