Mbed(10)-AD変換、DA変換

前回はは、シリアル通信を行う機能を構築しました。シリアル通信は、NUCLEO-F44REのUSB端子とPCのUSB端子を接続して行います。PC側から送信された文字をNUCLEO-F446REはエコーバックします。前回の内容は下記のサイトを参考にしてください。

Mbed(9)-シリアル通信

今回は、AD変換とDA変換を行いたいと思います。主な機能は下記の2つです。

  • AD変換した値をシリアル通信で1sec毎に送信します。
  • AD変換した値をDA変換して出力します。

Mbed対応ボードは、NUCLEO-F446REを使用します。ハードウェアはPC(Intelプロセッサ)、OSはUbuntuです。開発環境は下記のとおりです。

  • Visual Studio Code
  • GNU Arm Embedded Toolchain
  • opneOCD

それでは、機能を構築していきたいと思います。まずは、新規プロジェクトの作成です。新規プロジェクトの作成方法は、下記のサイトを参考にしてください。

Mbed(5)-GNU Arm Embedded Toolchain + opneOCDを使用してMbed対応ボード動作確認

Mbed(9)-シリアル通信

前回は、ソフトウェア割り込みを使用した機能を構築しました。ソフトウェアトリガ割り込みを、Timerの割り込みのタイミングで発生させて、ソフトウェアトリガ割り込みの割り込み関数で、LEDの点灯消灯を行い、LEDを点滅さました。前回の内容は下記のサイトを参考にしてください。

Mbed(8)-ソフトウェア割り込み処理

今回は、シリアル通信を行いたいと思います。シリアル通信は、NUCLEO-F44REのUSB端子とPCのUSB端子を接続して行います。PC側から送信された文字をNUCLEO-F446REはエコーバックします。

また、NUCLEO-F446は文字を受信するたびに、LEDのON、OFFをきりかえるようにします。開発環境は下記のとおりです。

・Visual Studio Code
・GNU Arm Embedded Toolchain
・opneOCD

それでは、機能を構築していきたいと思います。まずは、新規プロジェクトの作成です。新規プロジェクトの作成方法は、下記のサイトを参考にしてください。

Mbed(5)-GNU Arm Embedded Toolchain + opneOCDを使用してMbed対応ボード動作確認

Mbed(8)-ソフトウェア割り込み処理

前回は、STM32F446REしたTimer割り込みの機能を構築しました。、Tickerクラスを使用した、等間隔割り込みでは、5usec間隔の割り込みに対応できないということで、周辺機器の設定を変更するレジスタを直接変更して、5usec間隔の割り込み機能を構築しました。前回の内容は下記のサイトを参考にしてください。

Mbed(7)-レジスタ設定によるTimer割り込み

今回は、ソフトウェア割り込みを使用した機能を構築したいと思います。ソフトウェア割り込みは特定のコードを記述することで、指定した割り込みをそのコードをトリガとして割り込みを行うことができます。このソフトウェア割り込みを使用して、LEDを点滅する機能を構築したいと思います。ソフトウェアトリガ割り込みを、Timerの割り込みのタイミングで発生させて、ソフトウェアトリガ割り込みの割り込み関数で、LEDの点灯消灯を行い、LEDを点滅させたいと思います。目視でもわかりやすいように100msec間隔でTimer機能を設定します。Mbed対応ボードは、NUCLEO-F446REを使用します。ハードウェアはPC(Intelプロセッサ)、OSはUbuntuです。開発環境は下記のとおりです。

  • Visual Studio Code
  • GNU Arm Embedded Toolchain
  • opneOCD

それでは、機能を構築していきたいと思います。まずは、新規プロジェクトの作成です。新規プロジェクトの作成方法は、下記のサイトを参考にしてください。

Mbed(5)-GNU Arm Embedded Toolchain + opneOCDを使用してMbed対応ボード動作確認

Mbed(7)-レジスタ設定によるTimer割り込み

前回は、Tickerクラスを使用して、LEDを点滅させる機能を構築しました。Mbed対応ボードは、NUCLEO-F446REを使用しました。前回の内容は下記のサイトを確認してください。

Mbed(6)-Tickerを使った割り込み処理

どこまでの時間間隔に対応できているのか試してみたところ、Tickerの割り込みを10usec毎に発生させた場合は、下記のように10usec毎にLDのON、OFFがきりかわりました。

Tickerの割り込み間隔を5usecにした場合は、下記のように指定した時間間隔とおりにON、OFFがきりかわりませんでした。

これは、Tickerクラス(Mbedライブラリ)に汎用性を持たせるため、クラス内の処理が大きくなっているではないかと推測しました。この5usec間隔を達成するためには、周辺機器の設定を変更するレジスタを直接変更して、機能を構築する必要がありそうです。

今回は、周辺機器の設定を変更するレジスタを直接変更して、5usec間隔で割り込みが発生するように機能を構築したいと思います。それでは、機能を構築いきたいと思います。まずは、新規プロジェクトの作成です。新規プロジェクトの作成方法は、下記のサイトを参考にしてください。

Mbed(5)-GNU Arm Embedded Toolchain + opneOCDを使用してMbed対応ボード動作確認

Mbed(6)-Tickerを使った割り込み処理

前回は、「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」の開発環境を使用して、Mbedボードの動作確認を行いました。Mbed対応ボードは、NUCLEO-F446REを使用しました。前回の内容は下記のサイトを確認してください。

Mbed(5)-GNU Arm Embedded Toolchain + opneOCDを使用してMbed対応ボード動作確認

今回は、Timer処理機能を構築したいと思います。Mbedライブラリには、Tickerというクラスが用意されています。このクラスを使用すると指定した時間間隔で割り込みを発生することができます。このTickerクラスを使用して、LEDを点滅させる機能を構築したいと思います。Mbed対応ボードは、NUCLEO-F446REを使用します。ハードウェアはPC(Intelプロセッサ)、OSはUbuntuです。開発環境は下記のとおりです。

  • Visual Studio Code
  • GNU Arm Embedded Toolchain
  • opneOCD

それでは、Tickerクラスを使用して、LEDを点滅させる機能を構築していきたいと思います。まずは、新規プロジェクトの作成です。新規プロジェクトの作成方法は、下記のサイトを参考にしてください。

Mbed(5)-GNU Arm Embedded Toolchain + opneOCDを使用してMbed対応ボード動作確認

Mbed(5)-GNU Arm Embedded Toolchain + opneOCDを使用してMbed対応ボード動作確認

「Visual Studio Code + Platform IO」開発環境を使用して、Mbed対応ボード(NUCLEO-F446RE)の動作確認をしました。前回の内容は下記のサイトを参考にしてください。

Mbed(4)-PlatformIOを使用してMbed対応ボード動作確認

今回は、「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」の開発環境を使用して、Mbedボードの動作確認を行いたいと思います。Mbed対応ボードは、NUCLEO-F446REを使用します。ハードウェアはPC(Intelプロセッサ)、OSはUbuntuです。

新規プロジェクトから作成して、LEDを点滅する機能を構築します。LEDの点滅は100msec間隔で行いたいと思います。まずは新規プロジェクトを「空のプロジェクト」のテンプレートで作成して機能を構築してみたいと思います。後ほど、用意されているテンプレートも使用して動作確認もしてみたいと思います。それでは、LEDを点滅する機能を構築していこうと思います。

まずは、新規プロジェクトの作成です。新規ボタンを選択します

下記のような画面が表示されるので、プラットフォームから「NUCLEO-F446RE」を選択、テンプレートから「空のプログラム」を選択、任意のプログラム名を入力してOKボタンを押します。

下記のように空のプロジェクトが作成されます。

Mbed(4)-PlatformIOを使用してMbed対応ボード動作確認

「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」開発環境をRaspberry PI上に構築しました。前回の内容は下記のサイトを参考にしてください。

Mbed(3)-Raspberry PIにMbed開発環境構築

今回は、「Visual Studio Code + Platform IO」の開発環境を使用して、Mbedボードの動作確認を行いたいと思います。Mbed対応ボードは、NUCLEO-F446REを使用します。ハードウェアはPC(Intelプロセッサ)、OSはUbuntuです。

新規プロジェクトから作成して、LEDを点滅する機能を構築します。LEDの点滅は100msec間隔で行いたいと思います。後ほど、「Project Examples」を使用して動作確認もしてみたいと思います。それでは、LEDを点滅する機能を構築していこうと思います。

まずは、新規プロジェクトの作成です。下記画面の「+ New Project」を選択します。

Mbed(3)-Raspberry PiにMbed開発環境構築

前回、UbuntuにMbed開発環境を構築するために下記のアプリケーションをインストールしました。

  • Visual Studio Code
  • GNU Arm Embedded Toolchain
  • opneOCD

前回の内容は下記のサイトを参考にしてください。

Mbed(2)-UbuntuにMbed開発環境構築

UbuntuにMbedの開発環境をインストールできたのであれば、Raspberry PIにもインストール可能ではということで、下記の2つの環境のインストールを試してみました。

  • Visual Studio Code + Platform IO
  • Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD

「Visual Studio Code + Platform IO」の開発環境ですが構築することはできました。しかし、Mbedの新規プロジェクトを作成するとエラーが発生してしまいました。こちらに関してですが、まだ解決できていません。Arduinoの方は新規プロジェクトを作成できるのですが、Mbedがなぜかできません。インストール自体はスムーズにいったのですが・・・。

今回は、前回同様、「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」開発環境の構築を行っていきたいと思います。Raspberry PI上に開発環境を構築していきたいと思います。今回は2種類のOSに開発環境を構築していきたいと思います。一つ目は、「Raspberry PI OS」、二つ目は、「Ubuntu Server 20.04」です。まずは、「Raspberry PI OS」に開発環境を構築してみたいと思います。

Mbed(2)-UbuntuにMbed開発環境構築

前回下記のMbed開発環境を試用してみました。

  1. Mbed Compiler Workspace Management(オンライン環境) 
  2. Mbed Studio(オフライン環境)
  3. Visual Studio Code + Platform IO(オフライン環境)
  4. Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD(オフライン環境)

前回の内容は下記のサイトを参考にしてください。

Mbed(1)-開発環境

Mbedの開発環境をいろいろと試してみましたが、私としては、「Visual Studio Code + Platform IO」 or 「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」をLinux環境で使用しようと思っております。基本的には、「Visual Studio Code + Platform IO」を使用して、Web上のプロジェクトファイルを参照したい場合は、「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」を使用しようと思います。

「Mbed Compiler Workspace Management」、「Mbed Studio」、「Visual Studio Code + Platform IO」の開発環境のインストールは、Linux環境でもあまり悩む点もなくインストールできると思います。とはいうものの、「Visual Studio Code + Platform IO」のインストール際には、Pythonをインストールするのだが、必要なものがインストールされなかった場合もあるので注意が必要です。

今回は、ちょっとややこしい「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」開発環境の構築を行っていきたいと思います。それでは、開発環境を構築していきたいと思います

まずは、Visual Studio Codeを下記のサイトからダウンロードします。

https://code.visualstudio.com/download

Mbed(1)-開発環境

今回は、Mbed(エンベッド)が提供するプロトタイプ開発用ボード、またその開発ボードのプログラミング環境を使用したいと思います。MbedはIoTのためのプラットフォーム、OS、ツールといったシステムを迅速に開発することを目的としてるようです。

以前、評価ボードは、NUCLEO-F446REを使用しましたがこちらもMbedに対応しています。今回はNUCLEO-F446REを使用して、Mbedの開発環境を検討していきたいと思います。

開発環境を調べた結果、以下の4つを試用してみることにしました。

  1. Mbed Compiler Workspace Management(オンライン環境) 
  2. Mbed Studio(オフライン環境)
  3. Visual Studio Code + Platform IO(オフライン環境)
  4. Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD(オフライン環境)

下記のように比較してみました。

  コンパイラ コンパイル速度
※Windows
コンパイル速度
※Linux
デバッグ 開発環境
構築
1 Arm Compiler ×
2 Arm Compiler ×
3 GCC Arm ×
4 GCC Arm

1.Mbed Compiler Workspace Management

まずは「Mbed Compiler Workspace Management」です。こちらはオンラン環境となっており、ユーザ登録を行えば無料で利用できます。下記サイトから使用できます。

https://ide.mbed.com/compiler/

オンライン環境となっているので、開発環境をローカルPC上にインストールする必要もなくすぐに利用できます。PCのスペックにも左右されないのでよいです。通信環境には影響するかもしれません。Windows環境、Linux環境ともに問題なくコンパイルできます。難点はデバッグができないところです。

2.Mbed Studio

「Mbed Studio」は、オフラインの開発環境です。Mbedから提供されている開発環境で、無料で利用できます。開発環境の構築も容易です。下記よりダウンロードできます。

https://os.mbed.com/studio/

こちらは、「Mbed Compiler Workspace Management」で行えなかったデバッグを行うことができます。とても便利です。残念なことに、Windows環境では、コンパイルに非常に時間がかかります。私の環境では、30分~40分はかかっていたと思います。一度コンパイルしてしまえば、次回コンパイルは早くなりますが、Build Profileを変更するとまたコンパイルに時間がかかる状態になってしまいます。おそらくmbed osをコンパイルすることに主に時間がかかっているのだと思います。Linux上でコンパイルすれば、数分でコンパイル可能です。また、プロジェクトを作成方法を工夫しないと毎回mbed-osをダウンロードしてくるので注意が必要です。mbed-osのサイズは1GB弱あります。こちらは、mbed os5、mbed os6は対応していますが、mbed os2は対応していません。そのため、参照したいコードがmbed os2で作成してあると読み込むことができなかったです。

3.Visual Studio Code + Platform IO

「Visual Studio Code + Platform IO」は、オフラインの開発環境です。Visual Studio Code をインストールして、拡張機能からインストールすることができます。プロジェクトの作成も容易に行うことができ、デバッグ処理もすることが可能です。余談になりますが、Arduinoの開発も行うことができます。操作性もよく、プロジェクト作成からデバッグまでの流れもわかりやすいです。こちらも「Mbed Studio」同様で、Windowsでコンパイルを実行すると非常に時間がかかります。コンパイル完了までに1時間以上かかったと思います。一度コンパイルしてしまえば、次回コンパイルは早くなりますが、Build Profileを変更するとまたコンパイルに時間がかかる状態になってしまいます。こちらもLinux環境であればコンパイルは数分で完了します。Platform IOから参照できるProject Examplesであればよいのですが、Web上で参照したいコードを読み込む方法をまだ見つけられていません。Visual Studio Codeに読み込むことはできたのですが、コンパイルするためのファイルの参照パスを定義する方法が一つずつ行う方法はわかったのですが、まとめて定義する良い方法を見つけれませんでした。

4.Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD

「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」はオフライン開発環境です。こちらは、「Mbed Compiler Workspace Management」からエクスポートされたプロジェクトファイルを読み込むこともできます。Linuxでは、コンパイルも数十秒で完了します。プロジェクトは、「Mbed Compiler Workspace Management」で作成しておいて、それをエクスポートして使用すればよいと思います。デバッグ処理も可能です。ただし、コンパイル、デバッグともにインポートしたデータを少々修正しなければ動作しないので注意が必要です。また、インストール作業も少々ややこしかったところもあります。

Mbedの開発環境をいろいろと試してみましたが、私としては、「Visual Studio Code + Platform IO」 or 「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」をLinux環境で使用しようと思っております。基本的には、「Visual Studio Code + Platform IO」を使用して、Web上のプロジェクトファイルを参照したい場合は、「Visual Studio Code + GNU Arm Embedded Toolchain + opneOCD」を使用しようと思います。また、Linux環境として、今回は「Ubuntu」を使用しましたが、RaspberryPi等で環境も構築してみたいと思います。