ユーザ作成部とメモリレイアウト


ユーザ作成部

【ユーザ作成部とは?】

PICROSを使ってマルチタスクのシステムを作成するとき、ユーザ側で
コーディングあるいはセットしなければならない部分を「ユーザ作成部」
と呼び、下記の項目となります。

(1)定数設定
  タスク数(MAX_ID)の値と汎用レジスタ開始番地(ST_REG)のみEQU
  命令かSET命令で指定する。
  この指定はPICROSの直前で行う必要がある。しかし標準のままで
  良いときは何もしなくとも良い。
(2)ユーザ側処理部へのフック設定
  ユーザで初期化時にやりたいこと、割り込みでユーザとしてやりたい
  こと、アイドル時にユーザとしてやりたいことなどをサブルーチンと
  して作成し、それへのCALL命令を追加する。
(3)データエリアの確保
  TCTと呼ぶエリアをデータメモリ部に確保する。
(4)TJT,TJSTのジャンプテーブルの作成
  タスクへのジャンプテーブルをプログラムメモリ部に作成する。
(5)ユーザ側初期設定、割り込み処理部作成
  ユーザで初期化時にやりたいこと、割り込みでユーザとしてやりたい
  こと、アイドル時にユーザとしてやりたいことなどをサブルーチンとして
  作成する。実行は(2)のフックから呼び出される。
(6)タスク
  実際の機能を実現する全て。


全体メモリレイアウト

PICROSを使う場合の全体のメモリ配置は下記のようにします。

【プログラムエリア】

プログラムメモリ部のレイアウトは下図のようにします。
Bank0部分にPICROSを配置するのでBank0が少し複雑なレイアウト
となります。







(1)PICROSはその全体をBank0の0番地から置く。
  PICROSは256ワードの構成としているので0xFF番地まで使用する。
(2)またPICROSの直後である0x100番地からはTJTとTJSTを置く。
 このTJTとTJSTはユーザが作成するタスクに依って作成する必要が
 あり、具体的な内容は別ページの詳細を参照のこと。
 またTJSTはプログラムエリアが2Kワード以下のものについては、
 エリアを縮小することが可能である。
(3)上図のフックエリア詳細に示されるように、0番地付近にはユーザが
 作成する初期化や割り込みなどのルーチンへのCALL命令を置く。
 このCALL命令は図に示すような番地に置くことが必要で、他の番地に
 置くことは出来ない。
 またユーザ部を作成する必要が無い場合にには、何もする必要は無い。
 ユーザ部のプログラムの具体的な作成方法は別ページを参照すること。

【データメモリエリア】

(1)データメモリエリアのBank0には、0番地からPICROSが使うワーク
 エリアを確保する。ワークエリアとして必要なのは、3バイトのみである。
(2)ワークエリアの直後にTCT用のエリアを確保する。
 このサイズはタスク数の2倍だけのバイト数が必要である。
 このエリアはスペースの確保だけで良く、データの内容は全てPICROS
 自身が管理する。





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