【仕事の記憶】(6)携帯電話開発ことはじめ

の続き。

携帯電話の基礎知識

田舎町のなんとなく古くさい工場の一角に携帯電話の開発部(設計部?だったかも)の居室がある。
出社すると、いきなり学生時代のあだ名で声をかけられる。なんと高校・大学(学科は違う)の同窓生ではないか。彼もソフトウェア設計チームに所属しているとのこと。なるほど… あの怪しい学歴・キャリアで書類審査が通ったのは彼の存在も一役買っていたようだ...

開発部には、高周波回路・論理回路・機構・ソフトウェアの4つの設計チームが同居し、各チームは3~6名程、総員20名前後でアナログTACS方式の携帯電話を開発している。

ソフトウェア設計チームは自分を入れて5名。
チームのリーダーから携帯電話について基本的な知識を教わる。

  • 携帯電話は、端末もしくは(基地局に対して)移動局と呼ぶことが多いらしい。

  • 海外ではcellphoneもしくはcellularと呼ばれるもので、より以前からあった海外の車載電話とは仕組みが異なる。
    基地局1つのカバー範囲(cell)が数キロと小さい。基地局と移動局の距離が近いので、通信パワー・消費電力が小さくて済む。したがい、バッテリーも小さくなり端末筐体を小型にすることが可能となった。

  • 基地局のカバー範囲が小さくなると、移動局のcell -> cellへ移動が頻繁に発生する。これを自動的にハンドオーバー(通信を基地局間で引き継ぐ)することで通信が途切れないようにしている。

80年代後半から、NTT移動体通信網(現NTT docomo)が日本独自仕様(HICAP方式)で先行してサービスを展開した。
しかし、大人の事情(あの国の圧力?)により海外仕様(AMPSベースのTACS方式)も国内で導入しなければならなくなる。
新電電系列の事業者がサービスを開始し、その事業者向けに何世代か市場投入していて、国内販売シェアは上位のメーカーになっている。
携帯電話は倍々ゲームで加入者を増やしていて、市場拡大を見越して開発陣の補強をしていく予定とのこと。
開発はデバッグ用の大きな基盤(ブレッドボード、論理回路チームが提供・メンテナンス)を使用する。
技術部門による製品仮組(ワーキングサンプル)、ラインによる試験製造(プリプロダクション)を経て、商品製造(マスプロダクション)に至る。プリプロダクション開始までにソフトウェアを仕上げる必要があり、その後は品質部門による評価、指摘の対応となる。

端末のハードウェア諸元、システムの特徴は以下のような感じだった。

  • 通信方式:アナログTACS方式(FDMA FM変調)

  • マイコン:H8/500

  • OSレス。自作タスクスケジューラあり。

  • プログラミング言語:フルアセンブラ。

  • ユーザーインターフェース:7セグ12桁液晶 のち ドットのキャラクタ液晶、ボタン、マイク、スピーカなど。

  • 外部インターフェース:シリアルポートなど。

  • 見た目は細長くした卓上計算機 + アンテナ付き(ストレートやフリップスタイル)。

製造ライン向け端末テスト機能

入社直後、プログラマなのに自分のPCがない。ありえないだろう...と唖然とする。
(寂しいので、誰も使っていないラップトップのUNIXワークステーションを見つけていじっていた)
いろいろ学習することもあるし、すぐには実務に入れないはず、よって手配中とのこと。試験のお手伝いや勉強中心で、なかなか肝心のコードに触れることができない。
前職から自分はそこそこやれるはずと自惚れていたので、担当機能もなし・設計やプログラミング等の機会なしが続く状況は不満たらたらであった。

また、田舎の工場・事業所勤務は自家用車通勤が基本なのに、自分は車どころか免許も持っていない。工場製造ライン勤務者用のバスで通勤しているため業務時間の融通がつかない。
免許を取ってから残業させるから。と上司に言われてしまい。しばらくは仕事よりも自動車学校通いに力を入れる日々となってしまった。

しばらくして、制限をクリア・解消して、製造ライン向けの試験機能の担当を命じられる。
その機能は、取り付けられた各種ハードウェアに不良がないか確認する機能。製造ラインで使われるもので、検査用PCアプリケーションからの検査コマンドをシリアルポートで受信、コマンドに応じた制御を行う。

  • 液晶の表示。

  • 押下されたキー認識。

  • マイク・スピーカの動作確認。

  • 温度センサの低温・高温計測。

  • EEPROMの書き込み・読みだし、調整値格納。

  • などなど

難しい制御・処理は不要だが、幅広いハードウェア制御をしなければならず覚えることは多い。
機能を実装するにあたり、動作確認のためデジタルオシロスコープなどの測定器を使えなければならない。
旧機種で実装したコードを参考・流用することができる。新機種で変更になった部分の改造が主な作業となる。
端末のハードウェアや制御を学習して実績を積むには最適な部分と言える。

先述のとおりコードはフルアセンブラである。アセンブラならではの何でもありのトリックが随所に見られる。
例えばこんな感じ。

  • 関数の途中から別の関数の途中に飛ばしてしまう。

  • スタックのプログラムカウンタ相当個所を直接弄って、戻り番地を変えてしまう。

アセンブラであっても構造化プログラミングは可能なはずだが、気にしていない雰囲気がある。
解析している分には「あー、こうなっているんだ。へー」と結構面白いのだけれど、ドキュメントも存在せず、コードへのコメントも乏しい。完全な属人化コードとなっている。
これはあまり見習わない方が良いかもなぁ。思ったりするのだった。

この記事が気に入ったらサポートをしてみませんか?