コンフィグファイルについて

コンフィグファイルは、カーネルやドライバなどのコンフィギュレーションを定義するファイルです。
C言語のヘッダファイルとして記述し、ファイル名をconfig.hとします。

EZ-USB/EZ-USB FX2の場合、ポートの入出力の初期状態を指定可能です。



カーネル設定

定義名定義説明
KNL_DBG_PARAMAPI呼び出し時にIDの範囲が正しいかなど、パラメータチェックを行いエラーを返します。
この定義がない時はエラーチェックを行いません。
KNL_TASKSW_HOOK_関数名タスクが切り替わる時に通知を受ける関数を指定します。
関数名の前に'_'が必要です。
KNL_CFG_TSK_PRI最大優先度タスクの優先度を指定します。
例)2を指定した場合、1-2を使用可能
BEGIN_KNL_CFG()カーネルリソース定義の開始を宣言します。
END_KNL_CFG()カーネルリソース定義の終了を宣言します。
CRE_TSK()tskid,拡張情報,関数,優先順位,スタックサイズタスクを生成します。
スタックサイズは最小で32バイト程度、printfなどを使用する時は64バイト程度指定すれば安全
CRE_SEM()semid,初期値,最大値セマフォを生成します。
CRE_CYC()cycid,属性,起動時間(ms)周期ハンドラを生成します。
属性には以下を指定できます。
 0:停止状態で生成
 TA_STA:動作状態で生成
DEF_INH()割り込みベクタ,属性,関数割り込みハンドラを定義します。
属性には以下を指定できます。
 0:未使用(RETI)
 TA_ASM:アセンブリ言語で定義の関数
 TA_HLNG:C言語で定義の関数
 TA_CTX:OSが管理(この属性がない時APIは使用できない)
  TA_ASM、またTA_HLNGと共に指定する

例)

#define KNL_DBG_PARAM							/* パラメータチェック       */
#define KNL_TASKSW_HOOK			_tasksw_hook			/* タスクスイッチフック処理 */
#define KNL_CFG_TSK_PRI			3				/* タスク優先度の最大値     */

/* タスク ID */
#define ADC_TSKID			1				/* A/D 変換 */
#define PRESSURE_TSKID			2				/* 気圧変換 */
#define DRAW_TSKID			3				/* 描画     */

/* セマフォ ID */
#define I2C_SEMID			1				/* I2C 同期 */
#define SPI_SEMID			2				/* SPI 同期 */

/* 周期ハンドラ ID */
#define ADC_CYCID			1				/* A/D 変換 */

BEGIN_KNL_CFG()

/* タスク */
CRE_TSK(ADC_TSKID,      0x0000, adc_tsk,      1, 64)
CRE_TSK(PRESSURE_TSKID, 0x0000, pressure_tsk, 2, 64)
CRE_TSK(DRAW_TSKID,     0x0000, draw_tsk,     3, 64)

/* セマフォ */
CRE_SEM(I2C_SEMID, 0, 1)
CRE_SEM(SPI_SEMID, 1, 1)

/* 周期ハンドラ */
CRE_CYC(ADC_CYCID, 0, adc_cychdr, 5)					/* A/D 変換 5ms周期 */

/* 割り込みハンドラ */
DEF_INH(0x0003, 0)							/* INT0 外部割り込み                */
DEF_INH(0x000b, 0)							/* タイマ0割り込み                 */
DEF_INH(0x0013, 0)							/* INT1 外部割り込み                */
DEF_INH(0x001b, 0)							/* タイマ1割り込み                 */
DEF_INH(0x0023, 0)							/* USART0 割り込み                  */
DEF_INH(0x002b, 0)							/* タイマ2割り込み(カーネル予約) */
DEF_INH(0x0033, 0)							/* WAKEUP/WU2・レジューム割り込み   */
DEF_INH(0x003b, 0)							/* USART1 割り込み                  */
DEF_INH(0x0043, 0)							/* USB 割り込み                     */
DEF_INH(0x004b, TA_HLNG|TA_CTX, i2c_isr)				/* I2C 割り込み                     */
DEF_INH(0x0053, 0)							/* INT4 外部割り込み                */
DEF_INH(0x005b, 0)							/* INT5 外部割り込み                */
DEF_INH(0x0063, 0)							/* INT6 外部割り込み                */

END_KNL_CFG()


EZ_USB/FX2LPは、GPIOの初期状態を指定することが可能です。
設定を行いたい時は、以下のマクロを定義します。



ポート設定

定義名定義説明
PORTn_DIRb7,b6,b5,b4,b3,b2,b1,b0ポートの向きを指定します。
nには、ポートAならA、ポートBならBを指定します。
出力に設定する時は、_OUT_、入力にする時は_IN__を指定します。
PORTn_OUTb7,b6,b5,b4,b3,b2,b1,b0出力ポートの値を指定します。
nには、ポートAならA、ポートBならBを指定します。
0を設定する時は__0__、1を出力する時は__1__を指定します。

例)PORTAの7bit目を0出力、PORTBの1bit目を1出力、PORTCは無視する場合

#define PORTA_DIR                    PORT_DIR(_OUT_,_IN__,_IN__,_IN__,_IN__,_IN__,_IN__,_IN__)
#define PORTA_OUT                    PORT_DIR(__0__,__0__,__0__,__0__,__0__,__0__,__0__,__0__)
#define PORTB_DIR                    PORT_DIR(_IN__,_IN__,_IN__,_IN__,_IN__,_IN__,_IN__,_OUT_)
#define PORTB_OUT                    PORT_DIR(__0__,__0__,__0__,__0__,__0__,__0__,__0__,__1__)


ドライバ設定

ドライバのコンフィグレーションもこのファイルへ記述します。
定義はドライバごとに異なります。


例)

/* ---------------------------------------------------------------- */
/*   console                                                        */
/* ---------------------------------------------------------------- */
#define PUTCHAR_TxD			IOA_0				/* TxD pin */


/* ---------------------------------------------------------------- */
/*   I2C                                                            */
/* ---------------------------------------------------------------- */
#define I2C_TMOUT			100				/* タイムアウト時間 */
#define I2C_SPEED			400				/* 通信速度         */


/* ---------------------------------------------------------------- */
/*   SPI                                                            */
/* ---------------------------------------------------------------- */
#define SPI0_SCLK			IOB_0				/* SCLK pin */
#define SPI0_MOSI			IOB_1				/* MOSI pin */
#define SPI0_MISO			IOB_2				/* MISO pin */