業界独り言 VOL346 組み込みソフトでのデバッグは・・・黎明期

組み込みソフトという業界にどっぷりと浸かるようになったのは、昭和54年からである。最初に行ったのはTK80でのマイコン講習会を社内でひらいたことに対しての教材作成準備を行ったことだったように思う。まだまだマイコン開発という環境への道具立ては少なく、講習会でのアプリケーション自体は8251を接続してのASR33との接続テストというものだった。キーをタイプして、エコーバックで文字が出れば、アプリケーションは完成である。

アセンブラもないので、当然ハンドアセンブルで行い、テンキーでHEXA入力という世界である。講習に参加した技術者たちは、皆、無線技術に携わっている方たちばかりであり、これから始まるマイコン搭載でのアナログ無線のシステム化などへの入り口に立ってのこうした講習会であったようだ。私自身は、ミニコン技術を習得するために富士通に出向して戻ったばかりの役に立たない新人といった状況だった。

ミニコンでのデバッグに慣れてきた状況からの戸惑い、ハンドアセンブルも含めて機械語で学んだ学生時代を思い返しつつ、2チャンネル(インターネットではなく)のアナログオシロスコープでバスクロックを方眼紙に書きとめて、8251の動作を8080のバスから確認して行った。学生時代に行ったのは日立のHITAC-10での同様なアセンブラでの実習だったが、今は、組み込んだ小さな組み込み基板での世界で同じ事をしているのは驚きの入り口でもあった。高専でのオシロ実習で学んだ遅延トリガ操作が活躍していた時代でもあった。

富士通への二年間の出向制度は三年続いて施行されていたので二年間の出向を終えた先輩たちが既に一線で活躍してミニコンでのシステム開発などに従事していた。自分自身は、ミニコンの開発経験を自社では持つことは無かったが、ミニコンを使ってのクロスアセンブラシステムを利用しての自社マイコンソフトの開発に使うことで仕事をはじめることになった。開発環境としては、ミニコンでのアセンブラベースのスタイルに近いものの、ソース編集を磁気テープで世代管理でコピーしつつのカードベースでの編集体系で、最終結果は、紙テープを穿孔しての出力で終わるというものだった。

マイコンを実際に組み込んで使い始めた先輩たちが取り組んだのは8085ベースのAVMシステムだったが、自社のマイコン戦略も踏まえた自動車電話移動機のソフトウェア開発のメンテナンスだった。16ビットのマイクロプロセッサ一つと4ビットマイクロプロセッサ二つを備えたマルチマイコンのボード構成だったが、制御ボードが一枚で済んだのがマイコン化の偉業だということだった。ちなみに、最初の自動車電話では、マイコンユニット自体がRCAの4000シリーズをベースにして一枚になり、さらに無線機と接続するインタフェース部が必要だったということらしい。

コンピュータのデバッグといえば、ピアノスイッチを所要ビット数並べたコンソールパネルで操るというイメージがあるのだが、当時の先輩が構築していた環境では、ミニコンから接続された自動車電話のターゲット基板に搭載されたRAMがあり、ここにミニコンからDMAで書き込んで利用するというものだった。本格的な16ビットマイコンということもあって、初芝がミニコン開発で培った機能なども盛り込みコンソールパネルが接続されるというものだった。しかし、出来ることはアドレス指定で止めること、特定のメモリを読み書きできること、ステップ実行が出来ることだけだった。

汎用レジスタ構成のこのマイコンで必要な動作中のレジスタを読み出す機能はなぜか搭載されておらず、ミニコン上がりの当時の私にとっては宇宙人と会話しているような感触をもっていた。いわゆる最近のデバッガーでいうところのシャドーモニターが行っている機能を自分自身で命令をターゲットに書き込み、ステップ実行を行ってレジスタをメモリに書き込ませて、そのメモリを参照して所要の結果からレジスタ内容を判断するという仕組みで、まだデバッガーとしては完成はしていなかった。

達人たちのレベルに到達することは出来ないと達観して、デバッガに手を入れさせてもらい、本来設計されていたレジスタ読み出し機能を作りこむことに暫く没頭させてもらった。ラッパー片手にラッピングポストや半田付けをしつつ、7400シリーズで急ごしらえで作った16ビットバスからのラッチレジスタをボードに構築して、パネルに新たに取り付けた16本のLEDと、レジスタ指定のロータリースイッチと、レジスタ読み出しのピアノスイッチで本来の期待するデバッガを構築することが出来てようやくソフトウェアの開発作業というよりも保守作業に入ることが出来た。

達人たちが開発した商用化したばかりの移動機ソフトの改善や機能追加などの評価サイクルをNTTと共同で開発することになったのである。チャネルの増大や、シーケンスの変更、シグナリングのデジタル化などのテーマがあったが、元々のコードが、機械語というよりもマクロ命令というアドレスベースの中間コードで開発されていたのでミニコンベースのアセンブラ経験しか持たない自分にとっては、システムエンジニアとしての素養が強く求められることを改めて思い知らされた事件でもあった。

この商用化移動局には、さらに凄い機能がシステムとして合わせて開発されていて、簡略リアルタイムトレース機能が計測器として開発されていたのである。使い方は、マクロ命令ベースでのafterトレースと、beforeトレースそして、マーカーによるフロートレースの三点であり、このシステムが採用しているマクロ命令という中間コード実行の仕組みが、当時のロジック性能も含めて程よいバランスでトレーシングを実現していたといえる。使い方の視点を変えて、マーカーという概念でフローとしての処理性能や流れを把握してシステムテストを検証するという測定器は、当時の初芝の技術力の証だったといえるかもしれない。

私は、こんな環境を構築した先人たちから組み込みソフトのデバッグを学び、昇華させ(消化?し)ていったのである。

コメントを残す

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