Skip to content
New issue

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

[BUG] RL78 CCRLにてxEventGroupBitsFromISRが動作しない #21

Open
KeitaKashima opened this issue Aug 4, 2023 · 2 comments
Open
Labels
bug Something isn't working

Comments

@KeitaKashima
Copy link

Describe the bug

RL78にてxEventGroupBitsFromISR APIが正常に動作しない。
具体的にはportYIELD_FROM_ISR()が正常動作しないようだ。
正しい手順は「BRK実行→スタック退避→コンテキストスイッチ→スタックロード」ですが、実装ミスによりコンテキストスイッチだけやっているようです。従って元に戻れず動けない。

#define portYIELD_FROM_ISR( xHigherPriorityTaskWoken ) if( xHigherPriorityTaskWoken ) vTaskSwitchContext()

■誤り(現時点の記述)
#define portYIELD_FROM_ISR( xHigherPriorityTaskWoken ) if( xHigherPriorityTaskWoken ) vTaskSwitchContext()

■対策(修正)
RX600v2 の実装に合わせ、以下に変更することで直る。

#define portYIELD_FROM_ISR( x ) if( x != pdFALSE ) portYIELD()

@KeitaKashima KeitaKashima added the bug Something isn't working label Aug 4, 2023
@ShunichiroNakamura
Copy link

  • 現時点の記述はAssembly ISR wrapperの実装を前提としたものであり、誤りという訳ではない。
  • 一方で、下記の理由により、Renesas製のツールやソフトウェアにとってAssembly ISR wrapperは少々都合が悪い。
    • 割り込み関連の汎用的な仕組みをRenesasが予め用意することが少々難しい。
      • Assembly ISR wrapperは割り込みハンドラごとに個別に作成する必要があるため、Assembly ISR wrapperの実装はユーザアプリケーションに依存してしまうため。
      • 汎用的な仕組み(Assembly ISR wrapper関数実行時に割り込みハンドラ関数を引数として渡すことで、割り込みハンドラごとにAssembly ISR wrapperを作成しなくて済む)を実装しようと思えば可能だが、port層にその機構を追加実装する必要がある。
    • ドライバソフトをAssembly ISR wrapper向けに改造することがサポート観点で少々難しい。
      • ユーザの省力化を目的として、RenesasはFreeRTOSとRenesas製ドライバソフトを簡単に組み合わせるためのツールを提供している。
      • しかし、このドライバソフトは基本的にBaremetal環境向けに設計されており、また、ドライバソフトには割り込みハンドラがすでに実装されているため、ドライバソフトをAssembly ISR wrapper向けに改造することでRenesasサポート対象外になってしまう。
  • 本家リポジトリのメンテナーと協議した結果、Assembly ISR wrapper実装の要/不要をオプション化し、ユーザ(Renesas含む)都合に合わせて選択できる仕組みを導入する方針で決定した。

@ShunichiroNakamura
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants