NRIロゴ2号
| Top Page| うだうだ日記| 写真日記|
| L-Card+| パソコン研| リンク集|

L-Card+16Mでドライバーモジュールを動かす

L-Card+で実績があるドライバーを L-Card+16Mで試してみたところ、 kernelがtrapで止まってしまいました。 その原因と解決方を調べましたので、報告します。

まちがい、もっと良い解決方法など ありましたら、教えて下さい。

  • insmodの問題

    L-Card+16Mのinsmodコマンド(実体は busybox)は、 問題があって動きません。 insmodを作るを参照し、できた insmod.staticを L-Card+16Mに転送し、使用して下さい。

  • こけ方

    上述のinsmodでカーネルのモジュールの組み込みは できますが、デバイスにアクセスしてみると、 こけます。こんな感じです。 あとは、電源を入れ直して rebootするしかありません。

  • こける場所

    こける場所を探して行くと、 MOD_INC_USE_COUNTでこけることが、わかりました。 さらに調べて行くと、 atomic_addが怪しそうです。 CONFIG_CPU_HAS_LLSCのマクロの有無で 動作が違います。

    古いL-Card+のソースで調べると、このマクロは定義されていませんが、 L-Card+16M添付のカーネルソースの設定のデフォルトでは、 定義されるようです。

  • 対策

    • cp config.l-card .config
    • make menuconfig
    • 何も修正せず、kernelのconfigurationをセーブして、exit
    • make dep
    • mipsel-linux-gcc用の include/linux, include/asm以下を更新。 インストール時にcp -r したのであれば、再度 cp -r. シンボリックリンクを張っているのであれば何もしないで良い。
    • ドライバーモジュールを再コンパイルする。


NRIロゴ2号
| Top Page| うだうだ日記| 写真日記|
| L-Card+| パソコン研| リンク集|

$Id: lcard020204.html,v 1.64 2006/02/08 07:02:19 nari Exp $