こんにちは、STMさんに開発エコシステムによる開発実習、 高性のマイコン編、M7とM4のハウンドシェイクテール近いについてお話ししたいと思います。この実習を通してSTMさんにの開発実習の流れをぜひ体験し、ご活用ください。 それでは始めましょう。実習2 M7とM4のハウンドシェイクテール近い本実習では、ARM Quartex M7をマスターとしてARM Quartex M4のコアを動作させて連動してエレチ化します。本実習の目的は、M7とM4のハードラセマ補機能を使用したハウンドシェイクを学ぶことです。使用する機材は、ヌークレアボードとボードに実装されている、 つに示すあたりにあるLEDのLED2とLED3を使用します。では、STMさんにQBMXを起動しましょう。STMさんにQBMXが起動したら、初期画面から、 ニューポロジェクトにある3つのボタンのうち、一番上のアクセス2 MCUセレフターをクリックしてください。ポップアップされたウィンドウ左側のフレーム内にあります、 シリーズはSTM32H7をLINEはSTM32H745755パッケージはLQFP144をそれぞれ選択します。そうしますと、右側のフレームにフィルターによって絞られた デバイスの一段を見ることができます。その中のSTM32H755Ziをダブルクリックします。では、実際に操作してデバイスを選択しましょう。プロジェクト画面が開きます。これより各種ピンの設定を行っていきましょう。PE1のピンを探してクリックします。すると、ポップアップウィンドウがあわれ、PE1に割り当てることができる機能の値段があわれます。今回、PE1はGPIO出力として使えますので、GPIOアウトプットを選択します。同様にPB14もGPIO出力に設定します。設定されたピンは乗り色に変わります。次に、ピンをコアテックスM7 M4どちらで使用するかを割り当てます。メキクリックし、1ランからピン・リザーブドを選択するとピンの割り当てを変更できます。PE1はコアテックスM7、PB14はコアテックスM4に変更します。設定されたピンは色が変わります。電源の設定をします。RCCのサプライソースをPWR Direct SNPSサプライに変更します。続いて、クロックの設定をしていきます。画面上部にありますクロックコンフィギュレーションのタブをクリックして開きます。開いた画面では、コアクロックやPLL、ペリフェラルに必要なクロックと全てのクロック設定がGUI上で行います。中で囲まれた箇所を480にしてエンターティーをします。しばらく時間かかります。M7コアが480MHzに、M4コアが240MHzになります。では、実際に設定しましょう。ここまでで、STM32 CUBE MX上での設定は完了です。プロジェクトマネージャータブを選択します。プロジェクトメニューで、プロジェクトの設定を行います。まず、初めにプロジェクトの名前を設定します。プロジェクトネームにプロジェクトの名前を設定し、プロジェクトロケーションにはプロジェクトを保存するルートエレクトリを設定します。ここで、重要な注意点です。プロジェクト名やプロジェクトを保存するフォルドのパスに、全角、半角スペース、感じかななどの2倍と文字を含めてはいけません。使うツールによってはパスが通らなくなり、プロジェクトをビルドする際にエラーになることが報告されています。デフォルトでは、ビルドに必要ない全てのファイルをプロジェクトフォルダーにコピーする設定になっており、プロジェクトを作るために、膨大な量のファイルがアクセスされ、PCのストレージを圧迫することになります。そこで、最上段の設定を2番目のCopy Only Necessary Library Filesに変更し、不必要なファイルのコピーを防ぎます。画面右上にありますGenerate Codeをクリックします。しばらくして、コード生成が完了すると、生成されたプロジェクトファイルを設定したツールチェーンで開くか、フォルダーを開くか、一旦修装するかの選択肢を訪ねてきます。では、実際にコード生成をして、プロジェクトファイルをEW ARMで開いてみましょう。EW ARMが起動したら、ビルドが通ることを確認します。プロジェクトメニューから、すべてを再ビルドを実行します。ビルド完了後、エラーやワーニングがないことを確認します。次に、ワークスペースをM4に切り替えます。ワークスペースから5VにCM4と記載のある方を選択します。ワークスペースを切り替えましたら、M4のビルドが通ることを確認します。プロジェクトメニューから、すべてを再ビルドを実行します。ビデオで、これまでの手順を確認したいと思います。メイン画面のアクセスとMCUセレクターボタンを押してください。Windows左側から、シリーズのSTM32H7チェックボックスを読んでください。LINEのSTM32H74575をチェックボックスをクリックしてください。パッケージのL9FP14インオンチェックボックスを横にしてください。Windows右下側からSTM32H755ZIをダブルクリックしてください。メイン画面のPINOUTコンフィレーションから、リーガーのデバイスのPIN選択画面から、PINの設定をしていきます。PE1 PINを左クリックして、GPIO OUTPUTを選択します。PE1 PINを右クリックして、PIN ReservationからCoreTex M7を選択します。PB14 PINを左クリックして、GPIO OUTPUTを選択します。PB14 PINを右クリックして、PIN ReservationからCoreTex M4を選択します。左側のシステムコアのRCCをクリックします。コンフィギュレーションパネルのパラメータセッティングタブからサプライソースをDirect SNPSサプライに変更します。次にクロックコンフィギュレーション画面に移ります。画面真ん中のクロック設定を480に設定します。クロックウィザードポップアップが開きましたら、OKボタンを押します。クロック設定にしばらく時間がかかります。クロック設定が完了しました。次にプロジェクトマネージャー画面に移ります。プロジェクト名目にプロジェクト名を設定します。プロジェクトを保存する場所をプロジェクトロケーションで設定します。ツールチェーンIDは、お使いのIDに合わせて選択してください。今回はEWMを使用しますので、EWMを選択してください。左側のコードジェネレーターボタンをクリックしてください。上側のHKM32CubeMCUパッケージ&MVDTソフトウェアパックスの項目をCopy Only the Necessary Library Filesに変更してください。画面右上のGenerateコードボタンを押してください。コードジェネレーションポップアップが開いた場合はオープンプロジェクトボタンを押すとEWMをプロジェクトファイルを開いた状態で起動することができます。EWMが起動したら、ワークスペースをCM7に切り替えます。ワークスペースウィンドウのコンボボックスから5日にCM7が付いている方を選択してください。プロジェクトメニューから全て押さえビルドをクリックしてください。ビルドウインドウ内にエラーワーニングが発生しないことを確認してください。ワークスペースをCM4に切り替えます。ワークスペースのウィンドウのコンボボックスに5日にCM4特輯のある方を選択してください。プロジェクトメニューから全て押さえビルドをクリックしてください。ビルドウインドウ内にエラーワーニングが発生しないことを確認してください。以上でCube MXによるコード生成は完了です。実装するプログラムはM7からスマホシグナルを送りM4のGPIOトグルタイミングを制御します。M7とM4の処理は同期したタイミングでGPIOのトグルを送り返しLH化させます。ここからユーザー処理を追加していきます。CM3にCube MXで生成したコードにはユーザーコードビギンとユーザーコードエンドの記載がありこのコメントの範囲内にユーザーコードを追加していきます。ここで追期したユーザーコードはサイドCube MXにてコード生成した場合でも放送されます。今回追期する場所は6箇所となります。まずはワークスペースをM7に切り替えます。ワークスペースを5日にCM7と記載のある方を選択します。ワークスペースを切り替えましたらM7のメイン.Cを開きます。ユーザーコードビギンPDの箇所へコードを追加します。ハードウェスマホのIDを定義します。ユーザーコードビギン3の箇所へコードを追加します。ハードウェスマホの取得、GPAの飛ぶ0.5秒の待ち、セマホの開放です。次にワークスペースをM4に切り替えます。ワークスペースから5日にCM4と記載のある方を選択します。ワークスペースを切り替えましたらM4のメイン.Cをきたきます。ユーザーコードビギンPDの箇所へコードを追加します。ハードウェスマホのIDを定義します。ユーザーコードビギン2の箇所へコードを追加します。セマホ通しの有効化、無効化です。ユーザーコードビギン3の箇所へコードを追加します。イベントのクリア、ストップモードへの移行、セマホのフラッグクリア、GPA用のトグルです。ワークスペースをM7に切り替えます。ワークスペースから5V2、CM7と記載のある方を選択します。プロジェクトメニューからMAKEをクリックしコンパイルします。ワークスペースをM4に切り替えます。ワークスペースから5V2,CM4と記載のある方を選択します。プロジェクトメニューからMAKEをクリックしコンパイルします。M4のコードをプロジェクト、ダウンロード、アプティブなアプリケーションのダウンロードでフラッシュに書いてみます ワーク スペースをm7に切り替えますワークスペースから5日にcm7と記載 のある方を選択しますプロジェクトメニューからダウンロード してデバッグまたはツールバージョンのアイコンよりダウンロードして デバッグをクリックしますダウンロードが完了するとデバッグ 画面に切り替わりますデバッグメニューから実行で実行しますld2とld3が交互に点滅しますそれでは実際のボード上でのledの 点滅の情報をご覧くださいld2とld3が交互に点滅します使用しているhsmのハルドライバー 関数は次の4つですhsmtake スマホ取得hsmrelease スマホ開放hsmactive notification スマホの通知有効果hsmactive notification スマホの通知無効果ですqvmxにて生成されたコードで使用 されているハルドライバーはドライバーズhtm32h7 ハルドライバーズフォルダーに格納されていますドライバーの使用方法に関しては ガイトウソースコートのヘッダまたはユーザーマニュアルum2217 description ofhtm32h7 ハルドライバーズリクサイがありますデバッグメニューから デバッグの停止をクリックしデバッグモードを終了します ワイルメニューからワークスペースの保存をクリックし保存しますファイルメニューから終了でewmを終了します htm32hbmxもクローズボタンを押して終了しますこれで実習2を終了します ありがとうございました