                           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>
