小型組み込み機器向けLinux ──MMUを持たないマイクロプロセッサで動作するしくみ

Michael Durrant, Michael Leslie

tag: 組み込み 半導体

技術解説 2001年8月20日

カーネルの構造

 ここでは,LinuxカーネルをMMUのないプロセッサ上で動作させるため,どのような変更が行われているかを説明します.

●アーキテクチャ共通のカーネル変更

 メモリ管理サブシステムは,CPUアーキテクチャに依存しません(図2).カーネル・ソフトウェアそのものに基本的なメモリ管理機能を与えることにより,MMUハードウェアに頼らずにすむようなしくみになっています.uClinuxの流儀で言えば,これは/mmディレクトリから引き出され,置き換えられる/mmnommuディレクトリの役割です.

f02_01.gif
〔図2〕uClinuxカーネルの構造

 サブシステムのいくつかについては,通常のLinuxカーネルからの変更,付加,削除,書き直しなどが必要でした.また,カーネルとユーザ・メモリの割り当て・開放ルーチンは再実装しています.透過的なスワッピング/ページングのサポートは除かれ,ポジション独立コード(PIC)をサポートするプログラム・ローダを付加しました.PICをサポートするコンパクトなヘッダを持つバイナリ・オブジェクト・コード用のフォーマットである"flat"が開発され,そのほかのバイナリ・フォーマットは固定メモリ・アドレス参照を使用しています.こうしたフォーマット用のプログラム・ローダは,ランタイム時に絶対アドレスを確定します.

 このような方法は,それぞれ長所と短所を合わせ持ちます.一般にPICは速くてコンパクトです.アーキテクチャによってはサイズが制限されます.例えば,Motorola社の68Kプロセッサにおける16ビット相対ジャンプは,32Kバイトに制限されています.ランタイム時に確定するテクニックを用いると,この制限はなくなりますが,プログラムがカーネルによってロードされる際にオーバヘッドを招いてしまいます.

●uClinuxの新規プラットホームへの移植

 新しいCPUに対してuClinuxを対応させる作業は,通常のLinuxで同様の作業を行うのに近いものとなります.

 Linuxには,わずかな変更のみでuClinuxに移植し再利用できるコードがたくさんあります.例えば,ARM,68K,MIPS,SPARCなどのMMUを持つプロセッサには,CPU固有のスタートアップ・コードとヘッダ・ファイルがすでに存在しています.このコードは,uClinuxにおいてMMUを持たないプロセッサをサポートする際に利用できます.Linuxのドライバ・コードは,多くの場合,uClinuxで動作するように書き換えることができます.

 こうした移植の際の課題としては,エンディアン問題や,MMUの存在を前提とするメモリ処理コードが挙げられます.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日