LinuxでSTM32ディスカバリーを開発するにはどうすればよいですか?[閉まっている]


26

STM32ディスカバリーボードを持っていますが、Linuxでプログラムできます。

これを行う最も簡単な方法は何ですか?


LinuxhUbuntuにCodesourceryをインストールし、少し積み上げました。PATHは問題ありませんが、プログラムはdasboardまたはソフトウェアセンターに表示されません。多分それは私が何らかの形で変更するが、方法がわからないUbuntuである。アイデアがあれば、書いてください。ありがとうございました。トム
トムアラート

1
@TomRitzmann PeterJは正しい。質問をするのに答えを使わないでください。さらに、ソフトウェアの問題はここでは話題外であり、SuperUserは適切な場所です。
クラバッキオ

回答:


12

STM32 Discoveryボード(またはST-Linkプログラマーを使用するSTM32)をプログラムおよびデバッグする簡単な方法は、「stlink」プロジェクトhttps://github.com/texane/stlinkを使用することです(ただしOpenOCDも人気があるようです)

また、ST NucleoボードはUSBフラッシュデバイスとして表示されるためstlink、ファイルをコピーするだけで十分です。

http://gpio.kaltpost.de/?page_id=131http://torrentula.to.funpic.de/2012/03/22/など、LinuxでのSTM32ディスカバリーの開発方法に関する優れたページがいくつかあります。setting-up-the-stm32f4-arm-development-toolchain /およびhttp://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/

しかし、最後のリンクが最も有用であることがわかりました。STのSTM32プロジェクトをそのままビルドする方法を示します-唯一の変更は、Makefileを追加することです。これは完璧なソリューションのようです。

Ubuntuの最近のバージョンには、ARMコンパイラを含むインストール可能なパッケージがあります。

sudo apt-get install gcc-arm-none-eabi

プロセッサはすべて少し異なっていることに注意してください。STM32F0..4にはすべて異なるコンパイラフラグが必要であり、リンカースクリプトはそれぞれわずかに異なります(ただし、実際に変更されたのはRAMとフラッシュのサイズのみです)。

編集:すぐに開始したい場合は、http://www.espruino.comご覧ください。これはSTM32自体で実行されるJavaScriptインタープリターなので、ボードにフラッシュできる「stlink」をインストールしたら、そのサイトからイメージをダウンロードしてフラッシュし、ターミナルアプリケーションに接続して、プログラミングを開始します。


ここでOpenOCDによってサポートさSTM32xディスカバリーボードのリストです:github.com/openrisc/openOCD/tree/master/tcl/board(「発見」の検索ブラウザを使用して)
rbaleksandar

8

GUIを使用する代わりに、テキストエディタとMakefileにもっと興味がある場合は、次のようにできます。

  • arm-none-eabi-gccを提供するツールチェーンをインストールします。Archlinuxでは、すべてコミュニティからcommunity / arm-none-eabi-binutils、arm-none-eabi-gcc、arm-none-eabi-newlib(およびデバッグする場合はarm-none-eabi-gdb)が必要です。 repo、またはhttps://launchpad.net/gcc-arm-embedded(ArchlinuxのAURでgcc-arm-none-eabi-binとして見つけることができます)。
  • ハードウェアにアクセスするためにどのライブラリを使用するかを決定します。私の頭の上から、3つの一般的なオプションがあります。
    1. なし。すべてをゼロから書きます。初心者にはお勧めできません。
    2. STM32Cube:ST自体が提供するAC ライブラリ
    3. Libopencm3:さまざまなベンダーの非常に多くのcortex-mコアをサポートするオープンソースライブラリ
    4. STM32PLUS:C ++ライブラリ。ただし、テストしていないため、これ以上説明することはできません。
  • 最初のプロジェクトを作成またはコピーします。
    1. ライブラリなしで、独自のメイクファイル、リンカースクリプト、スタートアップコードを記述し、シンプルなメイクファイルを実行します。がんばろう ;)
    2. STM32Cubeの場合:STM32CubeMXをダウンロードしてインストールします。解凍すると、*。exeファイルは実際には単なるJavaファイルであり、「java -jar filename.exe」を使用して実行できます。インストールにはsudoが必要です。完了したら、プロジェクトを作成し、「Truestudio」のコードを生成します。これにより、リンカスクリプト、起動コード、簡単なメイン関数(および、正しく覚えている場合はメイクファイル)の出発点が得られるはずです。実際、STM32Cube libを使用しなくても、STM32CubeMXはクロックツリーの値を計算し、チップを思い通りに構成できるかどうかを検証するのに最適です。
    3. libopencm3の場合:libopencm3の例を取得し、ボードに一致するを見つけて、これを出発点として使用します。サンプルを実行する準備ができているはずです。「make」と入力するだけです。次に、その例を、独自の開発の開始点として使用します。
    4. STM32Plusの場合:わかりません。ごめんなさい。
  • プロジェクトを取締役会に提出してください。どちらかを使用する

    1. シリアルブートローダー:stm32flashは素晴らしい作品です。
    2. デバッグポート:openocdを使用して、ボードで提供されるデバッグアダプターと通信できます。Openocdは優れていますが、ドキュメントが常に最適とは限りません。疑問がある場合は、openocd ircチャネルに参加してください。そこの人々は本当に素晴らしいです。
  • テキストエディタでコーディングし、コマンドラインツールを使用します。このチュートリアルでは、多くのヒントを提供します。

楽しい


5

EclipseGCC、およびOpenOCDは1つのツールチェーンです。EMCU-ITによって推奨されており、ここに追加情報があります。これらのページでは、FreeRTOS.orgのようなRTOSの使用を推奨していますが、それはあなた次第です。

LinuxでのSTM32のサンプルのコンパイルについては、こちらをご覧ください。このリンクは、次のコマンドで呼び出すことができるサンプルのメイクファイルを指します

git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip

いくつかのマイナーなコード修正も文書化されていますが、プロジェクトのほとんどは

make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-

1
ありがとう!私はそれらのリンクを見たことがありませんでした。ディスカバリーボードごとにビルドフラグが微妙に異なるため、どこかより明確なガイドはありません。
ゴードンウィリアムズ

ええ、STは非常に安価なボードを作り、それらを何千枚も配りました、そしてSTM32自体はF4までずっと素晴らしいチップですが、それらをプログラミングすることは大きな苦痛です。彼らのドライバーは信じられないほど不十分に文書化されており、適切な名前が付けられておらず、無料でうまく機能するIDEとツールチェーンを見つけるのは簡単ではありません。
hak8または

1

https://github.com/JorgeAparicio/bareCortexMで成功しました(リンクされているブログ記事も参照してください)。デバッグステートメントをコードに挿入したり、チップ内で何が起こっているかを推測したりする代わりに、コードをシングルステップで実行したり、デバイスメモリを参照したりすることができます。

bareCortexMプロジェクトは、OSなしのC ++でCortex Mシリーズ、特にSTM32を使用して開発するためのEclipseテンプレートです。openocd、gccを使用するように構成されており、検出ボードの一部を含む複数のターゲットに対してフラッシュおよびデバッグするスクリプトがあります。指示に従い、推奨されるEclipseプラグインをインストールすることで、UbuntuでSTM32VLDISCOVERYを使用することができました。

推奨されるように、私はeclipseテンプレートを同じ著者のSTM32ハードウェア用のlibstm32pp C ++テンプレートライブラリと組み合わせました。libstm32ppはCMSISのための驚くほど完全な代替を提供し、多くの場合、あなたはのようなものを言うことができますプログラミングモデルでSTM32のドライバーを批判PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)し、PINB::setLow()またはPINB::setHigh()起因するC ++テンプレートにほとんどコンパイルインラインすべてを。セットアップはとてもいいです。


メンテナンスされていないbareCortexMはお勧めしません。でstm32plusをチェックアウトandybrown.me.uk/wk
joeforker

このようなデバイスドライバーの問題は、それらが非効率的であることです。CPUサイクルを無駄にしない適切な高速デバイスドライバーには、適切なスケジューリングを行うためにrtoが必要です。
マーティン

0

たぶんそれは誰かに役立つでしょう:私の短い記事(ロシア語)とシンプルなプロジェクト。すべてLinuxで、Eclipseなどの不要なものはありません。

ライブラリは、インターネットの多くのGPLの例の1つから、STのWebサイトmakefileから取得されました。


0

Linuxまたはその他のOSでSTM32F0 Discoveryボードを使用してクイックスタートを行うための、小さくても革新的なテンプレートプロジェクトを次に示します。

https://github.com/dobromyslov/stm32f0-chibios-template

このプロジェクトでは、無料でオープンソースのリアルタイムオペレーティングシステムであるChibiOSを使用しているため、まったく最初から実装されているわけではありません。


0

私は、vimとarm-none-eabi-gccを通常のすべてのLinux開発ツールと一緒に使用します。私の意見では、Linuxは組み込み作業のための優れた開発環境です。デバッグには、stlinkとarm-none-eabi-gdbを使用します。


0

platformioを検討してください。コマンドラインにまったく慣れている場合は、platformioを使用すると開発プロセスが大幅に簡単になります。pio initプロジェクトのセットアップに使用できます。pio runツールチェーンを活用してコンパイルします。pio run --target uploadコードをデバイスに送信します。Platformioは、必要に応じてツールチェーンコンポーネント、ライブラリなどのダウンロードを処理します。

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