AVR、MSP430、STM32ファミリーのマイクロコントローラーと私の主観的な印象
こんにちは、Habrの住民。 この記事では、AVR、MSP430、STM32ファミリのマイクロコントローラのプログラミングの経験についての印象を共有したいと思います。
はじめに
私は学生の頃、Delphiで応用プログラミングに従事し、悲しみを知りませんでしたが、幸福も知りませんでした。 ある日まで、私の4年目に、主題「マイクロプロセッサコントローラ」は私を訪問しました。 さて、オフとオン。
AVRマイクロコントローラーファミリー
「マイクロプロセッサコントローラ」という題名は、Atmel AVR Atmegaファミリを例として使用してマイクロコントローラをプログラミングすることに特化しています。 このテーマの実験室作業は、AVR Studio 4.18ソフトウェア環境でこのファミリーのアセンブラーでAtmega16を使用してデバッグボードをプログラミングすることで構成されていました。
プログラムはシミュレータを使用してデバッグされ、ponyprog2000プログラムを介してロジックを使用してデバッグボードに組み込まれたLPTプログラマを使用してマイクロコントローラに縫い付けられました。 これらの実験室での作業では、「LEDの点滅」、ボタン押下の処理、動作するハードウェアタイマーの設定とそれによって生成された割り込みの処理、UARTの設定、データの送信などを含むマイクロコントローラーの魔法の世界に精通しました。
素晴らしい新しい世界が私に開かれました。 しかし、このすべては次のコースまで少し低下しました。次のコースでは、同じボードのプログラミングが行われましたが、アセンブラではなく、E-LAB環境のPascalで行われました。 この環境を知っている人はほとんどいませんが、無駄です。 実際、そこにarduinoが登場するずっと前から、この環境には使いやすい外部デバイス用の多くのライブラリが含まれていました。 信じられない?
こちらをご覧ください。 E-LABとJTAGデバッガーがあります。
しかし、ラボの執筆時点では、JTAGデバッグは使用できませんでした。 そのため、E-LABに組み込まれたシミュレータを使用しました。 その場合、E-LABライブラリを使用すると、ラウンドロビンの原理に基づいてRTOSでプロジェクトを作成できます。
E-LABの最新バージョンは、協調マルチタスクもサポートしています。
原則として、これらの2サイクルの実験室作業から、マイクロコントローラー、特にAVRファミリーについて知り合いました。 今、何が言えますか?
AVRは、世界で最も人気のあるマイクロコントローラーファミリーです。
Arduino-maniaはこれを補強するだけです。 これらの習得しやすいマイクロコントローラは、最初の知り合いにとっては依然として最適なソリューションです。 SPI、I2C、UARTインターフェイスを使用して簡単なアプリケーションを作成する経験を得ることができ、入力/出力ポートの動作を理解し、サブシステムに割り込むことができます。 実際、このファミリーでは基本を学び、中小規模のプロジェクトを作成できます。 AVR Studioの最新バージョンでは、Cでプロジェクトを実行できます。
また、はんだごてを手に取ったら、 プログラマーとJTAGデバッガーの両方を提供できます 。
始めたいと思っていますか? また 、多くのものがあります。
Atmel独自のデバッグボードとプログラマーは非常に高価です。
AVRの主な欠点は、補助的な数学ブロックのない弱いコンピューティングコアであり、8ビットは状況を悪化させます。 つまり 複雑な数学的計算には時間がかかる場合があります。 マイクロコントローラには、収集または受信した情報を処理する時間がありません。 Atmel16の最後のプロジェクトは、Atmel AVR開発環境用のIAR Embedded WorkbenchのCで行いました。
MSP430マイクロコントローラーファミリー
AVRファミリの後、マイクロコントローラの世界はすでにその秘密のいくつかを明らかにしました。
そして、ここでもマイクロコントローラプログラミングに特化した新しいテーマが登場しましたが、それはすでにTexas Instruments MSP430ファミリ、つまり、ジフパネルと最小限の配線を備えたデバッグボード上のmsp430f169マイクロコントローラでした。
そのためのプログラム開発とデバッグは、MSP-FET430UIF JTAGデバッガーを使用して、MSP430環境用のIAR Embedded Workbenchで行われました。
まず第一に、このファミリーでは、メーカーの内部周辺機器を操作するプログラムの例が好きでした。 まあ、それはそれからJTAGとIARに私のフックを取ります。 JTAGデバッグを1回試した後は、プログラミングだけで開発に戻りたくないでしょう。 実際、JTAGデバッグでは、メモリ内のレジスタで何が起こっているか、コードが現在実行されている場所をステップごとに確認して、ブレークポイントを設定できます。 その時以来、私はIARに夢中になりました。 結局のところ、これは多くのマイクロコントローラファミリ用にリリースされたクロスプラットフォームコンパイラです。 インターフェイスを一度覚えておく価値があり、新しいマイクロコントローラファミリに切り替えるたびに再学習する必要はありません。 これは奇跡ではありませんか? しかし、中毒性があります。
唯一の欠点は、フルバージョンのコストです。 一般に、このファミリーでは、マイクロコントローラープログラマーとして仕事を始めました。 そして、C言語の束(本質的にクロスプラットフォームのアセンブラー)、クロスプラットフォームのIAR開発環境、およびJTAGデバッグは常に私と一緒でした。
AVRとは対照的に、MSP430ファミリは16ビットであり、統合されたハードウェア乗算器の使用により生産性が向上しています。
低電力モードを使用する機能により、モバイルポータブルデバイスで使用した場合のバッテリ寿命が長くなります。 そして、25 MHzの周波数で動作するマイクロコントローラーMSP430F5419とMSP430F5438は、ARMにしっかりと固定されています。 だから彼らはとても強力な中間農民です。 独自のJTAGデバッガ、MSP-430用のIAR、通常のデバッグボードをお持ちの場合、それらを使用して作業するのは楽しいことです。
STM32マイクロコントローラーファミリー
私が最後に会ったのは、STMicroelectronicsのSTM32ファミリでした。
ARMアーキテクチャ自体は、多くのファミリへの扉です。
なぜなら さまざまな企業のこれらのマイクロコントローラの多くでは、1つのJTAG送信側J-Linkまたはそのクローンのみが必要です。 また、ARM開発環境用のIAR Embedded Workbenchが利用可能な場合、 ドアは開いています。
STM32ファミリの利点は、組み込みの周辺機器ライブラリが存在することです。これにより、AVRやMSP430とは異なり、32ビットカーネルだけでなく、最小限の労力で独自のユーザーライブラリをすばやく作成できます。 STM32シリーズのマイクロコントローラーには、内蔵周辺機器で内部充填するための多くのオプションが含まれており、そこからコストも異なります。 たとえば、MSP430ファミリのマイクロコントローラとして、Cortex-M3コアに基づくSTM32L152VBT6マイクロコントローラは、低消費電力を目指しており、32 MHzで動作します。
Cortex-M3コア上の別のSTM32F107VCT6マイクロコントローラーは、このクラスのデバイスに割り当てられたほとんどのタスクに適しており、周波数は72 MHzです。 Cortex-M3コアに基づくマイクロコントローラーは、MSP430やAVRよりも「重い」数学や処理に適していることがすぐにわかります。 また、周波数が168 MHzに達するCortex-M4コアで、このSTM32F407VGT6ファミリの「ヘビーウェイト」を使用しました。 ビッグブラザーは、複雑な数学的問題の解決に最適でした。 さらに、浮動小数点演算用のハードウェアFPUがあります。 STM32ファミリ用に、DISCOVERYボードのラインが開発されました。これにより、組み込みのST-Link JTAGデバッガを使用してボードを取得し、それを使用して独自のボードをプログラムできます。
マーケティングポリシーの結果により、メーカーのブランド化されたボードとJTAGデバッガーを使用しながら、最小限のコストでマイクロコントローラーの開発に統合できます。
おわりに
結論として、私は言いたいです。 すべての考慮された家族に利点があること。 誰もが楽しい思い出を持っています。