📄 fipuser_ecos.c
字号:
/* * Here are all PRIVATE definitios and functions definied, which are the same for all players. * To simplify it, we also declare common functions here!!! * * Copyright(c) 2002 Sigma Designs, Inc. * Author: Markus Brenner * September 2002 */// #include "fipuser.h"#include "fip_private.h"#include "fip.h"#include "irstate.h"#include <cyg/hal/hal_io.h>#include <cyg/kernel/kapi.h>cyg_flag_t fip_flag;static cyg_handle_t fip_timer_interrupt, fip_pio_interrupt;static cyg_interrupt fip_timer_interrupt_struct, fip_pio_interrupt_struct;static cyg_uint32 fip_timer_ISR(cyg_vector_t vector, cyg_addrword_t data){ cyg_interrupt_acknowledge(vector); /* clear the timer1 interrupt */ *CYG_DEVICE_TIMER_STATUS = 2; if(vector == CYGNUM_HAL_INTERRUPT_WDTIMER) { if(fip_timer()) return CYG_ISR_HANDLED | CYG_ISR_CALL_DSR; return CYG_ISR_HANDLED; } diag_printf("wrong fip timer interrupt vector: %d\n", vector); return CYG_ISR_HANDLED;}static void fip_timer_DSR(cyg_vector_t vector, cyg_uint32 count, cyg_addrword_t data){ if(count>1) { diag_printf("missed %d fip timer interrupt(s)\n", count-1); } cyg_flag_setbits(&fip_flag, 0x1); return;}static cyg_uint32 fip_pio_ISR(cyg_vector_t vector, cyg_addrword_t data){ cyg_interrupt_acknowledge(vector); /* clear the pio interrupt */ HAL_WRITE_UINT32(JASPER_PIO0_BASE + PIO_INT, 0x00010001<<IR_PIO ); if(vector != CYGNUM_HAL_INTERRUPT_PIO0) { diag_printf("wrong fip pio interrupt vector: %d\n", vector); return CYG_ISR_HANDLED; } if(ir_pio()) return CYG_ISR_HANDLED | CYG_ISR_CALL_DSR; else return CYG_ISR_HANDLED;}static void fip_pio_DSR(cyg_vector_t vector, cyg_uint32 count, cyg_addrword_t data){ if(count>1) { diag_printf("missed %d fip pio interrupt(s)\n", count-1); } cyg_flag_setbits(&fip_flag, 0x1); return;}int fip_loadmodule(void){ cyg_flag_init(&fip_flag); cyg_interrupt_create(CYGNUM_HAL_INTERRUPT_WDTIMER, 0, 0, &fip_timer_ISR, &fip_timer_DSR, &fip_timer_interrupt, &fip_timer_interrupt_struct); cyg_interrupt_attach(fip_timer_interrupt); cyg_interrupt_create(CYGNUM_HAL_INTERRUPT_PIO0, 0, 0, &fip_pio_ISR, &fip_pio_DSR, &fip_pio_interrupt, &fip_pio_interrupt_struct); cyg_interrupt_attach(fip_pio_interrupt); ir_init(); fip_init(); cyg_interrupt_unmask(CYGNUM_HAL_INTERRUPT_WDTIMER); cyg_interrupt_unmask(CYGNUM_HAL_INTERRUPT_PIO0); return 0;}int fip_open(void){ return 0;} void fip_close(void){ return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -