OSDN Git Service

DMAディセーブル試験の前
[trx-305dsp/dsp.git] / trx305 / framework.h
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  *
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *  Copyright (C) 2005 by Embedded and Real-Time Systems Laboratory
9  *              Graduate School of Information Science, Nagoya Univ., JAPAN
10  *
11  *  上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
12  *  によって公表されている GNU General Public License の Version 2 に記
13  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14  *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
15  *  利用と呼ぶ)することを無償で許諾する.
16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18  *      スコード中に含まれていること.
19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
22  *      の無保証規定を掲載すること.
23  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
25  *      と.
26  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
28  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
29  *        報告すること.
30  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32  *
33  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
35  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
36  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
37  *
38  *  @(#) $Id: sample1.h,v 1.3 2009/05/13 13:10:13 suikan Exp $
39  */
40
41 #ifndef _FRAMEWORK_H_
42 #define _FRAMEWORK_H_
43
44 /*
45  *  RX_IFアプリケーションのヘッダファイル
46  */
47
48 #include <t_services.h>
49 #include "demodulator.h"
50
51 /**
52  * \brief RX_IF受信SPORTバッファのDMAサイズ
53  * \details
54  * RX_IF受信SPORTバッファのDMAサイズ。単位は[count]。バイト単位ではなく
55  * 転送カウントが単位なので注意。
56  * ワイドFMモードの場合、1サンプルが16カウントになる。
57  * 非ワイドFMモードでは、1サンプルが4カウント。
58  *
59  * バッファサイズが32の場合、ワイドFMモードでは2サンプル(63uS)ごとに、
60  * 非ワイドFMモードでは8サンプル(252uS)ごとに割り込みがかかる。
61  *
62  * なお、このバッファサイズは必ず4の倍数にすること。
63  */
64 #define RXIF_BUFSIZE 32
65
66 /**
67  * \brief AF送信SPORTバッファのDMAサイズ
68  * \details
69  * AF送信SPORTバッファのDMAサイズ。単位は[count]。バイト単位ではなく
70  * 転送カウントが単位なので注意。
71  * 1サンプルが2カウント。
72  *
73  * バッファサイズが8の場合、4サンプル(126uS)ごとに割り込みがかかる。
74  *
75  * なお、このバッファサイズは必ず2の倍数にすること。
76  */
77 #define AF_BUFSIZE 8
78
79
80 /**
81  * \brief TASK_RX_IF と TASK_AF の間のデータキューサイズ
82  * \details
83  * 2つのタスクの間のキューのサイズ[エントリ]を指定する。両タスクの
84  * 実行の間にはWideFM/nonWideFM切り替えと、割り込み周期の差異に起因する
85  * ジッターが生じするため、キューが必要になる。
86  *
87  * キューのサイズを決める要素は2つある。ひとつはキュー受信側
88  * (TASK_AF)がデータを読み取る周期、もうひとつはキュー送信側
89  * (TASK_RX_IF)がデータを読み取る周期である。いずれも単位はサンプルで、
90  * このうち大きなほうがデータキューのサイズを決める。
91  *
92  * キューはオーバーフローとアンダーフローを避けるように作らなければならない。
93  * アンダーフローはキューの受信側の割り込みが先行した場合に発生する。
94  * これを避けるには、受信側が先行した場合に備えてダミーデータを
95  * キューに入れておく必要がある。この数は、先で論じた周期の一番大きい物に
96  * しておく。
97  *
98  * オーバーフローはキューの送信側の割り込みが先行した場合に発生する。
99  * これを避けるには、送信側が先行した場合に備えて空き領域を
100  * 確保する必要がある。この数は先で論じた周期の一番大きい物に
101  * しておく。
102  *
103  * 結論として、キューには、最も長い割り込み周期[単位はサンプル]の倍の
104  * 領域が必要である。
105  *
106  * なお、このソフトウェアは1サンプルあたり2[エントリ]をキューに格納するため、
107  * キューの長さ[エントリ]は、割り込み周期[サンプル]の四倍になる。
108  *
109  *
110  */
111 #define AF_QUESIZE          40      /* 送受信タスクの間のキューの長さ。8サンプルが最長割り込み周期と仮定してさらにマージンをもたせている */
112
113 #define WIDE_FM_OVERSAMPE   8       /* AF1サンプルあたりのWide FM サンプル数 */
114
115 #define WIDE_FM_FLAG        2       /* プライマリ・チャンネルのWIDE FM Modeを表すフラグのマスク */
116
117 /*
118  *  各タスクの優先度の定義
119  */
120
121 #define TASK_PRIORITY_RX_IF 10  /* RX-IF DMA処理タスクの優先度。復調も行う */
122 #define TASK_PRIORITY_AF     5  /* AF DMAタスクの優先度。送信なので優先度高 */
123
124 /*
125  *  ターゲット依存の定義(CPU例外ハンドラの起動方法など)
126  */
127
128
129 #define STACK_SIZE_RX_IF    1024    /* タスクのスタックサイズ */
130 #define STACK_SIZE_AF       1024    /* タスクのスタックサイズ */
131 #define TASK_PORTID         1       /* 文字入力するシリアルポートID */
132
133
134
135 /*
136  *  関数のプロトタイプ宣言
137  */
138 #ifndef _MACRO_ONLY
139
140 extern void rx_if_task(VP_INT exinf);   /* SPORT0 RX DMAバッファの内容を復調するタスク */
141 extern void af_task(VP_INT exinf);   /* SPORT0 TX DMAバッファにAFデータを書き込むタスク */
142 extern void af_task(VP_INT exinf);      /* 復調済みAF信号をSPORT0 TX DMAバッファにコピーするタスク */
143 extern void sport0_rx_int_handler( void );  /* SPORT0 RX DMA割り込みのハンドラ */
144 extern void sport0_tx_int_handler( void );  /* SPORT0 TX DMA割り込みのハンドラ */
145 void init_peripherals(VP_INT p);        /* ペリフェラルの初期化関数 */
146
147
148 #endif /* _MACRO_ONLY */
149
150 #endif /* _FRAMEWORK_H_ */