業界独り言 VOL204 続 無線から組込みソフトへ

組込みソフト開発という新しい分野の黎明期からの取り組みには、参考となるものは自分達の手で準備していくべきものが殆どだった。試作の自動車電話に続いて開発テーマとしてもらったのは商用自動車電話の改版だった。仙人のような先輩達の労作に手を入れるなどとは、設計データは回路図のようにスペーシングチャートに書き込まれた処理フローにアセンブラーで掛かれてはいたものの実際のソースコードというファイルは存在しなかった。そう、機械語で開発されていたのだった。開発環境だよと示されたものは、コアメモリーを搭載したミニコンピュータとケーブルで繋がれていたブレッドボード、そして繋がれていたのはお手製デバッガコンソールであった。

当時の初期商用モデルで採用されていたマイコンは、当時の戦略部品ともいえる16ビットマイコンであったのだ。このチップはミニコンピュータからのサブセットのようなアーキテクチャで設計が為されていたのでデバッグのための機能としてアドレス一致停止とステップ動作のための機構がマイコン内部に用意されていたのであった。こうした機能を利用してデバッガコンソールはピアノスイッチをつけた私にとっては親しみの持てるものでもあった。ブレッドボードへのソフトウェアのローディングはミニコンピュータ経由でDMAで行われような機構になっていたのだった。まさに今のICEの原型のような機構が厳然とそこには作りこまれていた。

ミニコンピュータのコンソールパネルでコアメモリの修正を行い、ミニコンピュータの小さなソフトを動作させてそのクロスターゲットのデータをダウンロードするのである。トータルで8KWのコアメモリのうち4KWがクロスターゲット用のデータ領域として使われていた。自動車電話の端末開発として必要なものにはエアープロトコルを動作検証するための基地局も必要となり擬似基地局装置もあわせて開発されていたのだが部屋の横のラックに組み込まれた別のミニコンピュータとお手製の無線機三台とで各チャネルのデータの送受信が出来るようになっていた。この電機メーカーとしての戦略的な開発の位置付け窺い知れる途方も無い開発規模だったとも言える。

マイコンが気軽に使えるような時代とは異なり、アセンブラーベースでリアルタイムシステムの開発としてこうしたシステム機器を合わせて開発しつつの時代は、確かに四半世紀昔の話でもある。いえることは何時でも最先端の技術に取り組みながら少しずつブートストラップしながら開発をしていたということにほかならない。今までの延長で行っていたのではトップメーカーにはなりえないのである。そんな大掛かりな仕事の渦中にいることの認識は当時の自身にはなく、ただ組み上げられた開発環境を前に身震いをしていたのである。自分の仕事の視点にたち返り重大な問題点に気がついたのは、その次であった。デバッガコンソールの機能が明らかに不足していたのである。レジスタの内容が読み書きできないのである。先輩達の労作は如何にして作られてきたのだろうか。

神のみ業とみ言うべき天才達の所業は、デバッグポイントで止まった場合に次の番地に見たいレジスタ内容を特定メモリに格納させる命令を手で書き込みステップ実行を行い、その格納したメモリ内容をデバッガコンソールのメモリ参照機能で16ビットのランプに表示させるといった一連の作業をしていたのだった。「書き換えた後元のソフトに戻すのが大変じゃないですか」とはやる質問に「わかってないねぇ小窓君、ミニコンが保持しているんだからローディングはあっというまなんだよ」とは天才の意見であった。自分自身がコンピュータメーカーの研修を通じて認識してきた世界とのギャップとマイコンの実情を感じたものの、なぜミニコンからシュリンクダウンしたチップに機能が無いのだろうかという思いに囚われチップの資料をむさぼった。

そして資料によれば、マイコンのチップとしては、そうした機能を持っていることが判明したのだった。先輩達が見過ごしていたのだったが、ことデバッグするということについてはある意味での見識をもっていた私にすれば「おぉこれだ」その機能説明を読み出して到達した結論は、その機能をつかえるようにする回路の追加を行えばよいということだった。分野を問わない時代とはいえ、16ビット分のデータラッチ回路ならびに、ロータリースイッチからの設定で作った信号列を生成する回路を書き上げて、必要な部品を探し出して実験室にこもってラッピングマシンを握りデバッガコンソールに回路追加を行うためにしばらく実験室にこもっていた。当時最新鋭のロジックアナライザに弄ばれている新人にお節介の手を差し伸べてくれたのは、若き日のサンダル原人さんだった。先輩の意見を頂戴しつつ仕上られたコンソールにはレジスタ内容の変更と確認ができるようになった新しい機能が盛り込まれ漸く自分の居場所が確定できたように気がしていた。

そうして始まったソフトウェアの改変だったのだが、機械語ベースの開発環境からの移行も含めてソースコードを設計リストから興して入力したファイルにした。クロス開発環境は、そのマイコン開発をしているコンピュータメーカーとの提携別会社からの提供を受けてミニコンの上で使えるようになっていた。設計リストから興されたパンチカードは、磁気テープのソースファイルに変換されてようやく開発環境が自分の納得する形に整った。追加したい機能の盛り込みにあたっての障害は、ソフトウェアの構造自身にあった所謂仮想マシンとして構築されていたソフトに機能を短期に追加して検証するのには、仮想マシンの命令を増やすこともさることながらモジュール化を阻んでいる基本設計にもメスを入れる必要があった。何せサブルーチンを利用せずにすべて仮想命令と割り込み処理とで設計されているためスタックポインタを高速通信メモリに利用しているのが課題であった。

ソースコードを見渡すツールも無い時代であり、一人ソースコードを追いかけて次候補の使用頻度の少ない汎用レジスタを割り出した。マルチタスクのRTOSが入っている時代でもなかったのでスタック領域は段数によるサイズ見積もりをしておけばよかった。といってもリソース制限は厳然としてあった。開発されていたコードは4KWのROM空間を使い切っていたわけではないのだが、なんとか速度とサイズの両立を目指しつつ所要RAM領域を減らしていくという荒業に取り組んでいくしか答えが無かった。命令の使い方をトリッキーにせざるを得ないような部分が出てくるのは致し方ないことだった。節約を果たして領域を作りだし新たな機能を盛り込むというサイクルはまわすことになった。いつの時代にもリソース不足はついて回るものだ。

既に稼動している自動車電話システムが好評なこともありチャネル拡張や処理方式の追加変更といったことがアクションアイテムに挙がっていてそうしたテーマをこなしていくのが市場に供給開始したメーカーと通信キャリアの使命でもあった。生憎と処理方式を仕様化するといっても納入業者は二社しかないことやどちらのメーカーも同じ構成のハードウェアではないことから互いに競争して提案しあい切磋琢磨していくというのが当時の横須賀参りをしながらの開発競争という姿でもあった。アナログ信号の残る方式からデジタル化による信号処理方式への検討などが課題にあがっていたことから幾つかの提案をしつつ物作りとしてのソフト構築を進めました。開発したコードでようやく作成したマスクROMでしたが残念ながらバグを残すという状況が発生しました。詰めが甘いところが出たようです。

マスクROMを起こすのにはコストも回収も大変です。さりとて、時代的には方法論は・・・・というと必要は発明の母です。ハードウェア技術者の発案でリアルタイムにパッチする機構を搭載することになりました。高速なFuseROMを二組搭載して片方を選択ROMもうひとつをデータROMとして間違っているブロックのみヒューズROMのデータを利用するという構成でした。この方法ならばFuseROMの限られたサイズでもパッチが出来ます。当時のマイコンの命令の遅さは、こうした余剰の回路構成でも十分間に合うアクセスタイムだったのです。しかし、修正が増えるにつれて別の問題点が浮上してきました。FuseROMの必要とする電流がノイズを呼ぶのです、修正量が増えてFuseROMが動作する時間が長くなると雑音が増えるのです、NMOSのマスクROMとは比較になりません。しかし時代が追いついてきました大容量のEPROMが登場してきたのです。組込みは、またひとつの時代に入っていきました。

横須賀詣でをする中で、信号処理のデジタル化についての提案が通りました。それまではサイドトーンを重畳して実現していた点がデジタル信号のフレーム構成で対処できるための秘策でもありました。実は、何気ない思いつきを前回の横須賀訪問の際に提案していたことが次回の訪問の時には特許申請が共同出願としてなされる事態となっていました。国内のトップキャリアの研究所の方々の行動力の速さには脱帽です。その特許の実装にはソフトウェアで行うことになっていたのですが登場していたEPROMの時代で差し替えの子供基板のみを持ち込みデジタル信号処理の確認端子への検知出力などを設けたものを持ち込み、お客様の研究成果として処理方式の理論値と実際のデータの二つがその次の訪問では準備されていました。ベースバンドの稚拙な信号処理でしたがマイコンでの制御の始まりでもありました。

コメントを残す

メールアドレスが公開されることはありません。