Eclipse + GNU ARM + STM32-HALまたはSPL


10

ARM開発(2年間のAVRの後)から始めて、stm32f4マイクロプロセッサが搭載されたSTM DISCOVERYボードを入手しました。

Keilのコード制限が気に入らず、有料版を入手するお金がないため、Eclipse + ARM gccを使用することにしました。

チュートリアルに従って、gcc ARMツール+ openocd + make utilsなどとともにeclipseをインストールしました。

私の質問は「パッケージ」プラグインについてです。すべての初心者と同様に、新しいSTM HALと古いSPLのどちらを使用するかについて混乱しています。

私の理解では、HALは、Arduinoと同等のアームと呼ばれるレベルまで抽象化を実装しました。一方、SPLは、コーディングを高速化するのに十分な抽象化を提供しますが、チップレベルで処理する必要があります。

これを理解した上で、HALを使用するよりもSPLを使用して物事をよりよく理解したいと思います。

知りたいのは、STMのパッケージを使用すると、暗黙的にHALを使用する必要があるのですか?もしそうなら、私のセットアップでSPLを使用する方法について誰かが私に指摘できますか?


1
「チュートリアル」は少しあいまいなので、「「パッケージ」プラグイン」については知りません。SPL(STM周辺ライブラリ?)やSPCLが何であるかわかりません。たぶん、私はこの質問に適格ではないかもしれませんが、STM32を2年以上使用して作業していることに疑問を感じました...
アーセナル

2
SPLはStandard Peripheral Libraryですが、一方でSPCLも知りません。
Bence Kaulics、2015年

2
現在、STMが推奨されサポートされている方法は、HALに基づいてコードを生成するSTM32CubeMXを使用することです。そして、私は彼らが、重要なものを隠すように私は、自動化ツールのファンではないが、それは、かなり便利です認めなければならない。..
ユージンのSh。

1
他のSTM32プロセッサSPLバージョンとほぼ互換性があるはずですが、STM32F7用のSPLがSTにあるとは思いません。
2015年

SPCLビットについて申し訳ありません。それは間違いでした。まだ頭字語に慣れています。また、ダブルチェックすると、ボードはstm32f4バリアントになります。別の間違い。それでも一般的な質問は残っていますが、Eclipseで標準のペリフェラルライブラリを使用するにはどうすればよいですか?
Ankit、2015年

回答:


6

私が見るように、SPLは、使用しているIDEとは何の関係もありません。プロジェクトに関連するモジュール(例:stmf4xx_dma.cおよびstmf4xx_dma.h)を含めるだけで、.cおよび.hファイルで公開されている(そして非常によく説明されている)関数を使用できます。実際、私はWindowsコマンドプロンプトだけを使用して、gcc、openocd、およびSPLでstmf411核について学びました。IDEなし。Eclipseのパッケージは、おそらくHALを使用することを強制します(Eclipse用にダウンロードされた「Packages」フォルダー内にあるため、私はHALモジュールのみを表示します)。

HAL自体IMOは、必要以上にはるかに階層化されているようです。レジスタに直接アクセスするのは面倒になり、ほとんど読み取ることができません。SPLはちょうどいいようです。st.comフォーラムの第一人者であるclive1も、HALよりもSPLを優先しています。これがそのフォーラムでの私の質問です...参考になるかもしれません。

Nucleo stmf411でUSARTのサポートが必要


1
その点で私は完全にあなたに同意します。HALは、抽象化の概念全体を使い果たしているようです。それを使用するとプログラムをより速く開発できますが、実際に何が起こっているのかを実際に学習することはできません。テストとして、私はuvisionでプロジェクトを作成し、ソフトウェアパックの代わりにレガシーサポートを選択しました。これには、SPLファイルが含まれているようです。リンクもありがとう!
Ankit

1

私はHALの経験はありませんが、時間を節約するためにSPLを何度も使用しました。私の考えでは、この組み込みプロセッサのターゲットコミュニティは2つのグループです。ハードウェアレイヤーに関与することに関心のない最初のグループです。ソフトウェアプログラマ、通常の愛好家、Arduino、ラズベリー崇拝者。このグループに属している場合は、HALが適しているようです。秒を好む電子およびハードウェアコミュニティから来る

GPIO_A->PIN &= ~(1 << 15);

LED_On(1)

LEDをオンにして、基本的に何をしているのかを知りたいのです。このグループに属していて、MCUのリファレンスマニュアルとプログラミングマニュアルを読むのに十分な時間がある場合は、レジスタレベルのプログラミングを選択することもできます。しかし、上記の2つのオプションのみを決定したい場合:STがサポートしているため、HALにはより良い未来がありますが、SPLは新しいスターターを理解するためのより簡単な方法です。多分これはhttp://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/を助けることができます


1
リンクをありがとう、おもしろい!あなたは正しいです。初心者にとって、SPLは学習するためのより良い方法のように思われます(これも私が選択した方法です)。ところであなたの返信ではLED_Off
Ankit

1

このIDEを入手してください: STM32用のSystem Workbench -Eclipseに基づいて無料で、1つのパッケージにarm-gccとopenocdの両方が含まれています。

ライブラリについて: SPLとHALに加えて、現在 LLが存在します。それぞれにいくつかの利点と欠点があり、必要なものを選択する必要があります。そして、私が理解しているように、それらのすべてはSTの実験的なステータスを持っています。それぞれの私の成績の下に:

  • SPL:古い、扱いにくい、追加のRAM使用なし、柔軟性
  • HAL:実際の、扱いにくい、余分なRAMの使用、柔軟性がない
  • LL:実際、ligtweigth、追加のRAM使用なし、柔軟

私の成績の簡単な説明:

  • 扱いにくい-大きなフラッシュの使用、周辺機器を操作するための「スーパー」ユニバーサル機能
  • 余分なRAMの使用-HALについてです。RAMに配置された構造体にペリフェラルの状態のコピーがあり、いつでもどこでも使用できます
  • 柔軟ではありません。HALについても、さまざまなケースに対応できる多くの機能があります。それらのほとんどは実際のデバイスでは使用できません(人々はusartからバイト単位で受信するためにHALを再初期化しようとします。TIM >_<+ DMAのすべての関数はTIMレジスタの再書き込み用に実装されており、他にはありません...)

少しリハビリHALの場合:初心者には大きな利点があります。STMCubeMXがサポートしています。

編集:

libopencm3を忘れてしまいました -代替ライブラリです。使ったことはありません。

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