ykominami
ykomi****@nifty*****
2005年 11月 15日 (火) 08:04:36 JST
はじめまして。 小南と申します。 私はSL811HSがついているボードは持っていないので確認はできません。 ただSH3に外付けの16550互換UARTをつけたボードにgdbスタブを移植し ようとした時に似たような現象(UARTでは受信割込みが発生しているの にSH3の割込みハンドラが呼び出されない)を経験しましたので、(佐藤 さんのお話はもう一月以上前のことであり、すでに解決されておられ るかもしれませんが)体験談として書かせて下さい。 > カーネルの方もSL811HSのドライバを移植していますが、割り込みがこないという > 謎の現象に悩まされていて、全然進んでいません。 > さらに困ったことにこのドライバi386以外考慮していないような気が… > > という状況なので、すぐに試すのは多分難しいと思います。 > > 割り込み問題は誰か追試してもらえるとうれしいです。 > IRQを直接さわるとハンドラが呼ばれるので、多分SL811HSのIRQがおかしい。 > ただ、ステータスを見るとIRQが出ていることになっている。 > 出、IRQがちゃんと出ているか確認したい。けど道具が無いので。 SH3+互換UARTで、同じような現象を経験しました。 互換UARTのレジスタを見ると、受信割込みが発生しているのに、SH3は 割込みの発生自体を認識していない(割込み処理ルーチンが呼び出されない、 割込み要因がレジスタに設定されていないなど)状態でした。 そこでいろいろ調べて試したところ、以下の処理が必要でした。 1.外付けの互換UARTと接続するピンの機能を外部割込み受付にする 2.該当ピンの入出力方向を設定する 3.該当ピンの割込みの受け付け方法を設定する(レベル/トリガ、low/high アクティブなど) 4.割込みコントローラで該当ピンからの外部割込みを有効にする 5.該当ピンからの外部割込みの優先度を設定する 6.該当ピンからの外部割込みに割込みマスクから外す 7.CPUの割込み禁止を解除 私の場合、3の割込み受け付け方法の設定を、UARTの仕様(Highアクティブ) に合わせていなかったのが原因でした。 ただしいろいろ試行錯誤していたため、7の割込み禁止解除を忘れてしまい、 実際に割込みハンドラが呼び出されるようになるまで、もう少し時間がかか りました。 つまり私の場合、割込み信号が変化しても、それをCPUが割込みと認識でき ていなかったのが原因でした。 この場合、ピン自体の状態と、ピンからの外部割込み発生はそれぞれレジスタ で確認できますので、特別なハードウェアは必要有りませんでした。 このあたりの仕組みはSHとH8ではよく似ていると思いますので、参考に なれば幸いです。 --------------------------------------------------------------------- 小南 ykomi****@nifyt*****