要約:ネットワークやインターネットに接続されていない、制御、レギュレーション、およびデータ通信の各システムを設計することは、高速道路ではなく周辺道路で車を運転するようなものです。このアプリケーションノートでは、革新的な8ビットネットワークマイクロコントローラ(マキシムのDS80C400)を使用して、安価な産業用アプリケーションのためのウェブ接続設計の詳細について説明します。
はじめに
今日、ネットワークによってシステムサービスとケーブル敷設が大幅に簡素化されたため、ますます多くの機能がイーサネット経由で実施されるようになっています。特に簡単なタスクを実施するためにイーサネット経由で導入されるマイクロコントローラのアプリケーション数が増加しています。たとえば、ワイヤレスアクセスポイント、セキュリティ監視用のモニタリングカメラ、プリンタサーバ、およびルータなどがあります。
ソフトウェアの負担とコストをさらに低減するためには、イーサネットのインタフェースとマイクロコントローラのコアチップ内のTCP/IPスタックとの統合が必要であることは明らかです。この統合は、すでに8ビットのネットワークマイクロコントローラDS80C400で実現されています。
DS80C400マイクロコントローラは、上述のアプリケーションのすべてに適しています。このようなアプリケーションは、24時間休みなく稼動しているため、理想的にはエネルギをほとんど消費しないことが望まれます。DS80C400を使えば、Voice-over-IP (VoIP)やインターネット電話などのアプリケーションを簡単に実現することができます。また、インターネットまたはホームネットワークを経由して、家庭のエアコンや暖房システムも制御することができます。DS80C400を使用することによって、システムの装置ごとに高価なシングルブロックを設置する必要がありません。代わりにDS80C400によって、システム内のあらゆるPCが性能データを表示し、制御を実施することができるようになります。装置は、既存のネットワーク(ホーム、企業、またはインターネット)のみに接続され、ネットワーク上のどのPCでもサービスやインストールを実施することができます。
このマイクロコントローラを使えば、多くの新しい手法を用いてネットワーク性能を目で見てモニタすることができるようになります。リアルタイムで複数の場所の温度データを収集して表示することもできれば、さまざまな温度や空調のサイクルをカラーグラフィックで表示することもできます。研究開発エンジニアは、その他いくつかのモニタリングと制御の可能性を活かした開発が可能となり、各装置にコンバータや高価なサーボアクチュエータを追加する必要がありません。DS80C400はイーサネットのリンクを通じて公共のインターネットに接続することができるため、オペレータが実際にどこにいるかは重要でなくなります。リモートメンテナンスや長距離メンテナンスを容易に行うことができます。
低電力
DS80C400(図1 )は、低消費電流で外付け回路が最小限であることを特長とする、単純であるけれども効率のよいアプリケーションを実現することを目的として設計されました。リファレンス設計(このリファレンス設計でDSTINIm400とDSTINIs400がともにDS80C400を評価する)には、イーサネットと2つのシリアルポートに加えて、1MBのRAMと1MBのフラッシュメモリが含まれています。TINI-OSとウェブサーバのオペレーティングシステムの両方が29.4912MHzのクロック周波数で稼動しているときの総電力消費はわずか0.5Wです。
大きな画像を見る
図1. DS80C400ネットワークマイクロコントローラのアドレスとデータバス
マイクロコントローラには電源管理モード(PMM)があり、このため内部クロックは256で分割されています。このPMMによって、マイクロコントローラは極めて低速かつ超低消費電流(アイドルモードの消費電流よりも低い)での動作が可能となり、途切れることなく命令を継続することができます。割込みコマンドが発行されたとき、またはシリアルポートの1つからデータを受信したとき、マイクロコントローラは自動的に通常モードに戻ります。大量に電力を消費する内部タイマはPMMで引き続き動作しますが、タイマのクロックレートは4ではなく1024で分割されています。マイクロコントローラはこの低エネルギ消費を実現する一方、8051コアプロセッサには1.8Vで、各種内部I/Oドライバ(5V耐性)には3.3Vでエネルギを供給しています。
最大18.75MIPS (Million Instructions per Second:1秒当り百万命令)
DS80C400は、最大クロック周波数75MHzにて、最大18.75MIPSの速度でコードを実行します。この速度は、イーサネット経由で非圧縮オーディオのデータストリームを受信し、ディジタル-アナログコンバータ(DAC)で再度送信するのに十分です。このMIPS速度によって、DS80C400は、低解像度または低リフレッシュレートの監視カメラにも適しています。ただし、DS80C400は、ファイルサーバやネットワーク対応の記録型DVDドライブなど、連続した高スループットを必要とするアプリケーションでの使用には適していません。
インタフェースと周辺機器
DS80C400 (図2 )には、合計64のディジタルI/Oポートのインタフェースに対して、複数の選択肢(CAN 2.0Bコントローラ、3つのシリアル1-Wireフルデュープレクスハードウェアポート、および8つの双方向8ビットポートなど)が用意されています。オンチップの数値演算アクセラレータによって、DS80C400は16ビットおよび32ビットの乗算、除算、桁送り、および正規化が可能です。このデバイスは、16MBのアドレス空間、22のアドレスイネーブル、および4つの内部エンコード式チップセレクトイネーブルを備えており、ハーフデュープレクスとフルデュープレクスがサポートするIPv4 (Internet Protocol version 4)とIPv6 (Internet Protocol version 6)の10/100Mbイーサネット-MACを統合しています。送受信時のCPU負荷を低減するため、マイクロコントローラはバッファ付きの8kBパケットデータメモリを内蔵しています。
図2. DS80C400のブロック図
64kBの内蔵ROMによって、即座に接続されて、ネットワークのサポートが可能となります。ROMには、DHCPとTFTPを併用するイーサネット接続を経由してネットワークブートを実施するファームウェアが格納されています。ROMのファームウェアはUDP、TCP、DHCP、ICMP、およびIGMPをサポートしており、すべてのアプリケーションにアクセス可能なTCP/IPスタックを実装しています。オプションとして、48ビットノードのアドレスチップである、IEEEに登録済みのDS2502-E48からMACアドレスを取得することができます。
Java™
8051コアのOSをベースにした無料のJavaオペレーティングシステムが、DS80C400で利用することができます。いくつかのサンプルプログラムを下記のTINI製品サイト からダウンロードして利用可能です。JavaオペレーティングシステムTINI OSも同じサイトから入手可能で、これにはFTPやTelnetなどの標準コンポーネントを備えたSLUSHシェル(UNIXに似たシェル)が搭載されています。他の簡単なサンプルプログラムもTINIウェブサイトからダウンロードして利用することができます。たとえば、DS1920 Temperature i Button (1-Wireプロトコルを使用してディジタル出力を行う温度センサ)を用いて温度を測定する、ウェブサーバ用のJavaソースコードの全体を利用して、HTMLページに温度を表示することができます。
実際の実装
TINI OSを搭載したウェブサーバをDS80C400にインストールするためには、以下の要素が必要となります:
DS80C400、最小1MBのフラッシュメモリ、および最小1MBのSRAMを含んだハードウェア設計。TINIm400モジュールは、これらの要件を満たし、十分にテストされたリファレンス設計であり、マキシムから提供されています。TINIs400モジュールも提供されています。これは、コネクタにインタフェース信号のすべてを出力するTINIs400のソケットボードです。TINIのページ を参照してください。
TINI OS の最新版
コンパイルを実行するため、Linux/Unix版またはWindows版のJ2SDK 1.4.xをダウンロード
DS80C400に内蔵シリアルローダでソフトウェアを転送するため、Linux/Unix版またはWindows版のJAVA Communications APIをダウンロード
ウェブでの段階的実行
まず、Java2SDKとすべての付属品、およびJAVA Communications APIの両方をインストールする必要があります。JAVA Communications APIのインストール手順についてはPlatformSpecific.htmlというファイルを参照してください。次に、ダウンロードしたTini-Paket tini1_13.tgzを解凍します。Windowsユーザはテーブルをメインディレクトリに解凍する必要があります。このとき、できるだけ簡単で短い名前を使用するようにしてください。今後、フルパス全体を手動で頻繁に入力する必要があるからです。以下に示す例は、テーブルがC:\TINIOSに解凍されたものと想定しています。次に、Javaプログラム(DS80C400に内蔵されたローダとじかに通信するためのプログラム)を呼び出すには、次のようにTini JavaKitを起動する必要があります:
java -classpath c:\tinios\bin\tini.jar;c:\j2sdk1.4.2_05\lib\comm.jar JavaKit
これでJavaKitはDS80C400と通信することができるようになりました。次にシリアルポート0(P3_B0とP3_B1)を用いて、シリアルTxRxケーブル(ストレートスルー。ヌルモデムケーブルではない)を使用してPCをDS80C400に接続する必要があります。DTR-Resetをイネーブルにするには、PC COMポートのDTRラインがアクティブになったときに、別のシリアルトランシーバを使用してDS80C400のリセットピンをローレベルに落とす必要があります。
リセット時にDS80C400のピン96(P1_B7)がグランドに接続されないようにしてください。そうでないと、デバイスが自動的にアドレス40000hのプログラムを起動しようとするからです。同様に、DS80C400のピン32をグランドにプルダウンしないでください。そうでないと、ROMは、TFTPサーバからのリセットの後にNetBootプロセスを初期化してしまいます。DS80C400は、リセット後に次の情報を表示します:
DS80C400 silicon software.
Welcome to the TINI DS80C400 car boat Loader 1.0.1
この時点で、[File] [Load-File: C:\tinios\bin\tini_400.tbin]の順に選択して、TINI-OS-FileをJava-KitとともにDS80C400回路基板のフラッシュにコピーすることが可能で、また[File] [Load-File: C:\tinios\bin\slush_400.tbin]の順に選択して、シェルをコピーすることができます。再起動の前に、ヒープ(スタックと同様、ユーザプログラムによって割り当てられたデータ格納用のメモリ領域)を削除する必要があります。
b18: this command changes to the bank 18, where the HEAP is...
f0: this command fills the current memory bank with zeros.
次に、DS80C400のピン96(P1_B7)をグランドにプルダウンし、リセットを生成します。リセットの後、次の情報が表示されます:
[,= slush version 1.13 =,]
[System coming up. ]
[Beginning initialization... ]
[Need generating log file. ] [Info]
[Initializing shell commands... ] [Done]
[Checking system files... ] [Done]
[Initializing and parsings. startup... ]
[Initializing network... ]
[Starting DHCP client... ]
[Waiting of for DHCP IP Lease... ]
[DHCP IP of lease Successful. ]
[Network configuration] [Done]
[Starting up Telnet servers... ] [Done]
[Starting up FTP servers... ] [Done]
[System init routines] [Done]
[slush initialization complete. ]
Press any key to log-in.
上記の出力はオペレーティングシステムがDS80C400上ですでに動作していることを示しています。これによってユーザは、ユーザ名「root」とパスワード「tini」を入力することによってログインすることができます。ネットワークがDHCP (Dynamic Host Configuration Protocol)をサポートしていない場合、静的IPアドレスを使用する必要があります。IPアドレスを静的な値に設定するには、ipconfigを使用し、その後に以下の文字列を入力します:
-a 192.168.1.50 -m 255.255.255.0.
得られた設定はヒープに保存されます。SRAMが、リファレンス設計のSRAMと同じように持続性がある(すなわちバッテリのバックアップがある)場合、主電源がなくてもネットワークパラメータとシステムデータは失われません。以上で、JAVA-Kitとシリアル接続は必要でなくなりました。ユーザはFTPサーバ経由でユーザ自身のソフトウェアをシステムファイルにコピーすることができます。Telnetで詳細な設定を行うことが可能です。
簡単なJAVAウェブサーバのアプリケーションの例が、テーブル「c:\tinios\examples\TINIWebserver」に掲載されていますbuildWebServer.batというバッチファイルで簡単にこれをコンパイルすることができます。ユーザは、作成されたTINIWebServer.tiniというファイルをFTPからDS80C400ファイルシステムのテーブル/binにコピーし、Telnetからコマンド「java /bin/TINIWebServer.tini」で起動することができます。システムの起動時にウェブサーバアプリケーションが確実に始動するよう、このコマンドをスタートアップファイル(/etc/.startup。PCのautoexec.batに少し似たファイル)に記述することもできます。
この時点でウェブサーバを実行することができます。ウェブサーバは、Internet Explorerを用いてDS80C400上で動作します。図3 に示すように、アドレスhttp://192.168.1.50 を入力します。
図3. この画面から、DS80C400上で動作しているウェブサーバにアクセスすることができます。リファレンス設計では、温度は、ピンPIN99 (OW)に接続されたDS1920温度センサでモニタされ、時間の情報は、DS1672リアルタイムクロック(RTC)上のI2Cバスから得られます。
JAVA
ディレクトリc:\tinios\examplesには、DS80C400用のJavaプログラムがいくつか格納されています。いずれもTINI OSオペレーティングシステム用に設計されたものです:
- Blinky:DS80C400のGPIOへのアクセスを表示する
- canautobaud:CAN-Busの自動ボー認識を表示する
- cantester:CAN-Bus用の簡単な送受信プログラム
- CommTester:シリアル/イーサネット間の通信の変換を表示する
- Echo:指定ポート上で、イーサネット経由で受信したデータを送信した後、返送する
- I2CTest:I2Cバスと温度センサDS1621の使用状況を表示する
- ListOW:1-Wireバスの使用状況を示す。既存のすべてのコンポーネントを1-Wireアドレスとともに一覧表示する
- MemDisplay:メモリの統計値をグラフィックで表示する
- OWDump:1-Wireバスへのアクセスを表示する
- PostExample:HTTP-POST機能を表示する
- PPPClient:PPPクライアントとしてのPPPクラスの使用状況を表示する
- PPPServer:PPPサーバとしてのPPPクラスの使用状況を表示する
- SPIExample:簡単なSPIインタフェースを実装する
Cでのプログラミング
多くのユーザは、8ビットのマイクロコントローラのプログラミングは、アセンブリ言語によってのみ行うものと考えていることでしょう。しかし、現在では、非常に優れたCクロスコンパイラも利用することが可能です。DS80C400には、Keilコンパイラ(www.keil.com)をお勧めします。Cの拡張ライブラリ をダウンロードしてください。
以下のファイルがライブラリにあります:
1-Wire public domain kit:1-Wireバスへのアクセス機能
Crypto (SHA1, MD4):8ビット配列でのSHA1アルゴリズムを表示する
Debug port:デバッグ機能を表示する
DHCP client:DHCPサーバのIPアドレスを受信する
DNS:ホスト名をIPアドレスに変換する
Enhanced Network Stack:ネットワークスタックを拡張する
ROM error codes:内部ROMによって戻されたエラーコードを一覧表示する
File system:ファイルの読取り/書込み/名前の変更/削除を行う基本機能
Flash programming:フラッシュの消去とプログラミングの関数を表示する
I2C:DS1672リアルタイムクロックの書込みと読込みに利用可能なすべてのライブラリ関数
ISR installation:割込みベクトルの使用状況を表示する
Memory manager:Malloc、MallocDirty、およびFreeの使用状況を表示する
MIME encoder/decoder:POP3とSMTPのサンプルアプリケーションで内部的に使用する
Netstat:ネットワークスタックの状態についての最新情報を取得する
NTLM authentication:POP3のサンプルアプリケーションで使用する
POP3 client:ユーザにEメールのアカウントの情報を入力するようプロンプト表示し、また指定されたEメールアカウントの情報をサーバから取り出す
Raw 1-Wire:デバイスがあるかどうか1-Wireバスを検索し、DS2502が見つかった場合、そのメモリを表示する
RTC access:DS1672Uリアルタイムクロックを設定する
SMTP client:単純な定型テストメッセージをメールアカウントに送信する方法を表示する
SPI:ポート5のPCENピンを使用してSPIデバイスとの通信を可能にする単純なインタフェースを提供する
Task schedulers:ユーザの要求に応じて、プロセスを生成/終了/中断/再開する
TFTP client:アプリケーションがTFTPサーバを設定し、次にそのサーバにファイルを要求することができるようにする
Utilities:アプリケーションが各種の便利な関数にアクセスすることができるようにする
JavaはSun Microsystems, Inc.の商標です。
関連製品
APP 3552: Jan 13, 2006
自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。
フィードバックをお寄せください。 内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。 —マキシムはお客様からいただく訂正、提案を元に改善していきます。
このページを評価し、フィードバックを送信する。