TCT、TJTの作り方


TCTの作成法

【TCTとは?】

TCTはTask Control Tableの略で、各タスクごとの現在状態と、マクロ
命令のパラメータを保存する場所です。各タスク毎に2バイトのデータ
メモリエリアを使用します。

【TCTの作り方】

TCT(Task Control Table)はPICROSの内部で使用する各タスクの
現在状態を格納しておくデータエリアです。
従って、ユーザ側で用意するのは、エリアのみ用意するだけです。
これを図で表すと下記の様になります。必要な条件は下記です。

 (1)TCTを置く場所はデータメモリのBank0とする。
 (2)TCTのためにユーザで確保しなければならないデータ
  メモリサイズは
       タスク数×2 バイトです。


データメモリエリアの開始番地
と終了番地はPICチップ種類に
より異なっている。
そのため開始番地をST_REGと
いう変数でアセンブル時に指定
する必要がある。




TJTの作り方

【TJTの構成】

TJT(Task Jump Table)は各タスクへのジャンプテーブルで、2段階の
ジャンプテーブルとなっています。
TJTはこの1段目のテーブルで、各タスクのStage0のジャンプ命令が
あるTJST内のアドレスを返すRETLIT命令の一覧表となっています。

原理を図で表すと下記のようになり、作成に必要な条件は下記です。



リンクを張る


 (1)TJTの格納開始アドレスは0x100番地で固定です。
 (2)タスク1からタスク数分だけ順に並んでいる必要があり
  ます。
 (3)各テーブル要素の中味はRETLW命令となっており、各タスク
  のStage0のジャンプ命令のあるTJSTの位置を返す様にします。
  このためのコーディングは下記の様にします。

    ORG 0x100
    DT task1,task2,task3
    DT  task4,----,taskm

   (ここでtasknはTJSTのstage0のある場所のラベルです)
   (またこれをアセンブルするとwarningが出ますが気に
    しなくてそのままでOKです。)

【TJSTの作り方】

TJST(Task Jump SubTable)は、各タスクのStageごとへのジャンプ命令
(GOTO命令)を順に並べて格納しているテーブルです。
プログラムエリアのどこにでもジャンプ可能とするため、プログラム
カウンタの上位バイト(PCLATH)のBankビットをセットしています。

図で表すと下図となり、作成に必要な条件は下記です。





リンクを張る

 (1)格納位置はTJT直後から0x1FF番地までの間とする。
 (2)タスク1のstage0から順に必要なstage分全てが並んでいること
 (3)各要素の中味は下記とする。

    BCF  PCLATH,3  (BCFかBSFかはタスク位置による)
    BSF  PCLATH,4  (  〃           )
    GOTO  task1stage0 (タスク1のstage0の開始番地へ)

   (ここでPCLATHのBankビットの指定は、タスクが存在する
    エリアに合わせる必要がある)
 (4)プログラムエリアが2Kワード以下のチップの場合には
  全てBank0なので、この中味を簡単化し下記の様にすることが
  出来るバージョンが用意されている。

    GOTO  task1stage0
  
  これを表したのが下図である。

  






  次のページへ     目次ページへ