水族館

アクセスカウンタ

help リーダーに追加 RSS MadWifi Wifi0: hardware error; resetting エラー解析その3

<<   作成日時 : 2009/01/08 20:26   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

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デバイスドライバにあるとの考えています。本題にもどれるわけです)

設定テーマ

関連テーマ 一覧

月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文