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

📄 var_misc.c

📁 ecos移植到R8H系列的源码。源码包来自http://www.cetoni.de/develop/develop_ecosh8s_en.html
💻 C
📖 第 1 页 / 共 3 页
字号:
///
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, 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_))))
#define CLR_NOT         0x00  // use this entry for reserved vectors
#define NOT_SUPPORTED   0xff  // use this for vectors that do not support interrupt acknowledge


///
/// 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,            CLR_NOT),          // 000  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 001  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 002  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 003  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 004  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 005  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 006  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 007  NMI
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 008  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 009  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 010  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 011  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 012  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 013  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 014  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),          // 015  RSV
        
    //---------------------------------------------------------------------------------
    // External interrupts
    //
    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(0,            CLR_NOT),    // 022  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 023  RSV


    //---------------------------------------------------------------------------------
    //
    //
    ACKN_TBL_ENTRY(0,            CLR_NOT),       // 024  SWDTEND
    ACKN_TBL_ENTRY(0,            NOT_SUPPORTED), // 025  WOVI0
    ACKN_TBL_ENTRY(0,            CLR_NOT),       // 026  RSV
    ACKN_TBL_ENTRY(CYGARC_BCRA,  CLR_BIT(7)),    // 027  PCBREAK - $$$$ only channel A supported
    ACKN_TBL_ENTRY(CYGARC_ADCSR, CLR_BIT(7)),    // 028  ADI
    ACKN_TBL_ENTRY(0,            NOT_SUPPORTED), // 029  WOVI1  
    ACKN_TBL_ENTRY(0,            CLR_NOT),       // 030  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),       // 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,            CLR_NOT),    // 037  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 038  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 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)), // 045  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,            CLR_NOT),    // 053  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 054  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 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
    
    //---------------------------------------------------------------------------------
    // Reserved
    //
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 064  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 065  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 066  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 067  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 068  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 069  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 070  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 071  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 072  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 073  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 074  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 075  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 076  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 077  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 078  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 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
    
    //---------------------------------------------------------------------------------
    // Reserved
    //
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 092  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 093  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 094  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 095  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 096  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 097  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 098  RSV
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 099  RSV
    
    //---------------------------------------------------------------------------------
    // I2C
    //
    ACKN_TBL_ENTRY(CYGARC_ICCR0, CLR_BIT(1)), // 100  I2C0
    ACKN_TBL_ENTRY(CYGARC_ICCR1, CLR_BIT(1)), // 101  DDCSW1
    ACKN_TBL_ENTRY(CYGARC_ICCR1, CLR_BIT(1)), // 102  I2C1
    ACKN_TBL_ENTRY(0,            CLR_NOT),    // 103  RSV
    
    //---------------------------------------------------------------------------------
    // PWM Timer
    //
    ACKN_TBL_ENTRY(CYGARC_PWCR1, CLR_BIT(4)), // 104  PWM1
    ACKN_TBL_ENTRY(CYGARC_PWCR2, CLR_BIT(4)), // 105  PWM2
    
    //---------------------------------------------------------------------------------
    // HCAN1
    //
    ACKN_TBL_ENTRY(CYGARC_HCAN1_IRRH, CLR_BIT(1)),  // 106  RM1 - acknowledges only receive interrupts
    ACKN_TBL_ENTRY(CYGARC_HCAN1_IRRH, CLR_BIT(1)),  // 107  RM0 - acknowledges only receive interrupts
    
    //---------------------------------------------------------------------------------
    // HCAN0
    //
    ACKN_TBL_ENTRY(CYGARC_HCAN0_IRRH, CLR_BIT(1)),  // 108  RM1 - acknowledges only receive interrupts
    ACKN_TBL_ENTRY(CYGARC_HCAN0_IRRH, CLR_BIT(1))   // 109  RM0 - acknowledges only receive interrupts
}; 


//===========================================================================
//                            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 enable 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
    
    //---------------------------------------------------------------------------------
    // External interrupts
    //
    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(0,            0),      // 022  RSV
    MASK_TBL_ENTRY(0,            0),      // 023  RSV

    //---------------------------------------------------------------------------------
    //
    //
    MASK_TBL_ENTRY(NO_MASK_REG,  0),      // 024  SWDTEND
    MASK_TBL_ENTRY(CYGARC_TCSR0W,BIT(5)), // 025  WOVI0
    MASK_TBL_ENTRY(0,            0),      // 026  RSV
    MASK_TBL_ENTRY(CYGARC_BCRA,  BIT(0)), // 027  PCBREAK - only channel A supported now
    MASK_TBL_ENTRY(CYGARC_ADCSR, BIT(6)), // 028  ADI
    MASK_TBL_ENTRY(CYGARC_TCSR1W,BIT(5)), // 029  WOVI1
    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
    
    //---------------------------------------------------------------------------------

⌨️ 快捷键说明

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