noMMU版関連情報

Linux/M32RのnoMMU対応について

2.6系カーネルでは、uClinuxの noMMUサポート機能がマージされました。
Linux/M32Rにおいても、MMUを持たないターゲット上で Linuxを動作させることができるようになっています。

現在、Kernel-2.6.4でnoMMU版が動作しています。
ユーザランドは、busybox+uClibc(スタティックリンク)が利用可能です。

noMMU版を動かすには...

M32102チップを搭載した OAKS32Rボードで Linux/M32Rを動作させる場合について、 具体的に説明します。
  1. 前準備: Flashメモリ内のベクタテーブルの内容を書き換えます。
    # ここが最大の障壁です(^^;)。
    # 残念ながら、出荷時のFlashROMの内容そのままでは Linuxを動作させることができません。
    # ルネサステクノロジから提供されている体験版のデバッガを使って FlashROMの
    # 内容を書き換えることができますが、現状では JTAG-ICEが必要です...
  2. カーネルソースを展開し、カーネルを m32r-linuxツールまたは m32r-elfツールを 使ってコンパイルします。
  3. ルートイメージをホストのファイルシステム上に展開し、NFSroot用にexportしておきます。
  4. gdbでカーネルをダウンロードし起動します。下記g00fを使用するとネットワークブートも可能です。

noMMU版のアプリケーション開発

アプリケーションのビルドには、elf2fltを組み込んだ m32r-elfツールを使用します。
ツールのバイナリ・パッケージが用意されていますので、展開後、すぐにコンパイルを始めることができます。

ソース・パッケージ

最新スナップ情報 (2005.12.20)


ツール/ライブラリのビルド方法

ソース・パッケージから、ツール/ライブラリをビルドする方法について説明します。
ツールのバイナリ・パッケージを使用する場合には、これらの手順は必須ではありません。

elf2flt

FLATバイナリを生成するにはelf2fltという変換ツールを使用します。 (オリジナルelf2fltソース提供サイト)
elf2fltのインストール方法を説明します。

1. m32r-elfツールをインストールします。

  % cd /usr/local
  % bzip2 -cd m32r-elf.20040210-3.2.tar.bz2 | tar xf -
  % ln -s m32r-elf.20040210-3.2 m32r-elf-3.2
2. binutilsのコンパイルを行います。
  % bzip2 -cd binutils-2.13_src_20040210.tar.bz2 | tar xf -
  % cd binutils
  % mkdir build
  % cd build
  % ../src/configure --target=m32r-elf --prefix=/usr/local/m32r-elf-3.2
  % make
3. elf2fltをelfツールに組み込みます。
  % bzip2 -cd elf2flt-20040409.tar.bz2 | tar xf -
  % mkdir build
  % cd build

        環境に合わせて設定を行います。
         binutils_src=/xxx/binutils/src           ... binutilsのソースパス
         binutils_build=/xxx/binutils/build       ... binutilsのビルドパス
         binutils_prefix=/usr/local/m32r-elf-3.2  ... m32r-elfツールのパス

  % ../configure --target=m32r-elf --srcdir=../elf2flt \
                 --prefix=${binutils_prefix} \
                 --with-binutils-include-dir=${binutils_src}/include \
                 --with-bfd-include-dir=${binutils_build}/bfd \
                 --with-libbfd=${binutils_build}/bfd/libbfd.a \
                 --with-libiberty=${binutils_prefix}/lib/libiberty.a
  % make
  % make install

uClibc

noMMU版のuClibcを作成する方法を説明します。
  % bzip2 -cd uClibc-0.9.26-20040507.tar.bz2 | tar xf -
  % cd uClibc-0.9.26
  % make menuconfig

      ここで以下の項目を設定します。
        Target Architecture Features and Options ->
          Target CPU has a memory management unit (MMU)   ... 無効にします。
           Linux Kernel header location  ... 環境に合わせて設定します。
        General Library Settings ->
          Malloc returns live pointer for malloc(0)   ... 有効にします。

  % set path=($path /usr/local/m32r-elf-3.2/bin)
  % make
  % make install


FLATバイナリについて

noMMU版のLinux(uCLinux)では、FLATフォーマットというリロケータブルなバイナリフォーマットを 採用しています。
FLATバイナリはELFからelf2fltという変換ツールを使って生成します。

FLATフォーマットに関するページ   http://www.beyondlogic.org/uClinux/bflt.htm

戻る


Last modified: 2006/01/10 webmaster@linux-m32r.org