Linux Kernel 2.6 Documentation:
/usr/src/linux/Documentation/arm/README
arm/README
ARM Linux 2.6
[プレインテキスト版]
- 原著作者: Russell King <linux@arm.uk.linux.org>
- 翻訳者: 早川 仁 <cz8cb01(a)linux.or.jp> 野本 浩一 <hng(a)ps.ksky.ne.jp> 川崎 貴彦 <takahiko(a)hakubi.co.jp>
- バージョン: 2.6.6
- 翻訳日時: 2004/05/23
ARM Linux 2.6
=============
更新については、ftp://ftp.arm.linux.org.uk/pub/armlinux をチェック
してください。
カーネルのコンパイル
--------------------
ARM Linux をコンパイルするためには、GNU extensions を使用して ARM ELF
コードを生成できるコンパイラが必要になります。GCC-2.95.1, EGCS 1.1.2,
GCC 3.3 は良いコンパイラであると知られています。幸運なことに、推測する
必要はありません。コンパイラに既知の問題があれば、カーネルがエラーを
報告してくれます。
ARM Linux を直接ビルドする場合は、最上位 Makefile の ARCH = 行を変更
する必要ありません。しかし、ARM Linux ELF ツールをデフォルトとしてイン
ストールしていない場合は、下記で説明しているように、CROSS_COMPILE 行を
変更する必要があります。
クロスコンパイルをおこないたい場合は、最上位 Makefile の次の行を変更
してください。
ARCH = <何か>
を
ARCH = arm
へ変更。
それから
CROSS_COMPILE=
を
CROSS_COMPILE=<コンパイラへのパス (gcc は含めない)>
へ変更。たとえば、
CROSS_COMPILE=arm-linux-
カーネル (arch/arm/boot/Image) をビルドするには、'make config',
'make Image' を実行します。'make Image' のかわりに 'make zImage' を
使用することにより、圧縮されたイメージを作成できます。
バグレポートなど
----------------
パッチはパッチシステムに送ってください。詳細な情報については、
http://www.arm.linux.org.uk/patches/info.html
を参照してください。そのパッチが何をするものであり、なぜ必要なのかに
ついての説明を必ず含めてください。
バグレポートは、linux-arm-kernel@lists.arm.linux.org.uk に送るか、
または
http://www.arm.linux.org.uk/forms/solution.shtml
の Web フォームを利用して送信してください。
バグレポートを送るときは、関係するすべての情報も一緒に送るようにして
ください。例えば、問題が発生する前と発生中のカーネルのメッセージや、
何をしたらその問題が発生したかなどです。
インクルードファイル
--------------------
幾つかの新しい include ディレクトリが include/asm-arm 以下に作成され
ました。これらは、トップディレクトリの乱雑さを減少させるためにそこに
置かれています。これらのディレクトリとその目的は、次に挙げるとおりです。
arch-* マシン/プラットフォーム固有ヘッダファイル群
hardware ドライバ内部の ARM 固有データ構造体/定義
mach 固有のマシンインターフェースに対する汎用 ARM の記述
proc-* プロセッサ依存ヘッダファイル群 (現在のところカテゴリは二つのみ)
マシン/プラットフォームサポート
--------------------------------
ARM ツリーには数多くの異なるマシンタイプに対するサポートが含まれてい
ます。これらの差異のサポートを続けるため、マシンに固有の部分をディレ
クトリにより分割する必要がありました。このため、マシンカテゴリは、
どのディレクトリ、どのファイルをインクルードするかを選択するために
使用されます (カテゴリを参照するのに $(MACHINE) が使われます)。
このために、特定のマシン用の、ドライバではないファイル (たとえば PCI,
メモリマネジメント、アーキテクチャ定義群など) を格納するように設計
された arch/arm/mach-$(MACHINE) というディレクトリを作りました。今後
現れる全てのマシンについては、対応する include/asm-arm/arch-$(MACHINE)
ディレクトリを用意することになるでしょう。
モジュール
----------
モジュール化はサポートされていますが (FP エミュレートに必要)、ARM2/
ARM250/ARM3 マシン上の各モジュールはページサイズの制限により、ロード
時に次の 32K 境界までメモリを確保します。ですから、これらのマシン上で
モジュール化することに本当に意味があるのでしょうか?
しかしながら、ARM6 以降のマシンのモジュールでは 4K 単位で (メモリを)
使用するようにできますので、Acorn RiscPC やこのプロセッサを使用して
いる他のアーキテクチャではモジュール化が有効です。
ADFS イメージファイル
---------------------
ADFS パーティション上にあるイメージファイルは、ADFS パーティションを
マウントして、ループバックデバイスドライバを使用することでアクセス
できますが、losetup をインストールしておく必要があります。
PC エミュレータの DOS パーティションではパーティションテーブルが先頭に
ありますので、losetup に "-o offset" オプションを指定する必要があることに
注意してください。
開発者へのリクエスト
--------------------
アセンブラだけで書かれたファイルをインクルードするデバイスドライバを書く
場合、arch/arm/lib ディレクトリにではなく、C のファイルに含めるように
してください。そうすることによって、コードの一部をカーネルのイメージに
組み込むことを要求することなく、ドライバをローダブルモジュールとしてコン
パイルすることができます。
本当に必要な場合を除いて、アセンブラを使用することは避けるようにして
ください。そのドライバを他のハードウェアに移植することが困難になって
しまいます。
ST506 ハードドライブ
--------------------
ST506 ハードディスクドライブコントローラは、少し遅いようですが、それ
なりに動いているようです。今後も A4x0 系マザーボードのコントローラ
だけは開発が続くでしょうが、Podule で動くようにするためには、Podule
を持っている誰かに IRQ マスクと HDC ベースのアドレスをソースコードに
追加してもらうように依頼することになります。
1996 年 3 月 31 日からドライブ 2 つでも動作するようになりました (ADFS
*configure harddrive を 2 にセットする必要があるでしょう)。私は 20MB
の内蔵用と、5.25" の FH 64MB ドライブを入手しました (これ以上のものを
欲しがる人なんているんでしょうか :-) )。(訳注:FH = フルハイトです。)
240K/s の速度が出ました (dd コマンド bs=128k で) - これは RiscOS で
出せる速度の約半分ですが、先週の 50K/s なんていう速度に比べればかなり
マシです :-)
既知のバグ - ドライブデータエラーが起きるとハングアップするかもしれ
ません。例えばコントローラが ECC でエラー訂正を行った場合などです
(たぶん、そのケースだけだと思いますけど・・・う〜ん)。
1772 フロッピー
---------------
これも正常に動作しているようです。しかし、現在はあまり使われていません。
今のところディスクが交換されたことを検出するコードがありませんので、
何か問題が起きるかも知れません! この処理をおこなう正しい方法について
の提案は歓迎します。
CONFIG_MACH_ と CONFIG_ARCH_
----------------------------
新しいマシン用のマクロ名が、2003 年に変更されました。歴史的に、
CONFIG_ARCH_ は、アーキテクチャの実装 (例えば Assabet) に対して使用
されていたのと同じように、本物のアーキテクチャ (例えば SA1100) に
対しても使用されていました。明確にするため、CONFIG_MACH_ を読むため
の実装マクロを変更することに決めました。
登録済みのものはオンラインで見ることができます。
http://www.arm.linux.org.uk/developer/machines/
カーネルエントリ (head-armv.S)
------------------------------
カーネルへ最初に入る個所は head-armv.S で、ここではアーキテクチャ非
依存のコードが使われています。マシンはエントリ時の 'r1' の値によって
選択され、その数値は一意でなければなりません。
Linux の ARM 移植は非常に多くのマシンに提供されているので、大量の
コードを重複させないための管理手法が用意されています。
マシン (またはプラットフォーム) サポートコードはマシンクラスにグループ
分けされています。クラスは基本的に、一つ以上のシステムオンチップ・デバ
イスに基づいており、実際の実装における自然なコンテナとして機能します。
これらのクラスには、マシンクラスをサポートするソースファイル群を含む
arch/arm/mach-<クラス>, include/asm-arm/arch-<クラス> というディレク
トリが与えられています。このディレクトリ群には、マシン固有のサポート
コードもすべて含まれています。
例えば、SA1100 クラスは、SA1100 と SA1110 SoC デバイスに基づいており、
オンボードデバイスとオフボードデバイスの使用手段、またはデバイスの
セットアップ手段をサポートするコードを含み、マシン固有の「パーソナリ
ティ」を提供します。
このようなきめの細かいマシン個別選択は、マシンタイプ ID により制御され
ます。マシンタイプ ID は、実行時とコンパイル時の両方において、コードを
選択する手段としての役割を果たします。
新しいマシンは、次の Web サイトで登録することができます。
http://www.arm.linux.org.uk/developer/machines/
---
Russell King (2004 年 3 月 15 日)
------------------------------------------------------------
翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >
翻訳者: 早川仁 <cz8cb01(a)linux.or.jp>
最終更新: 2004/05/23
更新: 野本浩一 <hng(a)ps.ksky.ne.jp>
更新: 川崎貴彦 <takahiko(a)hakubi.co.jp>
校正: 中谷千絵さん <jeanne(a)mbox.kyoto-inet.or.jp>
尾崎亮太さん <ozaki-r(a)igo.cs.uec.ac.jp>
高橋聡さん <hisai(a)din.or.jp>
小林雅典さん <zap03216(a)nifty.ne.jp>
中野武雄さん <nakano(a)apm.seikei.ac.jp>
Seiji Kaneko さん <skaneko(a)a2.mbn.or.jp>
Linux カーネル 2.6 付属文書一覧へ戻る