Application Report
JAJA237この資料は、Texas Instruments Incorporated(TI)が英文で記述した資料 を、皆様のご理解の一助として頂くために日本テキサス・インスツルメンツ (日本TI)が英文から和文へ翻訳して作成したものです。 資料によっては正規英語版資料の更新に対応していないものがあります。 日本TIによる和文資料は、あくまでもTI正規英語版をご理解頂くための補 助的参考資料としてご使用下さい。 製品のご検討およびご採用にあたりましては必ず正規英語版の最新資料を ご確認下さい。 TIおよび日本TIは、正規英語版にて更新の情報を提供しているにもかかわ
TMSx70 MCUのRTI(リアルタイム割り込み)を使用して
オペレーティングシステムのTickを発生させる方法
参 考 資 料
このアプリケーションノートの目的は、T M Sx70シリーズ MCUのRTIモジュールの設定方法の一助となることである。 TIのTMSx70ファミリーのMCUはローパワー32ビットRISC MCUファミリーの一員で先進的なアーキテクチャ、豊富な周辺 セットを備えている。 Hari Udayakumar要 約
SPNA123 翻訳版 最新の英語版資料 http://www.ti.com/lit/spna123 内 容 1. イントロダクション ...2 2. OSのためのティック生成 ...33. Appendix A Software Listing ...7
説明図 図1. RTI Module Block Diagram ...2
図2. RTI Counter Block (x) Diagram ...3
図3. Operating System Tick Generation Block Diagram...3
図4. RTI Clock Source Selection and Pre-Scaling ...4
図5. Operating System Tick Output Waveform...5
図6. Software Flow Diagram ...6
2
1 イントロダクション
1.1 リアルタイム割り込み
RTIモジュールはOSのためのタイマー機能やコードのベンチ マークに必要なタイマー機能を提供する。このモジュールはマ ルチプルカウンターを備えており、このマルチプルカウンターは OSのスケジューリングに必要なタイムベースを定義する。 このアプリケーションノートはTMSx70 RTI ユーザーガイドと 併用して参照されるものである。 主な特長 • 2つの独立したカウンターブロックで構成(異なったタイム ベースを生成)それぞれのブロックは次のもので構成され ている - 32ビット プリスケール・カウンタ - 32ビット フリーラン・カウンタ • システムあるいは周辺割り込みのために、2つまでのタイ ムスタンプ(キャプチャ)。それぞれのカウンタブロックに対 して1つ • フリーラン・カウンタ0は、内部プリスケール・カウンタあるい は外部イベントによりインクリメント可能 (クロック監視を含むFlexRayネットワークでのアプリケー ションの同期のため) • 外部クロックが予め定義されたウィンドウの中でインクリ メントされ故障と判断された場合は、オプショナルの外部 クロック監視回路によって内部のプリスケール・カウンタ0 に切り替え可能 • OS用のティックやDMAリクエストのための4つのコンフィ ギュアブル・コンペアレジスタ それぞれのイベントはカウンタブロック0あるいはカウンタ ブロック1でドライブされる • 全てのコンペアレジスタの自動アップデート(コンペアマッ チで周期割り込みを発生させるとき) • 割り込みの高速なイネーブル/ディスエーブル • どのようなクロックソースから生成されたRTIクロック入力 でも、システムモジュールの中で選択可能Counter Block 0
64 bit
incl Flex Ray Feature
Capture Feature
Event0
VIM REQ[2]
DMA REQ[12]
Event2
VIM REQ[4]
DMA REQ[18]
Event3
VIM REQ[5]
DMA REQ[19]
Event1
VIM REQ[3]
DMA REQ[13]
Counter Block
64 bit
Capture Feature
1
32 32 32 32 32 32RTICLK
RTICLK
FlexRay Macrotick (NTU0)
FlexRay Start of Cycle
図 1. RTI Module Block Diagram
www.tij.co.jp
1.3 RTIカウンタ ブロック
(x)ダイヤグラム
下図(図2)はRTIカウンタブロック(X)の簡略化されたブ ロック図である。 RTICLKは32ビットRTIUPCxカウンタでプリスケールさ れる。 RTIUPCxカウンタはRTICPUCxレジスタの中の比較 値が到達するまでカウントアップする。比較値が一致する と、RTIFRCxカウンタはインクリメントされる。 0 : 32 2 ! 0 : 1 RTICLK If CPUx FRCx RTICLK If CPUx FRCx CPUCxINT_Req
or
DMA_Req
RTICLK
RTIUPCx
RTICPUCx
RTIFRCx
RTICOMPx
RTI 64-Bit Counter Block (x)
RTICAUCx
RTICAFRCx(1)
図 2. RTI Counter Block (x) Diagram
図 3. Operating System Tick Generation Block Diagram
GIOA [2] GIOA [1] GIOA [0]
1ms
10ms
5ms
OS
Task 1
control block
Task 2
control block
Task 3
control block
Real Time
Interrupt
2 OSのためのティック生成
この項はある周期(調整可能)でOSティック割り込みを発 生するためのRTIモジュールの使い方を説明する。 必要なOSティックの生成と、それに相当するタスクを実 行するために3つのコンペア割り込みが用いられる。タス 0 : 32 2 ! 0 : 1 RTICLK If CPUx FRCx RTICLK If CPUx FRCx CPUCxINT_Req
or
DMA_Req
RTICLK
RTIUPCx
RTICPUCx
RTIFRCx
RTICOMPx
RTI 64-Bit Counter Block (x)
RTICAUCx
RTICAFRCx(1)
図 2. RTI Counter Block (x) Diagram
図 3. Operating System Tick Generation Block Diagram
GIOA [2] GIOA [1] GIOA [0]
1ms
10ms
5ms
OS
Task 1
control block
Task 2
control block
Task 3
control block
Real Time
Interrupt
クコールを解りやすくするために、独立したI/Oピンはサン プルコードの中でトグルされている。 異なったタイムベースを使ってタスクをトリガーするた めに、3つの異なった割り込みをどのように構成するかを、 このアプリケーションノートは示している。(図3を参照)2.1 フロー図
第3図は割り込みを用いて、異なる時間間隔でタスクを起動 するRTIモジュールの使い方を示します。• Compare 0 Interrupt – Task1 (GIO- PortA [0] Pin
Toggle) - 10mS.
• Compare 1 Interrupt – Task2 (GIO- PortA [1] Pin
Toggle) - 5mS.
• Compare 2 Interrupt – Task3 (GIO- PortA [2] Pin
4 www.tij.co.jp
2.2 周波数とTカウントの計算について
カウンタブロックへのRTICLKはアプリケーションの要 求にしたがって、システムモジュールの中のRTICLKSRC レジスタをプログラム可能である。もし、RTICLK源が VCLKだけの場合、RTICLK源はVCLKよりも少なくとも 3倍遅くなくてはならない。これはRTICLKSRCレジスタ のRTIxDIVビットをコンフィグすることによって可能。 図4はRTICLKSRCレジスタとRTICPUCxレジスタを使用 してRTICLKの選択とプリスケールを設定することを現し ている。 RTICPUCxレジスタを設定してRTICLKを2分の1にプリス ケールします。セクション1.3を参照してください。2.3 カウント値の比較の計算法
周期的なOSのティックのためのコンペアレジスタのカ ウ ン ト 値 は T カ ウ ン ト 周 期 か ら 計 算 で 求 め ら れ る 。 RTICLKはUPカウンタ(x)でプリスケールされ、それぞれの フリーラン(x)カウンタに供給される。 8 • 8 • 0 0 1 1 1 4 1 1 • 0 4 0.25 RITCLK VCLK MHz RTICLK MHz FRC CLK CPUC MHz Tcount FRC CLK MHz s•Compare Count Value Task0 ( 1)
1 10 40000
0.25
T period ms Tcount s
•Compare Count Value Task1 ( 2)
2 5 20000
0.25
T period ms Tcount S
•Compare Count Value Task2 ( 3)
3 1 4000 0.25 T period ms Tcount S (2)
• Task1 = T1period = 10ms
• Task2 = T2period = 5ms
• Task3 = T3period = 1ms
(3) RTICLK RTIx SRC [3:0] RTICLKSRC RegRTIxDIV [3:0] RTIUPCx RTIFRCx
RTICPUC DiffClk
Sources
図 4. RTI Clock Source Selection and Pre-Scaling
8 • 8 • 0 0 1 1 1 4 1 1 • 0 4 0.25 RITCLK VCLK MHz RTICLK MHz FRC CLK CPUC MHz Tcount FRC CLK MHz s
•Compare Count Value Task0 ( 1)
1 10 40000
0.25
T period ms Tcount s
•Compare Count Value Task1 ( 2)
2 5 20000
0.25
T period ms Tcount S
•Compare Count Value Task2 ( 3)
3 1 4000 0.25 T period ms Tcount S (2)
• Task1 = T1period = 10ms
• Task2 = T2period = 5ms
• Task3 = T3period = 1ms
(3) RTICLK RTIx SRC [3:0] RTICLKSRC RegRTIxDIV [3:0] RTIUPCx RTIFRCx
RTICPUC DiffClk
Sources
図 4. RTI Clock Source Selection and Pre-Scaling
8 • 8 • 0 4 0 1 1 1 1 1 • 0 4 0.25 RITCLK VCLK MHz RTICLK MHz FRC CLK MHz CPUC Tcount FRC CLK MHz s
•Compare Count Value Task0 ( 1)
1 10 40000
0.25
T period ms Tcount s
•Compare Count Value Task1 ( 2)
2 5 20000
0.25
T period ms Tcount S
•Compare Count Value Task2 ( 3)
3 1 4000 0.25 T period ms Tcount S (2)
• Task1 = T1period = 10ms
• Task2 = T2period = 5ms
• Task3 = T3period = 1ms
(3) RTIx SRC [3:0] RTICLKSRC RegRTIxDIV [3:0] RTIUPCx RTIFRCx
RTICPUC DiffClk
Sources
図 4. RTI Clock Source Selection and Pre-Scaling
このように、INT0、INT1、INT2の割り込みのために周 期的なティックを発生することができる。 8 • 8 • 0 0 1 1 1 4 1 1 • 0 4 0.25 RITCLK VCLK MHz RTICLK MHz FRC CLK CPUC MHz Tcount FRC CLK MHz s
•Compare Count Value Task0 ( 1)
1 10 40000
0.25
T period ms Tcount s
•Compare Count Value Task1 ( 2)
2 5 20000
0.25
T period ms Tcount S
•Compare Count Value Task2 ( 3)
3 1 4000 0.25 T period ms Tcount S (2)
• Task1 = T1period = 10ms
• Task2 = T2period = 5ms
• Task3 = T3period = 1ms
(3) RTICLK RTIx SRC [3:0] RTICLKSRC RegRTIxDIV [3:0] RTIUPCx RTIFRCx
RTICPUC DiffClk
Sources
5 www.tij.co.jp 図 5. OSティック出力波形
2.4 OSティック出力波形
2.5 OSティック生成のためのコンフィグ
レーション(手順)
• システムモジュールの中のRTICLKSRCレジスタを使 用して、VCLKを選択する • 次のクロック設定を選択: 2 HCLK OSCIN HCLK VCLK RTICLK VCLK (4) Start Select RTI CLK source Configure UCx, CPUCx, FRCx Configure GIOA, COMPx Reg and UDCOMPx Reg Enable the interruptEnable RTI Counter Block Check for Interrupt
Task 1 ISR Task 2 ISR Task 3 ISR
Clear INT0
interrupt Clear INT1interrupt Clear INT2interrupt
Toggle GIOA
[0] Toggle GIOA[1] Toggle GIOA[2]
• RTICOMP(x)レジスタとそれぞれのRTIUDCP(x)レ ジスタを(x)カウント値を初期化するために設定 • GIOポートAを出力に設定 • RTIモジュール割り込みを設定 例:RTISETINTとステータスレジスタ 例:RTIINTFLAG - 割り込みのペンディングをクリア - コンペア0, 1, 2割り込みをイネーブル • コンペア0割り込みサービスルーチンは次のことを行 うように設定: - Comp0割り込みフラグはRTIINTFLAGレジスタ のINT0ビットに1を書き込みことによってクリ アされる - GIO ポートA - ピン0をトグル • コンペア1割り込みサービスルーチンは次のことを行 うように設定: - Comp1割り込みフラグはRTIINTFLAGレジスタ のINT1ビットに1を書き込みことによってクリ アされる - GIO ポートA - ピン1をトグル • コンペア2割り込みサービスルーチンは次のことを行う ように設定: - Comp2割り込みフラグはRTIINTFLAGレジスタ のINT2ビットに1を書き込みことによってクリ アされる - GIO ポートA - ピン2をトグル
6 www.tij.co.jp 2 HCLK VCLK RTICLK VCLK (4)
図 6. Software Flow Diagram Start Select RTI CLK source Configure UCx, CPUCx, FRCx Configure GIOA, COMPx Reg and UDCOMPx Reg Enable the interrupt
Enable RTI Counter Block Check for Interrupt
Task 1 ISR Task 2 ISR Task 3 ISR
Clear INT0
interrupt Clear INT1interrupt Clear INT2interrupt
Toggle GIOA
[0] Toggle GIOA[1] Toggle GIOA[2]
2.6 Software Flow
図 7. Output Waveform
www.tij.co.jp