1.1 この本の歴史と読んで得られるもの
最初の本を書き上げた後、約 1 年の間に、あるかなり難しい機能要件を備えた自律潜水艦 (E-2 プロジェクトと呼ばれる) を作るという古いペット プロジェクトを復活させました。 このアイデアを実現するために、私はインターネットなどで何時間もかけて、さまざまな電気機械制御システムや、かなり複雑な信号処理アルゴリズムを実行するプラットフォームを迅速に開発するための技術を研究しました。 もちろん、インターネットや趣味のロボット工学の本からは、何千もの有用なプロジェクトや情報の断片を得ることができますが、私がまさに優先しているものは誰もいないようだと思いました。 特に、私のプロジェクトに影響を与えたすべての組み込み設計の問題、つまり、低価格の(オープンソースの)ツールとオペレーティングシステムを使う必要性、かなり厳しいリアルタイム要件のあるいくつかの機能の要件、可能な限り安価な市販の民生用部品を使いたいという要望を、少なくとも入門的な解決策としてまとめた単一の文献はないようなのです。 多くのトピックで利用できるリソースは、非常に高価な市販の産業用コンポーネントか、単一のマイクロコントローラを中心に構築され、周辺機器を制御するために微妙に最適化された移植不可能なコードと、非常に限られた範囲の周辺機器をサポートした、厳しい制約のあるシステムのどちらかに集中しています。 後者のシステム設計上の制約は、厳しい電力要件やスペースの制約、あるいは最低の部品コストで作業する場合には避けられませんが、1回限りのプロジェクトやプロトタイプのためにこうしたシステムを構築して調整するのは、膨大な労力を必要とします。 さらに、このようなシステムを組み立てるために必要なすべての詳細を学ぶことは膨大な作業であり、細部の微調整に没頭するあまり、完全で動作するシステムを実現することができないこともあります。 9541>
E-2 プロジェクトを開発している間、私が探していたのは、Linux が動作する汎用コンピューターに簡単かつ安価に接続できるさまざまなハード リアルタイム モジュール (センサーとアクチュエーター) を構築する方法でした。 このLinuxボックスは、後に小型で冷却性が高く電力効率に優れた処理モジュールに移植されるアルゴリズムのテストベッドとして機能します。 私は、既知の優れたコードとテクニックの強固な基盤を必要としていました。 また、組み込みLinuxディストリビューションを構築するためのシンプルなアップアンドランニングガイドも必要でした。 私の潜水艦の初期プロトタイプは、最終的にどれくらいの CPU 馬力が必要になるのか、正確にはわかりませんでした。 また、カメラなど、汎用のオペレーティング システムを介して最も簡単に接続できる周辺機器をいくつか使用したいと考えました。 長期的なデータ収集実験を自動化したり、プログラミング、製造、その他のタスクの簡単な自動コントローラを作成したりするのに便利な状況に遭遇したことがあるはずです。 このような観点から、私が本書のテクニックを適用した他の 3 つの例を挙げます。
無線リンクを監視し、特定の受信者をターゲットにした DTMF メッセージを抽出する自動高速データロガーの構築
上記の 2 番目の項目は特に興味深いもので、プロセス制御やテスト アプリケーションにおいて本書がいかに実用的な価値を持つかをうまく示しています。 2002 年、私はある多国籍企業の小さな部門で短期間働きましたが、その企業は家庭用およびオフィス用のプラスチック製品を主に扱っていました。 その時、その会社の自動テスト装置(独自に開発したシステム)と、同じ空気圧アクチュエータやセンサーを制御するLinuxベースのSBCの比較的安価でセットアップも簡単な装置とを比較したことは、大変有益な経験でした。 この種の低コストなテストシステムには、明らかに未開拓のマーケットがある。 この施設では、6個のアクチュエータと関連するPLC、それに何時間ものセットアップに2万ドル近くを費やしていた1。 また、これらの機器の制御ソフトは特殊で、よく理解されていない。実際、この機器のほとんどは、最初に設定した担当者が退職したため、遊休状態になっていた。 それに対して、同じような作業は、わずか数百ドルの普通のPCと、アクチュエーター1台につき200ドル程度の空気圧機器さえあれば、簡単に実現できるのだ。 さらに重要なことは、このようなシステムの制御ソフトウェアは、有能なコンピュータサイエンスまたは電子工学の専攻者であれば誰でも簡単に理解でき、適応できる簡単な C プログラムであるということです。 もし、この資料に興味がないのであれば、無視していただいて構いませ ん。 このような情報が「純粋な」組み込み開発に関する議論と一緒に掲載されているのは、主にE-2プロジェクトにおける様々な設計上の決定を導いた実世界の要件と考え方を説明するためです。 工学は理論科学ではなく、応用学問であり、理論的なポイントを説明するために具体的な例を使用するのは、このことを念頭に置いてのことです。 そのため、この文章では、私が行った決定について、追加の正当性を説明しました。 この補足説明は、私が特定の道を選んだ理由を示すものであり、他のアーキテクチャの経験を持ち、それを好む人たちにAVRを布教するために作成したものではないことを明言します。 繰り返しになりますが、この「ボーナス資料」は、ここで紹介する基本概念の理解にとって重要ではないので、希望する場合は読み飛ばしてもかまいません。 カバーされているトピックのすべてのニュアンスを網羅するものではありません。 本書の主な目的は、複雑な組込みシステムを実装するためのシンプルでモジュール化された安価な方法論を説明し、読者が自分のプロジェクトに適用できるような、すぐに使えるモジュールを紹介することです。 特に、低コストの開発用ハードウェアとフリーソフトウエア・ツールを使って、エンド・ツー・エンドのソリューションを実現することに重点を置いています。 最後の数ページに到達する頃には、次のことが理解できるようになっているはずです。
▪
x86 プラットフォーム上で Linux を起動するために必要な重要な「アンダーザフード」の詳細を機能的に理解する。
・Atmel AVRマイクロコントローラファミリに関する基本情報。
組み込みシステムに影響を与えるデータセキュリティ、認証、および信頼性の問題に関する基本的な「入門」情報。
基本的な考え方は、読者がLinuxアプリケーション開発、または深い組み込みシステムの開発のいずれかのトピックにある程度精通していることです。 また、かなり複雑なプロジェクトの全体的な文脈の中で、これらの情報の断片を結びつける接着剤を提供します。 ところで、「クックブック」というタイトルの単語を、私は少し気後れしながら使っていることに注意してください。 クックブック・エンジニアリングとは、理解されていない部品をカプセラの球体のように組み合わせることであり、決して良い方法とは言えません。 この本では、すぐに使えるカプセラの部品を紹介するのはもちろんですが、それぞれの部品に使われている歯車や軸を、私がどのように、なぜ作ったのか、そして、ある程度は自分でもっと良い部品を作ることができる、ということを説明しています。
このような本を企画する場合、2つの罠のうちの1つに陥りがちです。1つは、すべての必要なポイントを説明する単一でモノリシックな「メガアプリケーション」を作成することですが、簡潔に説明するのは非常に困難です。 私は、E-2 プロジェクトのより興味深いモジュールを、基本的にスタンドアロン コードと、これらのアプリケーションを自分の用途に合わせて変更および拡張するのに十分な理論とともに、いくつかの小さな実用的なアプリケーションに分割することによって、この両極端の間を行き来しようと試みました。 この本はその続編として作られたものではありませんが、間違いなく関連した内容になっています。 この本のテクニックに従ってプロトタイプデバイスを作り、後でそれを最適化されたシングルチップソリューションに絞り込みたい場合、私の以前の仕事は、フリーの GNU ツールを使ってソフトウェアを ARM マイクロコントローラに簡単に移植する方法を理解するのに役立ちます。 前著に対していただいた主なご批判は、もっと幅広い情報をカバーする必要があるということと、図版が少なすぎて、かなり乾いた読物になってしまったということでした。 本書は、そのような声に応えたものであり、その点でもご満足いただけるものと確信しています。 ご意見、ご感想は、メールまたはホームページhttp://www.zws.com/.
で受け付けています。