MR8C RTOS入门.ppt

  1. 1、本文档共101页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MR8C RTOS入门

* * * * * * * * * * * * * * 13:34 4分 07_deadlock * * * * * * * * * * * * * * * * * * * 11:21 1分 * 11:22 1分 あと、情報量としては「通知」という事象、つまり1ビットのみの通信。 後述するイベントフラグやメールボックスなどの同期通信オブジェクトでは、より多くの情報を通信することができる。 * * * * 11:32 1分 * 11:33 2分 03_flg +2分 03_flg2 * * * * * * 11:38 1分 * 11:41 3分 12_dtq * * * * * 13:20 1分 * 13:21 0.5分 * 13:21 1分 利用可能な資源の数を意味するカウンタを持っています。 アプリは、排他制御したい実際の資源(プリンタ)を使用する前に、セマフォを獲得するようにします。 左の例では、タスク1がセマフォを獲得し、実際にプリンタを使用します。このとき、セマフォカウンタが1から0になります。 タスク1がセマフォを使用しているときに、タスク2もプリンタを使用するためにセマフォを獲得しようとすると、セマフォカウンタは0なのでタスク2はセマフォを獲得できず、待ち状態になります。 その後、タスク1がプリンタの使用を終えたとき、タスク1はセマフォを解放します。これによって、待っていたタスク2がセマフォを獲得して待ち状態が解除されます。 * 13:31 2分 * 13:39 1分 * 13:40 1分 * 13:41 0.5分 * 13:46 0.5分 * 13:47  3分 11_cyc * 13:50 0.5分 * 13:51 2分 * * タスクハンドラ分割のポイント スイッチは、20ms毎にポーリングして押し下げを監視する。そのため、これを周期ハンドラとして実装する。 μ秒オーダーの時間計測に関して、サービスコールの割り込み禁止時間自体がμ秒~数十μ秒となる。そのため、カーネル管理割り込みでは正確に時間計測できない。カーネル管理外割り込みとして設定する。 タスク構成としては、①モード毎にタスクを用意する。②機能毎にタスクを用意する。の2案が考えられるが、ベースとなるソフトウェア構成を大きく変更せず実現するためには②の案がよい。 ミドルウェアとして提供されるADPCM処理および内蔵フラッシュ書き換え処理はライブラリとして使用する。 各機能ごとにタスク、ハンドラに分割 タスク優先度割り当てのポイント 音声録再制御中は他のタスクへの切り替えが発生しないようにする必要がある。そのため、システム状態管理タスクの優先度を音声録再制御タスクより低く設定する。 LED点灯制御タスク、LCD表示制御タスクに関しては、音声録再制御タスクから変更が必要な際にのみ実行されるように制御し、ベースとなるソフトウェアの変更を少なくした。すなわち、音声録再制御タスクより、 LED点灯制御タスク、LCD表示制御タスクの優先度を高く設定する。 高優先度 LCD表示制御タスク、LED点灯制御タスク 中優先度 音声録再制御タスク 低優先度 システム状態管理タスク インタフェース設計のポイント スイッチ押し下げのイベント通知に関しては、2種類のスイッチ押し下げに対して、ひとつのタスクで処理を行うため、「発生したイベントの種別に応じて処理をわけたい」に示したようにイベントフラグを用いて実現する。 音声録再制御処理タスクから、LED点灯制御処理、LCD表示制御処理へのイベント通知に関しては単純な通知のみであるため、「直接通信の機能」で実現する。また、本機能のデメリットとして、相手のタスクIDを知っておく必要があるため、タスク同士の独立性が低くなるがこれは、イベントを通知する処理をラップする関数を用意して、独立性を維持するようにする。 演習 OSへの割り込みハンドラの登録方法 μ秒オーダの時間計測用割り込みハンドラ interrupt_vector[22]{ entry_address = timeout(); os_int = NO; }; カーネル管理外割り込みと して登録するため、os_intをNOに設定します。 音声出力用割り込みハンドラ interrupt_vector[7]{ entry_address = put_voice(); os_int = YES; }; 割り込み番号を設定します。 タイマRAの割り込み番号は22であるのでここには22を設定します。 カーネル管理割り込みと して登録するため、os_intをYESに設定します。 OSへのタスクの登録方

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档