[Armadillo:02640] Re: Armadillo-500でカーネルをeabiでコンパイルするとブートできない

Shin-ya Koga email@hidden
2008年 1月 27日 (日) 18:47:27 JST


サムシングプレシャスの古賀です。

近藤さん([Armadillo:02635]):
>CONFIG_EABIを有効にしてコンパイルすると
>noinitrdにしてもモニタの電源も入らず、
>カーネルのイメージの解凍後からログが出なくなってしまいます。
> 
>コンパイルオプションがEABIになっていないのでないかと思い、
>Makifileを書き換えて-mabiを指定してみましたが
>コンパイルエラーが出るようになってしまいました。
>入れる場所が悪いのか、-mabiのオプションを認識していないようです。
> 
>初歩的な質問で恐縮ですが、-mabiを指定する箇所をご教授いただけたら幸いです。

以下の二箇所だと思います。ただし、先のメールで書いた
通り、弊社で EABI ビルド版の動作確認をした際、けっ
きょく ATDE を使いませんでしたので、これで解決できる
かどうかは、分かりません。

・atmark-dist/linux-2.6.x/arch/arm/Makefile
  CFLAGS_ABI      :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
 の行を
  CFLAGS_ABI      :=$(call cc-option,-mapcs-32,-mabi=aapcs-linux)
 に変更。

・atmark-dist/config.arch
 先頭に
  CPUCFLAGS := -mabi=aapcs-linux
 という行を追加。


ちなみに、ユーザランドを EABI ビルドするために試みた
方策は、-mabi オプションの置換または追加を行うスクリ
プトを作って、ATDE のクロスコンパイル用 gcc を置換す
る、というものでした(※元のクロスコンパイラのファイ
ル名を変更し、-mabi オプションの置換・追加を行うスク
リプトをクロスコンパイラと同じ名前で配置、ファイル名
を変更したクロスコンパイラを、そのスクリプトから呼び
出す、という方策です)。

これは、ユーザランドのソースでは Makefile の体系が
統一されているわけではなく、そのため、上に示した
カーネルに対する指定のように、一括指定できない、と
いう事情によります。が、glibc がプレビルドされてお
り、そちらをリンクしてしまうために結局駄目だった、
というのは、先のメールで書いた通りです。glibc の
EABI ビルドも試みたのですが、うまくいかなかったので、
 http://www.codesourcery.com/gnu_toolchains/arm/download.html
のツールチェーンを使って手っ取り早く済ませた次第です。

--
古賀信哉 (株)サムシングプレシャス



armadillo メーリングリストの案内