2017年04月16日

LPC1768用イーサネット接続キット

mbed_ether.jpg


最近、まとまった時間がなかなか取れなくて停滞気味です。
今日は少しの時間で、以前購入したままになっていたLPC1768用のEthernet接続キットを組み立てました。

mbed LPC1768用イーサネット接続キット - スイッチサイエンス

以前も書いたとおり、mbedはセキュアなIoTをやるには最低限必要なスペックかなと思っていますので、そのうちネット接続も試したいところです。

とはいえ、現時点ではすでにLPC1768よりもESP32のほうがスペック的には上ですね。
LPC1768は4年前のボードなので(私が購入したのも2年半前です)、当たり前ではありますが。
posted by boochow at 23:15| Comment(0) | NXP | このブログの読者になる | 更新情報をチェックする

2016年08月21日

ARMの開発環境「MDK」と「μVision」でmbedのデバッグを試してみた

夏休みもそろそろ終わりですが、最後にARMの開発ツール「MDK」とそのデバッガ「μVision」を試してみました。

ARM(が買収したKeil)はμVisionとコンパイラやライブラリその他もろもろのツールを合わせて「MDK Microcontroller Development Kit」として提供しているようです。
mbedのクラウド上で作成したコードも、MDK用にエクスポートすれば、ローカルでデバッグすることができます。

このとき、ボードがデバッグ用のインタフェース「CMSIS-DAP」をサポートしていれば、ボード上でコードを実行しながらステップ実行やトレースなどの操作を行うことができます。
幸い、私のボード「mbed LPC1768」はCMSIS-DAP対応のファームウェアが提供されていましたので、このデバッグ機能を試用してみました。

既に先人のレポートがネット上にありましたので、それを参照しつつ進めました。
参考にしたのは以下の2つです。

μVision4でデバッグ! | mbed
mbed LPC1768をMDK-ARMでデバッグ - Qiita

1つ目の記事はやや古く、2012年9月の日付です。文中ではμVisionのバージョンが4になっていますが、現在はバージョン5が提供されています。
2つめの記事は2016年1月のもので、1つ目の記事を参照しています。バージョン5を使う場合のはまりどころが記載されており助かりました。


やることは、大まかに言えば

MDKのダウンロード&インストール
MDK v4 Legacy Support for Cortex-M Devicesのダウンロード&インストール
mbed LPC1768のファームウェアをアップデート

が準備で、そのあと

・mbed用に書いたコードをローカル環境へエクスポート
・MDKのデバッガの設定
・コンパイルして実行

という流れになります。


準備のところは飛ばします。ダウンロードしてインストールするだけですので・・・
なお、MDKをダウンロードするとARMからMDKの日本語スタートアップガイドへのリンクが送られてきますので、メールアドレスはきちんと入力しましょう。


インストールができたら、まずはmbedのファイルをローカルへエクスポートします。
対象はとりあえず先日動作確認したLチカにしました。

右クリックメニューから、プログラムのエクスポートを選びます。

uvision01.png


ボードと開発環境の選択が出ます。
開発環境としてKeil uVision4を選んでおきます。
(後述しますが実際にはUVision5でも大丈夫なようです。)

uvision02.png


ダウンロードしたZIPファイルを展開すると、こんな感じになっています。

uvision03.png


.uvprojファイルをダブルクリックするとMDKが立ち上がります。

MDK v4 Legacy Support for Cortex-M Devicesをインストールしていないと、下図のようなダイアログが出ますのでインストールしましょう。

uvision04.png


プロジェクトを開いた画面はこのようになっています。
普通のIDEですね。

uvision05.png


まず、「Options for target...」をクリックします。

uvision06.png


そして、Debugタブの「Settings...」ボタンからデバッガの詳細設定に入ります。

uvision06b.png


詳細設定画面で、アダプタを「MBED CMSIS-DAP」に指定します。
また、Debugの設定で「HW RESET」を選び、「Stop after bootloader」をオンにします。

uvision10.png


これで準備完了です。
プロジェクトのリビルドボタンを押してビルドします。

uvision07.png


プロジェクトフォルダの中に.binファイルができますので、これをmbedデバイスのフォルダへコピーします。

デバッグは、ドコモのロゴを思い出させる虫眼鏡のアイコンをクリックします。

uvision08.png


ここで、上で説明した「Stop after bootloader」をオンにしていないと、「The CoreSight debug unit in the target device does not react.」とエラーが出てデバッグが終了してしまいます。
私の環境だけかもしれませんが・・・。

uvision09.png


デバッガが起動すればこんな画面が出てきます。
1行ずつのステップ実行などもできます。

uvision11.png


とりあえず動作までは確認できました。
無償版ではオブジェクトサイズが32KBまでという制限があるので、あまり大きなものは作れませんが、趣味で使うなら十分な気がします。


以下オマケです。

mbedからのエクスポートの際、UVision5も選択することができますので、やってみました。

uvision13.png


プロジェクトファイルを開くと、「LPC1700のパッケージが必要」とメッセージが出るので、インストールします。

uvision12.png


あとは基本的に同じです。
デバッガの設定も忘れずに行います。
posted by boochow at 18:42| Comment(0) | NXP | このブログの読者になる | 更新情報をチェックする

2016年08月17日

mbedの使いどころはIoT+TLS?

昨日ためしに動かしてみたmbedですが、ArduinoやESP8266と比べてどう使うのがいいのか、まだつかめていません。
mbedのハードウェアはクロックが100MHzクラス、RAMが数十KBと、Arduinoよりも1桁上のレンジですが、Raspberry Piよりも1桁下のレンジです。
mbedならできそうだけどArduinoだと難しい処理、というと、やはりネットワーク系でしょうか。

LPC1768CPU.jpg


Ethernetパケットは1.5KBありますから、Arduinoで扱うのはやや無理があります。
ESP8266は何とかTCP/IPが動作しますが、現時点ではSSL/TLSは古いTLS1.1までしかサポートされていません

AmazonのAWS IoTはTLS1.2を必須としています。
製品寿命がPCよりも長いと予想されるIoTですから、現時点で既に過去のものになっている規格は推奨できないのも頷けます。

Security and Identity for AWS IoT - AWS IoT

その点、mbedOSではARMが買収した「PolarSSL」がmbed用に提供されており、これはTLS1.2をサポートしています

SSL Library mbed TLS / PolarSSL: Download for free or buy a commercial license

つまりセキュリティをちゃんと考えた組み込みシステムのためのプラットホームを選定するなら、mbedは一応HTTPSが安全に使えるらしいので有力候補になりそう、ということです。
(他の候補の筆頭はLinuxになるでしょう。その場合は電力供給が課題になりますが・・・)


ただ、mbedOSのSSLのサンプルを見ると、サポートしているボードは現時点「FRDM-K64F」だけのようです。
mbedOSのページにある例題をLPC1768で試してみたところ、「authcrypt」は動いたものの「benchmark」は動きませんでした。
ですので、mbedならmbed-TLSが必ず使える、というわけではなさそうです。

mbed-os-example-tls/README.md at master ・ ARMmbed/mbed-os-example-tls ・ GitHub

結局、趣味でIoTというかネット接続機能があるデバイスを作ろうとすると、セキュリティを考慮するならTLSが必要なのでmbedかRaspberry Pi、そこまでセキュリティは重視しないというのであればお手軽にESP8266、となりそうです。
IntelもGalileoとかEdisonとか出していますが、Galileoは生産終了だしEdisonはちょっと価格がこなれてこないですね。

AppleやGoogleがHTTPSのデフォルト化を強力に推進していますので、世の中はなんとなくそちらへ向かいつつあります。しかし、安かろう悪かろうが勝つ場合もあるのがこの世界ですので、まだまだ予断を許しません。
posted by boochow at 00:33| Comment(0) | NXP | このブログの読者になる | 更新情報をチェックする

2016年08月15日

今さらながらmbedを動かしてみた

先日、Maker Faire Tokyo 2016を見に行ってきました。
とても楽しかったのですが、ふと昨年のMFTで購入したmbed用ボードをまだ動かしていなかったことを思い出しました。
当時はArduinoで遊んでいましたので、それが済んだらmbedも試してみようと思っていたのですが、実際にはESP8266のほうへ行ってしまいました。

そんなわけで1年ほったらかしにしていたボードですが、最近はmbedOSの話題も気になってはいますので、今さらながら動かしてみました。
lpc1768.jpg


mbedでの開発の特徴は、

・開発環境をPCにインストールしなくても良い(オンラインコンパイラ)
・ボードがUSBストレージになっており、プログラムの書き込みはオブジェクトをストレージにコピーするだけ
(コピーした後にリセットボタンを押せば、ストレージの最新のオブジェクトがマイコンに書き込まれる)

というあたりです。

まずは下記の記事を見ながら、mbedのサイトに登録してLチカを動作させました。
mbed-dev.png

ユーザ登録から始めても、せいぜい15分くらいでLチカ完了です。
これはお手軽でいいですね。

IoTをかじってみよう(1) 〜mbedの概要とオンラインIDEの使い方 (1/3):CodeZine(コードジン)

この連載は面白そうなのですが、とりあえずはもっと手軽な例題を、ということでオンラインコンパイラでいくつか試してみました。

まずは話題の?mbed OSを使用してのLチカを、下記の記事を参考に動作確認。

mbed OS 5でLEDを光らせてみる | スイッチサイエンス マガジン

そういえばこのLPC1768ボードは、MFT2015でスイッチサイエンスさんのブースで買ったのでした。

ボード単体ではLEDくらいしか入出力が付いていないので、大したことはできません。
Arduinoでおなじみのシリアルポートでの通信はどうなっているのだろう、と調べてみたところ、ちゃんとWindows用のドライバが用意されていることが分かりました。

こちらの記事を参考に、

mbed(4) USBポートでシリアル通信 | wsnakのブログ

こちらからドライバをダウンロードしてインストールします。

Windows serial configuration - Handbook | mbed

インストールすると、自動でLPC1768が認識され、USBシリアルポートがインストールされました。
ポートはCOM3になっています。

mbed-serial.png


通信ソフトは、今回は「PuTTY」を使ってみました。

Download PuTTY - a free SSH and telnet client for Windows

シリアルポートでの通信もサポートされています。シリアルポートで使うには、セッション開始画面で「Connection Type」に「Serial」を指定し、「Serial」の設定画面で使用するCOMポート(私の場合は先ほどの通りCOM3です)を指定します。

putty1.png
putty2.png


シリアルポートとの通信は、マニュアルがこちらにあります。

Serial - Handbook | mbed

次に、下記の記事にあった、アナログ入力の読み取りとファイルへの出力を試してみました。

おまけ (mbedを始めましょう!("Let's get started!" in Japnaese)) | mbed

pin20から値を100回取得し、CSVファイルに吐き出すというものです。
USBストレージがボードと一体化しているので、記録したファイルをそのままPCから読み取れるのは便利です。
ちなみにLPC1768のピン配列は下記のページなどに掲載されています。
pin20は、上の写真で言えば左上の角の位置になります。

mbed LPC1768 - スイッチサイエンス
mbed LPC1768 | mbed

pin20を触ったり離したりしてデータを取り、グラフ化してみました。

mbed_test.png



mbedですが、初日の感想としては、なかなかお手軽で教育用などに良さそうです。

オンラインコンパイラを使う場合は、個々人の環境依存性がほとんどないので、一度に多人数を教える場合のトラブルは少ないのではないでしょうか。
mbed対応のボードはたくさんありますが、使用しているボードにあわせた設定をオンラインコンパイラ側でやってくれるので、少なくとも最初の一歩のところでは敷居が低いと思います。
ネット上の既存のプロジェクトをそのままインポートして使える点も、教育用には良さそうです。

mbed OSはまだ今回はLチカを試してみただけですので、実際のところどの程度使えるものなのか、もうちょっと調べてみようと思います。
posted by boochow at 18:16| Comment(0) | NXP | このブログの読者になる | 更新情報をチェックする
人気記事