[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 メーリングリストの案内