(toppers-users 3093) Re: Cortex-M3でTOPPERS/ASPにトライしています。文字入力が出来ません。

koizumi yoshiyuki koizumiyoshiyuki @ gmail.com
2010年 3月 16日 (火) 09:15:11 JST


 小南 さま

 有難うございます。私的には解決です。小南さんの指摘が正しいですね。

Cortex-M3には割り込みベクタがあり、割り込み要因毎にハンドラを定義できる仕組みになっていますが、未来技術研究所版では、リセット以外の割り込みは同じ割り込みハンドラで受付、ソフト的に設けた割り込みベクタを使って、要因毎の割り込みハンドラに分岐する2重構造になっています。小生、この処理を見落としていました(私の誤りですね)。Cortex-M3はステータスレジスタに割り込み禁止/解除のフラグが無いため、従来のディスパッチャのように、割り込み禁止で状態で、割り込みretuenしたとき、割り込み解除が出来ないので、このようなつくりになっているのだと思われます(これは私の私見です)。作った方の話を聞きたいところです。Cortex-M3は割り込みハンドラを通常のC言語で書けることが喧伝されているため、私は当然C言語で書かれていると思っていました。これが小生の誤りのスタートでした。本来はPendSVを使ってディスパッチャをつくのが、よいと思っています。
小生、GNUのツーは使っていないので、ここは細かくチェックせず、自身の割り込み確認テストプログラムの割り込みハンドラをベースに本来の割り込みベクタを無視して移植を進めていました。小生の勘違いでお騒がせしました。

 色々、有難うございました。

以上


2010年3月16日8:16 yasuo kominami(nifty) <ykominami @ nifty.com>:

> 小南と申します。
>
> 2010/3/15 koizumi yoshiyuki <koizumiyoshiyuki @ gmail.com>:
> > koisanです。
> > キー入力が出来ない件のその後の解析状況です。
> > デバッグを行なっています。タイマ割り込みが入ってしまい、動作が良く分からいのでtask()のwhile
> >
> (1)の無限ループに入る前に、systick割り込みをマスクして動作を単純にしてみました。(このデバッグの為の修正がほかの悪さをしてしまうかは良く分かっていません)
> >
> すると、キー入力の割り込み処理で、main_taskが待ちになっているセマフォ待ちを解除しディスパッチするためにp_schedtskにmain_taskを設定し、reqflgをtrueにします。しかし、ディスパッチが呼び出されないため、タスクスイッチが行われません。ディスパッチはどこで行われるのでしょうか?
> > 割り込みキー入力割り込みを抜けるときに行うべきのような気がします。
> >
> > 小生、TOPPERS/ASPのARM
> >
> Cortex-M3アーキテクチャ・GCC依存部パッケージ(担当:(株)未来技術研究所)版を使っていますが、この処理が組み込まれていないことになります。
> > i_begin_int()とi_end_int()は空でした。ここを作りこめばよいような気がしてきました。
> >
> > 如何でしょうかね?
> >
>
> 私はARMコア系のハードを持っておらず、すぐに確認できる開発環境も手元にないため、以下は参考意見としてお読みください。
>
>
> TOPPERS/ASPでは(TOPPERS/JSPの頃でも)割込みハンドラ(そこから呼び出される割込みサービスルーチン(ISR)も含む)の処理中にタスク切り替えの必要が発生した場合(タスク切り替えを伴うサービスコールの呼び出しや待ち解除の発生など)は、割込みハンドラの出口処理で判別して、ディスパッチ処理を呼び出します。
>
> ここは割込みハンドラの出口処理はターゲット依存部になりますので、各ターゲット依存部で記述することになります。
> 少なくとも、私がよく見ているSH-3やH8系のターゲット依存部はそのように記述されています。
>
> この辺りの詳しい解説はNEP(エヌイーピー)ブログの「リアルタイムOSの内部構造を見てみよう!」
>
> http://www.nces.is.nagoya-u.ac.jp/NEXCESS/blog/
>
> にあります。
>
> TOPPERS/ASPの共通部分とターゲット依存部(SH-3)での割込みハンドラの処理内容とか、サービスコールの処理内容、内部データ構造などが詳しく解説されています。
>
> ちなみにNEP(エヌイーピー)とは名古屋大学大学院情報科学研究科付属 組込みシステム研究センター(NCES)の教育プログラム(NCES
> Education Program)のことです。
>
>  http://www.nces.is.nagoya-u.ac.jp/NEP/
>
> #以前はNEXCESSといっていましたが、去年からNEPになりました。
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20100316/52df6987/attachment.html>