コンフィグファイルは、カーネルやドライバなどのコンフィギュレーションを定義するファイルです。
C言語のヘッダファイルとして記述し、ファイル名をconfig.hとします。
EZ-USB/EZ-USB FX2の場合、ポートの入出力の初期状態を指定可能です。
定義名 | 定義 | 説明 |
---|---|---|
KNL_DBG_PARAM | API呼び出し時に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_DIR | b7,b6,b5,b4,b3,b2,b1,b0 | ポートの向きを指定します。 nには、ポートAならA、ポートBならBを指定します。 出力に設定する時は、_OUT_、入力にする時は_IN__を指定します。 |
PORTn_OUT | b7,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 */