こんにちは。本日はSTM32ファミリーの開発エコシステムのプレゼンテーションをご覧いただき、ありがとうございます。今回のプレゼンテーションは、弊社の32ビットマイコンのSTM32を初めて使われるお客様が開発をスムーズに進められるように、開発環境の構築や使い方を実施を通して学習していただくことを目的としています。本プレゼンテーションをご覧いただく際、事前に実習で使用する開発ツールのインストールやライセンスのアクティベーションなどが必要になります。従えまして、皆様の事前準備が完了していることを前提に進めていきますのでご了承ください。それでは、プレゼンテーションの方に入りたいと思います。本プレゼンテーションは、開発環境の紹介がテーマになりますが、最初に簡単に弊社のSTM32マイコンについて説明いたします。弊社のSTM32ファミリーは、すべてアームのコアテックスコアを搭載した製品となっておりまして、現在17シリーズのラインナップがございます。コアの種類としましては、下はコアテックスM0から上はマイコンではコアテックスM7まで、プロセッサーはコアテックスA7を搭載した製品がございます。STM32ファミリーには、フラッシュ内存のワンチップマイコンタイプの製品と、外付メモリーが必要なプロセッサータイプの製品がございます。本プレゼンテーションおよび実習は、マイコンが題材となりますので、STM32マイコンにフォーカスしてご説明いたします。STM32マイコンは、現在、ハイパフォーマンス、メインストリーム、超低消費電力、ワイヤレスの4つのカテゴリーで製品展開を進めております。この中で、初代のSTM32マイコンは、メインストリームのコアテックスM3を搭載したSTM32F1シリーズになります。こちらは2007年にエリースされたのですが、その後、市場のご要求に応じて、ハイパフォーマンスや低消費電力、また2018年にはワイヤレスとプロセッサーのラインナップが新たに追加されました。ここで、新しい製品をいくつか紹介します。1つ目は、STM32MP1シリーズというSTM32ファミリー初のプロセッサー製品で、最大800MHzのコアテックスA7コアを2つ。コアテックスM4を1つ搭載したマルチコアタイプの製品で、STM32ファミリーの中では最も高いパフォーマンスを持つ製品となります。2つ目は、アナログ機能が強化されたメインストリームマイコンのSTM32G4シリーズです。こちらのデバイスは、高分解のタイマーを搭載しておりまして、最初184ピコ秒の分解能のPWMを出力することが可能です。また、12ビットのADコンバーター、アンプやコンパレーターなども搭載しておりますので、モーター制御やデジタル電源の制御などに幅広く対応できます。3つ目は、STM32エルゴシリーズです。こちらはトラストゾーン対応のARM Quatex M33を搭載したセキュリティ機能が強化されたマイコンになります。また、低消費電力マイコンでもありますので、IoTのHデバイスなど、バッテリー区道のアプリケーションやセキュリティ要件の厳しいアプリケーションに最適な製品となります。最後は、ワイアレスマイコンの中のSTM32WLシリーズです。初代のワイアレスマイコンはSTM32WBシリーズになりますが、こちらは2.4GHzのRF搭載のワンチップマイコンで、ブルートゥースやジグビーに対応しています。一方、STM32WLはサブギガタイのRF搭載のマイコンで、ローラやシグフォックス、FSK偏長などの無線に対応しており、LPWAのアプリケーションに最適なマイコンになっています。このようにSTM32WLには様々な用途に利用できる製品が多数用意されていますが、弊社ではSTM32WLの全ての製品において10年の長期供給をお約束しています。マイコンの長期供給については、弊社以外のマイコンベンダーでも取り組んでいると思いますが、そのほとんどは製品がリリースされたタイミングから数えて10年の供給となっています。一方、弊社の場合は製品がリリースされたタイミングではなくて、毎年1月に10年を数える期算日が更新されます。ですので、例えば2007年にリリースされたSTM32F1シリーズは今年で13年目になりますが、今年の1月から数えて10年は供給されますので、現時点ではリリースから23年は供給をお約束していることになります。さて、様々なシリーズの製品がある中で、今回実習で使用するマイコンは、ハイパーフォーマンスマイコンの中のコアテックスM4コアを搭載したSTM32F4シリーズになります。STM32F4シリーズの中にも10種類近くの製品ラインがありますが、その中で最もベーシックな位置付けのSTM32F401という製品を使用します。こちらがSTM32F401のブロックズになります。コアはコアテックスM4コアで84メガヘルツで動作します。メモリーはフラッシュメモリーが512キロバイト、エスラムが96キロバイト搭載しています。その他、最も低い低消費電力モードでデータを保持可能なバックアップレジスターや、1回だけ書き込み可能なOTPなども搭載しています。またペリフェラルとしましては、汎用タイマーやモーター制御用タイマー、ADコンバーターやDMAなどが搭載されています。通信用のインターフェースとしては、UART、SPI、iSquareC、USB OTGフルスピードなどに対応しております。パッケージは一番小型の3mm×3mmのWLCSPパッケージのほか、LQFEパッケージ、QFNパッケージの製品も用意しております。動作電圧範囲は1.7Vから3.6Vまでとなっております。以上がSTM32ファミリーの紹介になります。次に開発環境の説明をいたします。前半は今ご説明しましたSTM32ファミリーの開発環境全般のご紹介をいたします。後半に今回の実習で使用するツールについてご説明いたします。そして最後に事前にインストールしていただいたツールが正常に動作するかどうかを確認していきたいと思います。今ご覧いただきましたように、STM32ファミリーは全てARMのコアテックスコアを搭載した製品となっております。従いましてARMの数多くのエコシステムを利用できるというのが一つの大きな特徴になります。それを踏まえまして、まず統合開発環境ですが、1つ目がIAR社というスウェーデンの会社でARMのツールに力を入れている会社があるのですが、そこから発売されているInvited Workbench for ARM, EW ARMというツールがあります。2つ目がカイル社のMDK ARMというツールになります。このカイルという会社は元々ドイツのツールベンダーだったのですが、2005年にARMに買収されまして、現在はARMの参加に入っている会社となります。従いまして、このMDK ARMはARMの純正のツールという位置付けになります。ちなみに、弊社のマイコンのサポートエンジニアの9割型は、このIAR社のEW ARMか、カイル社のMDK ARMを使用しております。そして3つ目は、弊社がリリースしたSTM32 Cube IDEというツールで、こちらはGCCのコンパイラーとエクリプスの開発環境を組み合わせたツールとなります。実はこちらのツール、元々Atolicというスウェーデンのツールベンダーが作ったTrue Studioという統合開発環境があったのですが、弊社がこの会社を買収しまして、しばらくは弊社よりTrue Studioを提供していたのですが、2019年に新しくSTM32 Cube IDEという弊社のツールとして生まれ変わりました。ご紹介した3つのツールのうち、 IARのEW ARMとカイルのMDK ARMは無償評価版のライセンスがあります。共にコンパイル制限なしで30日限定のライセンスと32キロバイトのコンパイル制限付きで、期限が無制限のライセンスの2種類のライセンスが用意されています。一方、STM32 Cube IDEは機能と期限に制限のない完全に無償のツールになります。今回実習でご使用いただくツールは IAR社のEW ARMとなります。次にデバッカーですが、各ベンダーからさまざまなデバッカーが発売されています。弊社からはSTリンクV2及びV3、その他、IAR社のIJET、カイル社のUリンク、セガ社のJリンクなどがございます。また、トレース機能搭載のデバッカーなどもありますので、必要に応じてお選びいただくことができます。また、評価ボードに関してですが、弊社では新しいSTM32製品がリリースされますと、同じタイミングでその製品の評価ボードがリリースされます。評価ボードの種類としましては3種類あります。1つ目は標準評価ボードで製品が持っている機能のほとんどの機能を評価できる、ハイエンドの評価ボードになります。2つ目はディスカバリーボードというブランドで展開している評価ボードで、LCDやセンサー、オーディオのコネクターやE3ネット、USBなどの通信用コネクターが搭載されたボードなどがあります。こちらは簡易的なアプリケーション開発に最適なボードとなります。3つ目は今回実習で使用するボードで、ニュークリオという名前のボードになります。こちらはマイコン以外に重だった部品は搭載されておりませんので、マイコン単体の評価に最適なボードになります。また非常に拡張性の高い設計なので、ニュークリオ専用のさまざまな拡張ボードが利用できます。次にOSですが、国内ではフラッシュマイコン向けのリアルタイムOSでメジャーなOSはマイクロアイトロンになりますので、ここではSTM32マイコンに適用できるマイクロアイトロン系のOSを3つほど紹介いたします。1つ目はE4社のマイクロCキューブ、2つ目はUCテクノロジー社のマイクロTカーネル、そして3つ目はユビキタスAIコーポレーション社のトパーズになります。この中でE4社のマイクロCキューブは弊社マイコン製品がデリースされるタイミングで、ほぼパッケージ化が住んでいることが多いので、タイムリーにお客様へOSのソリューションをご提供できている状況でございます。次にソフトウェアライブラリーですが、今回実習で使用するライブラリーが組み込みソフトウェアライブラリーになります。こちらはファミリーごとにファームウェアパッケージが用意されておりまして、その中にはデバイスドライバーとミドルウェアなどが入っております。それでは別のパッケージとして、拡張ソフトウェアパッケージXキューブというものが用意されております。こちらのパッケージは、どちらかというとアプリケーションに近いソフトウェアを提供するパッケージで、モーターやセンサー、IoTやAIなどのソフトウェアが用意されております。ですので、上の組み込みソフトウェアライブラリーは、マイコン本来の機能のソフトウェア、そして下の拡張ソフトウェアパッケージはアプリケーションよりのソフトウェアという位置付けになります。その他のツールとして、弊社ではSTM32キューブというブランドで、STM32マイコンの開発に利用できるさまざまなツールを用意しています。その中には、実習で使用するソフトウェア開発支援ツールのSTM32キューブMXやフラッシュプログラミングツール、消費電流をモニタリングするツール、無線マイコンやUSB Type-C対応マイコン向けの評価ツールなどが用意されています。また、ジャバ言語を使用して組み込みソフトウェアを開発できるソリューションなども、弊社パートナーより提供されております。以上がSTM32マイコンの主な開発環境のご紹介になります。ここからは今回の実習で使用する開発環境の紹介をしていきたいと思います。まずはSTM32キューブMXという組み込みソフトウェア開発支援ツールです。STM32キューブMXはPCにインストールして使用するツールになります。PCのGUI上で使用する製品、機能、ピン配置、クロック設定などを選択していただいて、コード生成ボタンを押しますと、設定内容が反映されたコードが自動的に生成されます。また、生成されるコードは、選択されたツールチェーンに対応するプロジェクトファイルの形式で生成されますので、コード生成後にそのまま統合開発環境を開いて開発を始められる仕組みとなっています。ここでSTM32キューブMXで生成されるコードの裏で用意されているコードの実態が、こちらの右側のSTM32キューブマイコンパッケージになります。このマイコンパッケージは、ハードウェア中小化レイヤーとミドルウェアの2つのレイヤーで構成されております。そのレイヤーの詳細がこちらになります。まず、ハードウェア中小化レイヤーで、我々は春と呼んでいるのですが、こちらはマイコンのデバイスドライバーに相当するコードになります。ファミリー間で共通のAPIが定義されていますので、例えば開発中、あるいは製品計画の中で、よりパフォーマンスの高い製品に移行したい、より消費電流の低い製品に移行したい、といった場面が出てきた場合、春をベースに開発されたコードであれば、比較的スムーズにSTM32ファミリー内の別の製品に移行することが可能となっています。一方、ミドルウェアのレイヤーですが、こちらにはTCPIPやUSBなどの通信インターフェースのスタック、グラフィックスやオーディオのライブラリー、ファイルシステムやリアルタイムOSなどのソフトウェアが含まれております。ハードウェア中小化レイヤーは、ファミリー間で共通のAPIが定義されているとお伝えしましたが、その一例をご覧いただきたいと思います。左側がコアテックスM0搭載のSTM32F0シリーズのI2CとSPIのハルドライバーの一部を示しています。一方、右側がコアテックスM4搭載のSTM32F4シリーズのI2CとSPIのハルドライバーの一部になります。ご覧のようにデバイス間で共通の関数が利用できますので、非常にご完成の高い設計のドライバーであることがわかります。このようにSTM32Cのマイコンパッケージにはさまざまなソフトウェアが含まれていますが、それに合わせてドキュメント類も複数用意されています。ミドルウェア関連のマニュアルやデモソフトのマニュアルなどがありますが、開発を始めるにあたって、ご覧いただきたい主なマニュアルは一番上のマニュアルと二番目のマニュアルになります。一番上のマニュアルは先ほどご紹介しましたハルドライバーの説明書で1800ページ以上ありますので、ハルの内容について調べる際に辞書的にご利用いただくタイプのマニュアルになります。一方、二番目のSTM32CF4の導入ガイドはSTM32Cパッケージの概要を説明しているマニュアルになります。30ページ程度のマニュアルですので、初めてこのソフトウェアパッケージを使いになる場合は、こちらの資料をご覧いただくことをお勧めします。次にハードウェアの説明に入ります。まずニュークリオボードですが、こちらは搭載されているマイコンのパッケージに応じて32ピンタイプ、64ピンタイプ、144ピンタイプの3種類のボードが用意されております。いずれのタイプもオンボードのデバッカーが搭載されておりますので、外好きのデバッカーをご用意いただく必要がございません。また、拡張性を持たせるために、RDOのコネクターやマイコンの信号線を全て取り出せるヘッダーピンが用意されています。その他の特徴としまして、ARMのエンベッドのオンラインリソースをご利用いただくことも可能です。ARMのエンベッドのウェブサイトに行きますと、対応のプラットフォームとして弊社のニュークリオボードが選択できるようになっております。今回の実習で使用するニュークリオボードは64ピンタイプのものになります。こちらがその外観ですが、上の部分がSTリンクV2-1というデバッカーの部分になります。そして、下側がマイコンのターゲットボードに相当します。このターゲット部分の真ん中にあるのが64ピンパッケージのマイコンになります。また、両サイドには拡張ヘッダーがありますが、内側のコネクターがRDのコネクター、外側のコネクターがMOLFOという弊社独自のピンヘッダーでターゲットマイコンの信号線を全て取り出せるヘッダーになります。通常、USBケーブルをニュークリオボードにさして、オンボードデバッカーを返してボード上のターゲットマイコンの開発を行いますが、実は、このオンボードデバッカーに搭載のジャンパーの設定を変更することで、外部にSWDのデバッカー用の信号線を取り出すことができます。その信号線を利用することで、STM32マイコンを搭載している外部のボードをターゲットボードとして開発を行うことができます。その場合、ニュークリオボード自体がスタンダーローのデバッカーとして機能しますので、ベッド外付のデバッカーをご用意する必要がなくなります。このようなニュークリオボードがSTM32マイコンのシリーズごとに用意されておりまして、現在58種類リリースされております。次に、ニュークリオボードのための拡張ボードの紹介です。ニュークリオボード用の拡張ボードはXニュークリオ、Xテンションニュークリオという名前で展開しておりますが、このようにニュークリオボードにスタッキングする形で使用します。一つのニュークリオボードに複数のXニュークリオをスタックして使用することも可能です。このような拡張ボードが現在53種類リリースされております。また、これらの拡張ボードとニュークリオボードを組み合わせて使用する際のソフトウェアパッケージも合わせて用意されております。従いまして、STM32マイコンを使用した製品開発をご検討の場合、弊社が用意するニュークリオボード、拡張ボード、ソフトウェアパッケージを使用することで、スムーズに開発を始めることができます。以上がSTM32マイコンの開発環境および今回の実習で使用するツールのご紹介になります。次に、今回の実習で使用するツールの動作確認をしていきたいと思います。実習で使用する開発環境ですが、ボードはSTM32F401が搭載の64ピンタイプのニュークリオボード。統合開発環境はIAR社のEWRも使用します。また、ソフトウェアライブラリーとしてSTM32CMXとSTM32CMF4を使用します。その他、ターミナルソフトのテラタームを使用します。実習を行うには、事前に次に上げる5点の準備が必要になります。1つ目は統合開発環境のインストールおよびアクティベーションです。アクティベーションにはライセンスの取得が必要になりますので、ネットワークのある環境で行う必要があります。2つ目はSTM32CMXのインストールです。STM32CMXと合わせてSTM32CMF4のファーメアパッケージも必要になります。3つ目はサンプルプログラムのコンパイル確認です。統合開発環境のアクティベーションが完了できていれば、コンパイルは正常に完了します。4つ目はターミナルソフトのインストールです。そして、最後にWindows 10より前のWindows OSをご利用の場合、バーチャルコンポートドライバーのインストールが必要になります。以上が事前準備の内容になります。これより、事前準備が完了していることを前提に説明させていただきます。それではここでサンプルプログラムを使用してツールの動作確認をしていきます。使用するサンプルプログラムは、GPIOを遂ぐしてLEDを点滅させるサンプルプログラムでSTM32 Cube F4のファームエアパッケージに含まれています。手順としましては、ボードの開封、ボードとPCの接続、STリンクデバッカーのドライバーのインストール確認、STM32 Cube F4ファームエアパッケージの保存場所の確認、最後にサンプルプログラムのコンパイル及び動作となります。ではボードを開封します。最初にプラスチックのケースの蓋を開きます。中のリフレットにはヘッダーピンのピンハイチなどが記載されております。実習の時にご利用いただければと思います。次にボードを取り出すのですが、ボードが固定されているところにプラスチックの出っ張りが左右2カ所あります。そこを左右に引っ張りながらプラスチックケースの裏から軽く押し出すと簡単にボードを取り出すことができます。ボードにはヘッダーピンが複数ありますので取り出す時に怪我をしないように気をつけてください。次に取り出したボードとPCをUSBケーブルで接続します。接続しますとボード側のUSBコネクターの横にあるLEDが点滅します。しばらくするとLEDの点滅が点灯に変わります。点灯に変わりますとPC側でオンボードのデバッカーのドライバーが正しく認識されたことになります。PC側にはドライバーのインストール完了のメッセージが表示されます。もしデバッカーのドライバーがインストールされていない場合統合開発環境のEWMのインストールフォルダーにドライバーがありますのでこちらを実行してください。STリンクウィーンUSBインストールドットバットというファイルが該当ファイルになります。次にSTM32QVF4のファーメアパッケージの展開場所を確認します。パッケージの展開場所はご使用のPC環境によって異なります。事前準備のご案内に従って設定しますとPC環境のユーザー名が日本語の場合パッケージの展開場所はCドライブの下のSTフォルダーとなります。PC環境のユーザー名がA数字の場合パッケージの展開場所はCドライブの下のユーザーズの下のユーザー名の下のSTM32QVフォルダーの下のレポジトリーフォルダーになります。事前準備におきまして正しく展開場所が設定できている場合STM32QVMXを起動してHELPメニューよりアップデータセッティングを選択することでパッケージの展開場所を確認することができます。実際にExplorerでパッケージの展開場所を確認するとこのようになります。STM32QVF4ファームやパッケージの展開場所が確認できましたら次に動作確認に使用するサンプルプログラムを開きます。該当のサンプルプログラムはSTM32QVF4のフォルダーの中のプロジェクトSTM32F401REニュークリオエグサンプルズGPIOGPIOIOトグルEWARMのフォルダーを順番に開いてください。ここで一つ注意点があります。プロジェクトのフォルダー内にボードことに複数のフォルダーが存在します。今回はSTM32F401REニュークリオというフォルダーを開きますがすぐ下にSTM32F410バツバツニュークリオという非常によく似た名前のフォルダーがあります。間違ってこちらのフォルダーを開きますと動作確認ができませんのでご注意ください。EWARMのフォルダーが開けましたらその中にproject.ewというファイルがあります。こちらがEWARM用のプロジェクトファイルになります。こちらをダブルクリックしてEWARMを起動します。ただし複数のEWARMのバージョンがインストールされている場合ファイルをダブルクリックで開きますと最後にインストールされたバージョンのEWARMが起動します。バージョン指定でEWARMを起動する場合はWindowsのスタートメニューから起動する必要がありますのでご注意ください。EWARMが起動しますとこのような画面になります。左側に選択されたプロジェクトのフォルダー3が表示されます。次にプロジェクトのビルドを行います。EWARMの画面の上側にあるプロジェクトメニューより全てを再ビルドを選んでください。そうしますと画面下側のステータス欄に現在のステータスが表示されます。最初にオブジェクトコードが削除されその後ビルド処理が行われます。処理が完了しますと最後にエラーとワーニングの数が表示されます。両方ともゼロであれば正しくビルドが完了したことになります。次に今ビルドして生成されたコードをターゲットマイコンにダウンロードしてデバッカーを起動します。EWARMの画面の上側にあるプロジェクトメニューよりダウンロードしてデバッカーを選んでください。または画面上側の丸い緑色のアイコンも同じ機能になりますのでこちらをクリックしていただいても結構です。プログラムがダウンロードされてデバッカーが起動しますとこのような画面になります。左側にプロジェクト3真ん中にコード右側に逆アセンブルコードが表示されます。また画面上側にはデバッグ用のツールバーが表示されます。デバッグ用のツールバーにはプログラムの実行、ブレイク、リセットなどの基本的な操作からステップオーバーやステップインなどのステップ実行系の機能などデバッグに便利なアイコンが複数用意されています。ではここでプログラムを実行してみましょう。白い丸のアイコンをクリックしてください。ボードをご覧いただきたいのですがマイコンの右上あたりのLEDLED2と書かれているところのLEDが緑色に点滅していればプログラムが正常に動作していることになります。いかがでしょうか。動作確認ができましたら最後にデバッグを停止します。デバッグ用ツールバーのブレイクボタンをクリックしてプログラムの実行を停止します。次にデバッグの中止ボタンをクリックしてデバッグを停止します。これで実習のための開発環境の動作確認を終了します。引き続き実習をお楽しみください。プレゼンテーションを最後までご覧いただきましてありがとうございました。