CLASS(TCL_1){             I2sドライバや転送バッファの管理はMAIN_TASKで行う
    CRE_TSK(MAIN_TASK, { TA_ACT, 0, main_task,
              MAIN_PRIORITY, STACK_SIZE, NULL });

    CRE_SEM(I2SDMA_SEM, { TA_NULL, 0, 1 });
    CRE_SEM(AUDIO_SEM, { TA_NULL, 0, 1 });
    CRE_SEM(AUDIOLOCK_SEM, { TA_NULL, 1, 1 }); I2SDMA_SEMがDMAの終了をタスクに通知するためのセマフォ．AUDIOLOCK_SEMはワーク・バッファの管理データのタスク間の排他制御を行う
    CRE_SEM(SPI1DMA_SEM, { TA_NULL, 0, 1 });
    CRE_SEM(SPI1LOCK_SEM, { TA_NULL, 1, 1 });
}

CLASS(TCL_1_ONLY){
    ATT_ISR({TA_NULL, SPI1_PORTID, INTNO_SPI,
             spi_isr, 1 });
    CFG_INT(INTNO_SPI, { TA_ENAINT | INTATR_SPI,
            INTPRI_SPI });
    ATT_ISR({TA_NULL, DMA_INTNO, INTNO_DMA, dma_isr,
            1 });
    CFG_INT(INTNO_DMA, { TA_ENAINT | INTATR_DMA,
            INTPRI_DMA });
}

CLASS(TCL_2){   libmadを実行するタスクは優先的に動けるようにコア１に設定
    CRE_TSK(MAD_TASK, { TA_NULL, 0, mad_task,
            HIGH_PRIORITY, (STACK_SIZE*2), NULL });
}
