We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
T4はシステムタイマモジュール(r_sys_time_rx)を用いて周期処理している。 上位にウェブサーバモジュール(r_t4_http_server_rx)を実装した際、 通常はEther割り込み内にて送受信データ処理を行い、ファイルシステムアクセスを行う。・・・①Ether割り込みコンテキスト 周期処理のタイミングで送受信データが存在する場合、稀にこのときにファイルシステムアクセスを行う。・・・②CMT割り込みコンテキスト
一方でSDメモリカードドライバも周期処理が必要でありSDメモリカードドライバの周期割り込みにCMT割り込みを用いるとする。・・・③CMT割り込みコンテキスト
①は多重割込み許可となっており、優先度①<③の場合は問題なし。 ②は多重割込み許可となっており、優先度②<③の場合は問題なし。
以下ループのタイムアウト検出用のタイマインクリメントは③で行っているため、 優先度①>=③および②>=③の場合にインクリメントされなくなり、ハングする。
rx-driver-package/source/r_sdc_sdmem_rx/r_sdc_sdmem_rx_vx.xx/r_sdc_sdmem_rx/src/r_sdc_sd_config.c
Line 99 in 4294d84
通常、CMTはチャネル毎に優先度設定はできないが、APIとしては実装されている。
②の初期化はシステムタイマモジュールで行う。以下★の行のように②の優先度を下げてしまえば条件を満たさなくなりハングしなくなる。
sys_time_err_t R_SYS_TIME_Open(void) { sys_time_err_t return_code; int i; if(0 == sys_time_opened_flag) { memset(&sys_time_private, 0, sizeof(SYS_TIME)); if(true == R_CMT_CreatePeriodic(100, sys_time_process, &sys_time_cmt_channel)) { uint32_t level = 1; /* ★ */ R_CMT_Control(sys_time_cmt_channel, CMT_RX_CMD_SET_PRIORITY, &level); /* ★ */
対策: (1)CMTのControlのCMT_RX_CMD_SET_PRIORITYコマンドを公開する (2)システムタイマモジュールのCMT割り込み優先度をコンフィグ可能にする
The text was updated successfully, but these errors were encountered:
No branches or pull requests
T4はシステムタイマモジュール(r_sys_time_rx)を用いて周期処理している。
上位にウェブサーバモジュール(r_t4_http_server_rx)を実装した際、
通常はEther割り込み内にて送受信データ処理を行い、ファイルシステムアクセスを行う。・・・①Ether割り込みコンテキスト
周期処理のタイミングで送受信データが存在する場合、稀にこのときにファイルシステムアクセスを行う。・・・②CMT割り込みコンテキスト
一方でSDメモリカードドライバも周期処理が必要でありSDメモリカードドライバの周期割り込みにCMT割り込みを用いるとする。・・・③CMT割り込みコンテキスト
①は多重割込み許可となっており、優先度①<③の場合は問題なし。
②は多重割込み許可となっており、優先度②<③の場合は問題なし。
以下ループのタイムアウト検出用のタイマインクリメントは③で行っているため、
優先度①>=③および②>=③の場合にインクリメントされなくなり、ハングする。
rx-driver-package/source/r_sdc_sdmem_rx/r_sdc_sdmem_rx_vx.xx/r_sdc_sdmem_rx/src/r_sdc_sd_config.c
Line 99 in 4294d84
通常、CMTはチャネル毎に優先度設定はできないが、APIとしては実装されている。
②の初期化はシステムタイマモジュールで行う。以下★の行のように②の優先度を下げてしまえば条件を満たさなくなりハングしなくなる。
対策:
(1)CMTのControlのCMT_RX_CMD_SET_PRIORITYコマンドを公開する
(2)システムタイマモジュールのCMT割り込み優先度をコンフィグ可能にする
The text was updated successfully, but these errors were encountered: