• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

ニュース

【XDev】「普通のLinuxと組み込みLinuxの違いを知るべし」---アックス竹岡氏がアドバイス

道本 健二=ITpro 2007/09/07 ITpro
写真●アックス社長の竹岡尚三氏
写真●アックス社長の竹岡尚三氏
[画像のクリックで拡大表示]

 「同じLinuxだから動いて当たり前と思っていても,意外に動かないものが多い」。9月7日に開催されたソフト開発者向けのイベント「X-over Development Conference 2007」で,アックスの竹岡尚三氏(写真)はこう語った。

 アックスは,携帯電話やデジタルカメラなどに搭載されるOSや,組み込みLinux向けソフトウエアを開発/提供するソフトハウス。その代表取締役を務める竹岡氏は,組み込み開発の経験,実績が豊富だ。講演では,Linuxの技術者が組み込みLinuxに取り組むときに注意すべき点,間違いやすい点についてわかりやすく説明した。

 まず,通常のLinuxと組み込みLinuxのソフトウエアの互換性に関して,いくつか誤解があると言う。例えば,デバイスドライバはハードウエアに依存するところが多いので,そのままでは動かないという認識は正しい。しかし,「ハードに関係しないアプリケーションは,そのまま動くと思っている人が多いが,それは誤解だ」(竹岡氏)。

 なぜ動かないのか。同じLinuxでも,プラットフォームに大きな相違点があるからだ。簡単に言えば,採用するCPUによって,細かなアーキテクチャの違いがあり,それがソフトウエアの動作に影響を与えている。例えば,2バイトのデータをメモリーに格納するとき,上位バイトと下位バイトの実際の格納位置はCPUによって異なる。開発者は,このバイト・オーダの違いを知っておく必要がある。「バイト単位で置いたデータを,ワード(32ビット)命令でアクセスするようなトリッキーなプログラムは移植性が低い」(竹岡氏)というわけだ。

 また,データ・アライメントの違いも大きい。x86系CPUでは,32ビットのデータがどのようにメモリー上に並んでいても,ワード命令でアクセスできる。しかし,RISC系CPUでは,きりのいいメモリー番地からしかワード・アクセスできない。したがって,アライメントに依存しているプログラムは問題が発生する。

 竹岡氏によると,浮動小数点をメモリーにストアするといったケースで,バイト・オーダーやアライメントの問題が起きやすいと言う。組み込み開発で,浮動小数点を使う用途はなさそうに思えるが,ソフトウエア音源など,用途によっては浮動小数点を使用する場合があるそうだ。

 そのほか,MIPS系CPUには,加算の桁上がり情報を保持するキャリー・フラグがないといった違いがある。多倍長演算を行うアセンブラ・ルーチンは,通常キャリー・フラグを参照する。このルーチンをどう書き直すかといったテクニックも披露した。

 最後に竹岡氏は,ハードウエアなどの情報の不足を補う方法として,Linuxのソースコードをよく見ようとアドバイスした。Linuxは,米国製のチップやカードをサポートしている。そのソースコードはフリーで公開されていることがあるので,それをよく見ることがためになると結んだ。

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

  • 【USBの謎】

    USB給電に異常アリ?粗悪品が生まれる謎

     PCの外部インタフェースとして普及したUSBは、信号の送受信と同時に電源を供給する役割がある。給電側と受電側が折衝し、適切な電力を供給する。ところがUSB Type-Cケーブルによっては、機器の破損につながりかねない挙動を示すという「謎」が存在する。

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

ネットワーク/通信サービス

セキュリティ

もっと見る