|
MadWifiデバイスドライバの不具合解析の3回目です。 前回まで エラー出力は割り込みハンドラでISRクリアを実行すると戻り値がFATALエラーになる、ことを通知するものであることが判明しました。そこで、ISRクリアを実行する関数を調べたところバイナリで提供されるHALに属しているのでソース解析ができないことが判った。(最近、HALをオープンソースにしたらしい) http://sourceforge.jp/magazine/08/12/02/0441245 バイナリのコードが正常に動作していない可能性がある。思い当たる点は二つあり、ひとつはコンパイル時に以下のメッセージを出力していること WARNING: drivers/net/wireless/madwifi/ath/ath_pci.o - Section mismatch: reference to .init.data: from .data after '$d' (at offset0x234) もうひとつは、ビルドツールが違うことで、MadWifiのバイナリを生成するツールはプレフィックスが arm-elf- なのに、今回しようしているツールは arm-none-linux-gnueabi- を使用していることです。 実際、リンカーオプションをつけないと生成されたオブジェクトのフォーマットが、MadWifiのバイナリがEABI ver0で残りのカーネルのバイナリがEABI ver4なのでリンクできないとなります。 リンクオプションに --no-warn-mismatch を追加して強引にリンクしています。このオプションはオリジナルのMadWifiにはついていません。 プロジェクトで共通の開発環境を使用しているので、arm-elf-を使用するにはビルドツールの構築から行わないといけないし、root権限をとるなど、制約も多いので最後の手段としたいと思っています。 一般に(PCでLinuxを使用するような場合)は、このエラーが出力されるとしたら、バイナリの選択に失敗しているケースが考えられます。バイナリーファイルは幾種類か用意されていてその中から使用するバイナリを選択するようです。バイナリファイルは以下のディレクトリにあります。 madwifi/hal/public クロスコンパイル環境にはありがちなことです。 これから先は、アセロス社とのNDAにより公開できない部分があります。(いまだ、動作してはいないのですが、原因はPCIデバイスドライバにあるとの考えています。本題にもどれるわけです) |
| << 前記事(2009/01/07) | トップへ | 後記事(2009/01/08)>> |
| タイトル (本文) | ブログ名/日時 |
|---|
| 内 容 | ニックネーム/日時 |
|---|
| << 前記事(2009/01/07) | トップへ | 後記事(2009/01/08)>> |