組み込みプログラミングをKeilからLinuxに移行する


9

現在、STM32ディスカバリーボード用の開発にKeilを使用しています。私のプロジェクトはほぼ完成しているので、Linuxベースのビルド環境に移行したいと思います。私は事前に構成されたフラッシュツールとWindows用のSTLinkドライバーを使用してボードをフラッシュし、qeilを使用してLinuxファイルでフラッシュするように管理したbinファイルをエクスポートしました。ここまでは順調ですね。

今、私はプロジェクト全体を構築するプロセスを動かすことにこだわっています。具体的には:

「startup_stm32l1xx_md.s」スタートアップファイルなどを考慮しながら、.uvprojをメイクファイルに移植するにはどうすればよいですか?


私は特にLinux GCCビルド環境下のSTM32で使用していませんが、おそらくGCCには別の起動ファイルが必要です。既に機能している単純なプロジェクトを見つけて、それにコードを追加するのが最善の方法です。
PeterJ 2014年

確かに難しい方法です。
Ignacio Vazquez-Abrams 2014年

MDK-ARMを使用して生成された現在の.oファイルKeilを使用し、その1つのファイルのコンパイルを今のところ無視して、静的にリンクできますか?
Lg102 2014年

PeterJがすでに書いたように。ラベルとセマンティクスが異なる別の起動ファイルを使用します。Keilのstartup_stm32l1xx_md.oファイルを保持する方法はないはずです。ソースのstartup_stm32l1xx_md.sがありませんか?
14年

私はそうしますが、それはMDK-ARM(またはヘッダーの主張)に向けられているようです。別のものに交換しまし。中密度と高密度の違いが何を伴うのかはわかりませんが。
Lg102 2014年

回答:


11

できました。私は自分の結果を他の人が使えるように共有したいと思った。皆さん、ありがとうございました。


このARMツールチェーンを使用してプロジェクトをビルドし、ツールに付属のtexane / stlinkライブラリ./st-flashを使用して、STM32L1にバイナリをフラッシュしました。texane / stlinkにはGDBが付属していますが、GDBなしでbuilding + flashingプロセスを実行できることがわかりました。

私のメイクファイルはこのようになってしまいました。それは非常にきれいまたは抽象的ではありませんが、仕事を成し遂げます。

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

その中で:

  • arm-none-eabi-gcc
    ARMツールチェーン
  • -T stm32l1xx.ld
    リンカドキュメント
  • -mthumb -mcpu=cortex-m3
    これはM3向けであることをGCCに伝えます
  • -D STM32L1XX_MD -D USE_STDPERIPH_DRIVER
    標準ペリフェラルドライバーの定義
  • startup_stm32l1xx_md.s
    GCC指向のスタートアップドキュメント。
  • system_stm32l1xx.c main.c [ sources ]
    私のソースファイルのリスト
  • -lm
    Math.hL IB Mの ATH)
  • --specs=nosys.specs
    のようなシステム呼び出しを使用しないでください_exit
  • -o Project.elf
    出力名

1
どこんstm32l1xx.ldファイルから来ますか?
怒り

3

Gnu ARMツールチェーン(arm-none-eabi)があり、おそらくopenOCDはgdbで動作します(Win7ではこれを実行できませんでした-openOCDはSTM32F4discoボードに接続できますが、gdbはopenOCDへの接続に問題があります)。

ここを少し掘り下げると、ツールチェーン、openOCD、スタートアップソースを含むサンプルプロジェクトへのリンクがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.