⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 var_misc.c

📁 ecos移植到R8H系列的源码。源码包来自http://www.cetoni.de/develop/develop_ecosh8s_en.html
💻 C
📖 第 1 页 / 共 3 页
字号:
/// fast access in the default interrupt vsr when umasking I0-I2 bits in
/// exr. 
///
cyg_uint8 hal_int_prio_tbl[CYGNUM_HAL_ISR_COUNT] =
{ 
    7, 7, 7, 7, 7, 7, 7, 7,   7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7,   7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7,   7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7,   7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7,   7, 7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7,   7, 7, 7, 7
}; 


//===========================================================================
//                       INTERRUPT ACKNOWLEDGE TABLE
// DESCRIPTION:
//     This table contains all H8S/2674 interrupt status registers and the
//     masks required for acknowledging the interrupt
//===========================================================================
///
/// This type stores mask and address of interrupt acknowledge register.
///
typedef struct
{
    cyg_uint32 mask    :  8;  ///< interrupt acknowledge mask
    cyg_uint32 address : 24;  ///< interrupt acknowledge register
} int_ackn_t;

//
// Use this macro when entering entries into the hal_int_mask_tbl. We store the
// masks here so we do no need to do a not operation during runtime
// 
#define ACKN_TBL_ENTRY(_int_status_reg_, _mask_) {(_mask_), (_int_status_reg_)}
#define CLR_BIT(_no_) ((cyg_uint8)(~(1 << (_no_))))

///
/// Interrupt acknowledge table.
/// This is the fix interrupt acknowledge table. It is const and so it will 
/// reside within ROM.
///
const int_ackn_t hal_int_ackn_tbl[CYGNUM_HAL_ISR_COUNT] = 
{
    ACKN_TBL_ENTRY(0,            0),          // 000  RSV
    ACKN_TBL_ENTRY(0,            0),          // 001  RSV
    ACKN_TBL_ENTRY(0,            0),          // 002  RSV
    ACKN_TBL_ENTRY(0,            0),          // 003  RSV
    ACKN_TBL_ENTRY(0,            0),          // 004  RSV
    ACKN_TBL_ENTRY(0,            0),          // 005  RSV
    ACKN_TBL_ENTRY(0,            0),          // 006  RSV
    ACKN_TBL_ENTRY(0,            0),          // 007  NMI
    ACKN_TBL_ENTRY(0,            0),          // 008  RSV
    ACKN_TBL_ENTRY(0,            0),          // 009  RSV
    ACKN_TBL_ENTRY(0,            0),          // 010  RSV
    ACKN_TBL_ENTRY(0,            0),          // 011  RSV
    ACKN_TBL_ENTRY(0,            0),          // 012  RSV
    ACKN_TBL_ENTRY(0,            0),          // 013  RSV
    ACKN_TBL_ENTRY(0,            0),          // 014  RSV
    ACKN_TBL_ENTRY(0,            0),          // 015  RSV
    ACKN_TBL_ENTRY(CYGARC_ISR,   CLR_BIT(0)), // 016  IRQ 0
    ACKN_TBL_ENTRY(CYGARC_ISR,   CLR_BIT(1)), // 017  IRQ 1
    ACKN_TBL_ENTRY(CYGARC_ISR,   CLR_BIT(2)), // 018  IRQ 2
    ACKN_TBL_ENTRY(CYGARC_ISR,   CLR_BIT(3)), // 019  IRQ 3
    ACKN_TBL_ENTRY(CYGARC_ISR,   CLR_BIT(4)), // 020  IRQ 4
    ACKN_TBL_ENTRY(CYGARC_ISR,   CLR_BIT(5)), // 021  IRQ 5
    ACKN_TBL_ENTRY(CYGARC_ISR,   CLR_BIT(6)), // 022  IRQ 6
    ACKN_TBL_ENTRY(CYGARC_ISR,   CLR_BIT(7)), // 023  IRQ 7

    //---------------------------------------------------------------------------------
    //
    //
    ACKN_TBL_ENTRY(0,            0),          // 024  SWDTEND
    ACKN_TBL_ENTRY(CYGARC_TCSRR, CLR_BIT(7)), // 025  WOVI
    ACKN_TBL_ENTRY(CYGARC_DRAMCR,CLR_BIT(4)), // 026  CMI
    ACKN_TBL_ENTRY(0,            0),          // 037  RSV
    ACKN_TBL_ENTRY(CYGARC_ADCSR, CLR_BIT(7)), // 028  ADI
    ACKN_TBL_ENTRY(0,            0),          // 029  RSV
    ACKN_TBL_ENTRY(0,            0),          // 030  RSV
    ACKN_TBL_ENTRY(0,            0),          // 031  RSV
    
    //---------------------------------------------------------------------------------
    // TPU 0
    //
    ACKN_TBL_ENTRY(CYGARC_TSR0,  CLR_BIT(0)), // 032  TGI0A
    ACKN_TBL_ENTRY(CYGARC_TSR0,  CLR_BIT(1)), // 033  TGI0B
    ACKN_TBL_ENTRY(CYGARC_TSR0,  CLR_BIT(2)), // 034  TGI0C
    ACKN_TBL_ENTRY(CYGARC_TSR0,  CLR_BIT(3)), // 035  TGI0D
    ACKN_TBL_ENTRY(CYGARC_TSR0,  CLR_BIT(4)), // 036  TCI0V
    ACKN_TBL_ENTRY(0,            0),          // 037  RSV
    ACKN_TBL_ENTRY(0,            0),          // 038  RSV
    ACKN_TBL_ENTRY(0,            0),          // 039  RSV

    //---------------------------------------------------------------------------------
    // TPU 1
    //
    ACKN_TBL_ENTRY(CYGARC_TSR1,  CLR_BIT(0)), // 040  TGI1A
    ACKN_TBL_ENTRY(CYGARC_TSR1,  CLR_BIT(1)), // 041  TGI1B
    ACKN_TBL_ENTRY(CYGARC_TSR1,  CLR_BIT(4)), // 042  TCI1V
    ACKN_TBL_ENTRY(CYGARC_TSR1,  CLR_BIT(5)), // 043  TCI1U
    
    //---------------------------------------------------------------------------------
    // TPU 2
    //
    ACKN_TBL_ENTRY(CYGARC_TSR2,  CLR_BIT(0)), // 044  TGI2A
    ACKN_TBL_ENTRY(CYGARC_TSR2,  CLR_BIT(1)), // 045  TGI2B
    ACKN_TBL_ENTRY(CYGARC_TSR2,  CLR_BIT(4)), // 046  TCI2V
    ACKN_TBL_ENTRY(CYGARC_TSR2,  CLR_BIT(5)), // 047  TCI2U
    
    //---------------------------------------------------------------------------------
    // TPU 3
    //
    ACKN_TBL_ENTRY(CYGARC_TSR3,  CLR_BIT(0)), // 048  TGI3A
    ACKN_TBL_ENTRY(CYGARC_TSR3,  CLR_BIT(1)), // 049  TGI3B
    ACKN_TBL_ENTRY(CYGARC_TSR3,  CLR_BIT(2)), // 050  TGI3C
    ACKN_TBL_ENTRY(CYGARC_TSR3,  CLR_BIT(3)), // 051  TGI3D
    ACKN_TBL_ENTRY(CYGARC_TSR3,  CLR_BIT(4)), // 052  TCI3V
    ACKN_TBL_ENTRY(0,            0),          // 053  RSV
    ACKN_TBL_ENTRY(0,            0),          // 054  RSV
    ACKN_TBL_ENTRY(0,            0),          // 055  RSV
    
    //---------------------------------------------------------------------------------
    // TPU 4
    //
    ACKN_TBL_ENTRY(CYGARC_TSR4,  CLR_BIT(0)), // 056  TGI4A 
    ACKN_TBL_ENTRY(CYGARC_TSR4,  CLR_BIT(1)), // 057  TGI4B
    ACKN_TBL_ENTRY(CYGARC_TSR4,  CLR_BIT(4)), // 058  TCI4V
    ACKN_TBL_ENTRY(CYGARC_TSR4,  CLR_BIT(5)), // 059  TCI4U

    //---------------------------------------------------------------------------------
    // TPU 5
    //
    ACKN_TBL_ENTRY(CYGARC_TSR5,  CLR_BIT(0)), // 060  TGI5A
    ACKN_TBL_ENTRY(CYGARC_TSR5,  CLR_BIT(1)), // 061  TGI5B
    ACKN_TBL_ENTRY(CYGARC_TSR5,  CLR_BIT(4)), // 062  TCI5V
    ACKN_TBL_ENTRY(CYGARC_TSR5,  CLR_BIT(5)), // 063  TCI5U
    
    //---------------------------------------------------------------------------------
    // TMR 0
    //
    ACKN_TBL_ENTRY(CYGARC_8TCSR0,CLR_BIT(6)), // 064  CMIA0
    ACKN_TBL_ENTRY(CYGARC_8TCSR0,CLR_BIT(7)), // 065  CMIB0
    ACKN_TBL_ENTRY(CYGARC_8TCSR0,CLR_BIT(5)), // 066  OVI0
    ACKN_TBL_ENTRY(0,            0),          // 067  RSV
    
    //---------------------------------------------------------------------------------
    // TMR 1
    //
    ACKN_TBL_ENTRY(CYGARC_8TCSR1,CLR_BIT(6)), // 068  CMIA1
    ACKN_TBL_ENTRY(CYGARC_8TCSR1,CLR_BIT(7)), // 069  CMIB1
    ACKN_TBL_ENTRY(CYGARC_8TCSR1,CLR_BIT(5)), // 070  OVI1
    ACKN_TBL_ENTRY(0,            0),          // 071  RSV
    
    //---------------------------------------------------------------------------------
    // DMAC
    //
    ACKN_TBL_ENTRY(CYGARC_DMABCRL, CLR_BIT(4)), // 072  DMTEND0A
    ACKN_TBL_ENTRY(CYGARC_DMABCRL, CLR_BIT(5)), // 073  DMTEND0B
    ACKN_TBL_ENTRY(CYGARC_DMABCRL, CLR_BIT(6)), // 074  DMTEND1A
    ACKN_TBL_ENTRY(CYGARC_DMABCRL, CLR_BIT(7)), // 075  DMTEND1B
    ACKN_TBL_ENTRY(0,            0),            // 076  RSV
    ACKN_TBL_ENTRY(0,            0),            // 077  RSV
    ACKN_TBL_ENTRY(0,            0),            // 078  RSV
    ACKN_TBL_ENTRY(0,            0),            // 079  RSV

    //---------------------------------------------------------------------------------
    // SCI 0
    //
    ACKN_TBL_ENTRY(CYGARC_SSR0,  CLR_BIT(3) & CLR_BIT(4) & CLR_BIT(5)), // 080  ERI0
    ACKN_TBL_ENTRY(CYGARC_SSR0,  CLR_BIT(6)), // 081  RXI0
    ACKN_TBL_ENTRY(CYGARC_SSR0,  CLR_BIT(7)), // 082  TXI0
    ACKN_TBL_ENTRY(CYGARC_SSR0,  CLR_BIT(2)), // 083  TEI0

    //---------------------------------------------------------------------------------
    // SCI 1
    //
    ACKN_TBL_ENTRY(CYGARC_SSR1,  CLR_BIT(3) & CLR_BIT(4) & CLR_BIT(5)), // 084  ERI1
    ACKN_TBL_ENTRY(CYGARC_SSR1,  CLR_BIT(6)), // 085  RXI1
    ACKN_TBL_ENTRY(CYGARC_SSR1,  CLR_BIT(7)), // 086  TXI1
    ACKN_TBL_ENTRY(CYGARC_SSR1,  CLR_BIT(2)), // 087  TEI1

    //---------------------------------------------------------------------------------
    // SCI 2
    //
    ACKN_TBL_ENTRY(CYGARC_SSR2,  CLR_BIT(3) & CLR_BIT(4) & CLR_BIT(5)), // 088 ERI2
    ACKN_TBL_ENTRY(CYGARC_SSR2,  CLR_BIT(6)), // 089  RXI2
    ACKN_TBL_ENTRY(CYGARC_SSR2,  CLR_BIT(7)), // 090  TXI2
    ACKN_TBL_ENTRY(CYGARC_SSR2,  CLR_BIT(2))  // 091  TEI2
}; 


//===========================================================================
//                            INTERRUPT MASK TABLE
// DESCRIPTION:
//     This table contains all H8S/2674 interrupt enable registers and the
//     masks required for masking or unmasking an interrupt
//===========================================================================
///
/// This data type stores mask and address of one interrupt source
///
typedef struct
{
    cyg_uint32 mask    :  8;   ///< interrupt mask to be applied
    cyg_uint32 address : 24;   ///< address of H8S interrupt anble register
} int_mask_t;

//
// Use this macro when entering entries into the hal_int_mask_tbl
// 
#define MASK_TBL_ENTRY(_int_en_reg_, _mask_) {(_mask_), (_int_en_reg_)}
#define BIT(_no_) ((_no_))
//
// this define should be used for interrupt vectors without a mask
// register - i.e the NMI interrupt. This marks the interrupt as
// available because not available interrupts contain a 0
//
#define NO_MASK_REG 1


///
/// Interrupt mask table.
/// This is the fix interrupt mask table. It is const and so it will reside
/// within ROM.
///
const int_mask_t hal_int_mask_tbl[CYGNUM_HAL_ISR_COUNT] =
{
    MASK_TBL_ENTRY(0,            0),      // 000  RSV
    MASK_TBL_ENTRY(0,            0),      // 001  RSV
    MASK_TBL_ENTRY(0,            0),      // 002  RSV
    MASK_TBL_ENTRY(0,            0),      // 003  RSV
    MASK_TBL_ENTRY(0,            0),      // 004  RSV
    MASK_TBL_ENTRY(0,            0),      // 005  RSV
    MASK_TBL_ENTRY(0,            0),      // 006  RSV
    MASK_TBL_ENTRY(NO_MASK_REG,  0),      // 007  NMI
    MASK_TBL_ENTRY(0,            0),      // 008  RSV
    MASK_TBL_ENTRY(0,            0),      // 009  RSV
    MASK_TBL_ENTRY(0,            0),      // 010  RSV
    MASK_TBL_ENTRY(0,            0),      // 011  RSV
    MASK_TBL_ENTRY(0,            0),      // 012  RSV
    MASK_TBL_ENTRY(0,            0),      // 013  RSV
    MASK_TBL_ENTRY(0,            0),      // 014  RSV
    MASK_TBL_ENTRY(0,            0),      // 015  RSV
    MASK_TBL_ENTRY(CYGARC_IER,   BIT(0)), // 016  IRQ 0
    MASK_TBL_ENTRY(CYGARC_IER,   BIT(1)), // 017  IRQ 1
    MASK_TBL_ENTRY(CYGARC_IER,   BIT(2)), // 018  IRQ 2
    MASK_TBL_ENTRY(CYGARC_IER,   BIT(3)), // 019  IRQ 3
    MASK_TBL_ENTRY(CYGARC_IER,   BIT(4)), // 020  IRQ 4
    MASK_TBL_ENTRY(CYGARC_IER,   BIT(5)), // 021  IRQ 5
    MASK_TBL_ENTRY(CYGARC_IER,   BIT(6)), // 022  IRQ 6
    MASK_TBL_ENTRY(CYGARC_IER,   BIT(7)), // 023  IRQ 7

    //---------------------------------------------------------------------------------
    //
    //
    MASK_TBL_ENTRY(NO_MASK_REG,  0),      // 024  SWDTEND
    MASK_TBL_ENTRY(CYGARC_TCSRW, BIT(5)), // 025  WOVI
    MASK_TBL_ENTRY(CYGARC_DRAMCR,BIT(3)), // 026  CMI
    MASK_TBL_ENTRY(0,            0),      // 027  RSV
    MASK_TBL_ENTRY(CYGARC_ADCSR, BIT(6)), // 028  ADI
    MASK_TBL_ENTRY(0,            0),      // 029  RSV
    MASK_TBL_ENTRY(0,            0),      // 030  RSV
    MASK_TBL_ENTRY(0,            0),      // 031  RSV
    
    //---------------------------------------------------------------------------------
    // TPU 0
    //
    MASK_TBL_ENTRY(CYGARC_TIER0, BIT(0)), // 032  TGI0A
    MASK_TBL_ENTRY(CYGARC_TIER0, BIT(1)), // 033  TGI0B
    MASK_TBL_ENTRY(CYGARC_TIER0, BIT(2)), // 034  TGI0C
    MASK_TBL_ENTRY(CYGARC_TIER0, BIT(3)), // 035  TGI0D
    MASK_TBL_ENTRY(CYGARC_TIER0, BIT(4)), // 036  TCI0V
    MASK_TBL_ENTRY(0,            0),      // 037  RSV
    MASK_TBL_ENTRY(0,            0),      // 038  RSV
    MASK_TBL_ENTRY(0,            0),      // 039  RSV

    //---------------------------------------------------------------------------------
    // TPU 1
    //
    MASK_TBL_ENTRY(CYGARC_TIER1, BIT(0)), // 040  TGI1A
    MASK_TBL_ENTRY(CYGARC_TIER1, BIT(1)), // 041  TGI1B
    MASK_TBL_ENTRY(CYGARC_TIER1, BIT(4)), // 042  TCI1V
    MASK_TBL_ENTRY(CYGARC_TIER1, BIT(5)), // 043  TCI1U
    
    //---------------------------------------------------------------------------------
    // TPU 2
    //
    MASK_TBL_ENTRY(CYGARC_TIER2, BIT(0)), // 044  TGI2A
    MASK_TBL_ENTRY(CYGARC_TIER2, BIT(1)), // 045  TGI2B
    MASK_TBL_ENTRY(CYGARC_TIER2, BIT(4)), // 046  TCI2V
    MASK_TBL_ENTRY(CYGARC_TIER2, BIT(5)), // 047  TCI2U
    
    //---------------------------------------------------------------------------------
    // TPU 3
    //
    MASK_TBL_ENTRY(CYGARC_TIER3, BIT(0)), // 048  TGI3A
    MASK_TBL_ENTRY(CYGARC_TIER3, BIT(1)), // 049  TGI3B
    MASK_TBL_ENTRY(CYGARC_TIER3, BIT(2)), // 050  TGI3C
    MASK_TBL_ENTRY(CYGARC_TIER3, BIT(3)), // 051  TGI3D
    MASK_TBL_ENTRY(CYGARC_TIER3, BIT(4)), // 052  TCI3V
    MASK_TBL_ENTRY(0,            0),      // 053  RSV
    MASK_TBL_ENTRY(0,            0),      // 054  RSV
    MASK_TBL_ENTRY(0,            0),      // 055  RSV
    
    //---------------------------------------------------------------------------------
    // TPU 4
    //
    MASK_TBL_ENTRY(CYGARC_TIER4, BIT(0)), // 056  TGI4A 
    MASK_TBL_ENTRY(CYGARC_TIER4, BIT(1)), // 057  TGI4B

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -