OSの管理割り込みについて教えてください。
現在STM32F4にμC3/Compactを入れて開発をしております。その中でUSARTの受信割込み中にiset_flg()を実施するとハードフォルトとなってしまいます。原因はこの記事にあるように
「viewtopic.php?f=12&t=4」
管理外割り込みでOSのAPIを実施したからだと思われます。
これを解決するためにUSARTの受信割込みをOSの管理割り込みにしたいです。
この記事
「viewtopic.php?f=16&t=117」
を参考に設定したのですが、main.cにスケルトン関数が作成されるだけで、
初期化ハンドラに設定が追加されませんでした。(この記事の「5.コンフィグレータで登録したOSリソースはシステム起動時に初期化ハンドラで生成されます。」の部分が追加されません。)
実際にソフトを動かしてusartのデータを受信しても作成された関数が呼ばれません。(スケルトン関数は実際のソースコードにコピーして組み込んでます。)
何か設定が間違ってますでしょうか?
(添付がコンフィグレータで設定した様子です。)
それともμC3/Compactでは管理割り込みの設定ができないのでしょうか?
お手数おかけして申し訳ありませんが、ご教授のほどよろしくお願いいたします。
管理割り込み
- eForce技術担当
- 記事: 193
- 登録日時: 2014年4月24日(木) 14:18
Re: 管理割り込み
こちらの、ご連絡をいたします。
>初期化ハンドラに設定が追加されませんでした。
こちらの内容は、μC3/Standardの場合であり、μC3/Compactの場合には、
初期化ハンドラには、割込みサービスルーチンに関する処理は、
追加されません。
===
実際に下記で設定をすれば、割込みサービスルーチン(OS管理下の割込み)
処理は、作成されていると思います。
===
μC3/Compactでの割込みサービスルーチンについては、
ご指摘のように、
割込み番号:53
起動番地:usart1_intr
とした場合には、具体的には、下記のように動作するようになります。
・vect.s79
inthdr_53が呼び出されます。(cortex-M4 CPUの動作)
・その後、excp.s79が呼び出されて、μC3/Compactのカーネル本体が呼ばれ
void isr_exti13(VP_INT exinf)が呼び出されることになります。
->この一連の、処理をコンフィグレータが生成してくれます。
=====
=====
>実際にソフトを動かしてusartのデータを受信しても作成された関数が呼ばれません。
>(スケルトン関数は実際のソースコードにコピーして組み込んでます。)
>何か設定が間違ってますでしょうか?
こちらの手順自体は、間違っていないと思います。
===
なお、注意事項ですが、コンフィグレータ上で、
μC3/Compactでの割込みサービスルーチンを設定して、ソースコード生成を
実施した場合には、USARTのドライバは組み込まれませんので、
USARTの受信自体は、お客様のほうで記載を頂く必要がございます。
->この辺りは、認識されていますでしょうか。
====
====
もしくは、μC3/Compactでは、標準COMドライバが実装されていますので、
標準COMドライバを利用して、UART処理を実施したい場合には、
下記のサンプル等を参照して頂ければと思います。
\uC3\Sample\Compact\STM32F4内に、ございます。
>初期化ハンドラに設定が追加されませんでした。
こちらの内容は、μC3/Standardの場合であり、μC3/Compactの場合には、
初期化ハンドラには、割込みサービスルーチンに関する処理は、
追加されません。
===
実際に下記で設定をすれば、割込みサービスルーチン(OS管理下の割込み)
処理は、作成されていると思います。
===
μC3/Compactでの割込みサービスルーチンについては、
ご指摘のように、
割込み番号:53
起動番地:usart1_intr
とした場合には、具体的には、下記のように動作するようになります。
・vect.s79
inthdr_53が呼び出されます。(cortex-M4 CPUの動作)
・その後、excp.s79が呼び出されて、μC3/Compactのカーネル本体が呼ばれ
void isr_exti13(VP_INT exinf)が呼び出されることになります。
->この一連の、処理をコンフィグレータが生成してくれます。
=====
=====
>実際にソフトを動かしてusartのデータを受信しても作成された関数が呼ばれません。
>(スケルトン関数は実際のソースコードにコピーして組み込んでます。)
>何か設定が間違ってますでしょうか?
こちらの手順自体は、間違っていないと思います。
===
なお、注意事項ですが、コンフィグレータ上で、
μC3/Compactでの割込みサービスルーチンを設定して、ソースコード生成を
実施した場合には、USARTのドライバは組み込まれませんので、
USARTの受信自体は、お客様のほうで記載を頂く必要がございます。
->この辺りは、認識されていますでしょうか。
====
====
もしくは、μC3/Compactでは、標準COMドライバが実装されていますので、
標準COMドライバを利用して、UART処理を実施したい場合には、
下記のサンプル等を参照して頂ければと思います。
\uC3\Sample\Compact\STM32F4内に、ございます。
Re: 管理割り込み
ご回答ありがとうございます。
割り込みを実施するにはUSARTでデータを受信したときに
「inthdr_53を呼び出す」ように仕掛けておけばよいというところですかね。
そうすれば void isr_exti13(関数名は任意)が呼ばれるようになるというところですね。
「USARTの受信自体は、お客様のほうで記載を頂く必要がございます」認識いたしました。
割り込みを実施するにはUSARTでデータを受信したときに
「inthdr_53を呼び出す」ように仕掛けておけばよいというところですかね。
そうすれば void isr_exti13(関数名は任意)が呼ばれるようになるというところですね。
「USARTの受信自体は、お客様のほうで記載を頂く必要がございます」認識いたしました。