コード例 #1
0
ファイル: FIFOdrv.c プロジェクト: DanIverson/OpenVnmrJ
/*
=========================================================================
NAME: resetFIFO
=========================================================================
PURPOSE:
	Reset FIFO functions.

INPUT:
	None.

OUTPUT:
	None.

RETURN VALUE:
	None.

COMMENT:

AUTHOR: 
	Robert L. Thrift, 2004
	Code borrowed from Phil Hornung's rsStart.c
=========================================================================
*/
void resetFIFO(void)
{
	FPGA_PTR(RF_FIFOControl);		/* Ptrs to FPGA registers (rf.h)	*/
	FPGA_PTR(RF_FIFOOutputSelect);
	FPGA_PTR(RF_InterruptClear);
	FPGA_PTR(RF_InterruptEnable);
	FPGA_PTR(RF_ClearCumulativeDuration);

	/* ------ Remove following line when FIFO reset is wired up ------- */
	resetFPGA();   			/* Hopefully this will become unnecessary	*/

	*pRF_FIFOControl = 0;			/* Trigger FIFO reset				*/
	*pRF_FIFOControl = FIFO_RESET;

	*pRF_FIFOOutputSelect = 0;		/* Select hardware output			*/
	*pRF_FIFOOutputSelect = 1;

	*pRF_InterruptClear = 0;		/* Clear interrupt status bits		*/
	*pRF_InterruptClear = 0x1ff;

	*pRF_InterruptEnable = 0;		/* Enable FIFO interrupts			*/
	*pRF_InterruptEnable = 0x1f;

	*pRF_ClearCumulativeDuration = 0; /* Clear cumulative duration reg.	*/
	*pRF_ClearCumulativeDuration = 1;
}
コード例 #2
0
ファイル: serial_fpga_loader.c プロジェクト: gvsyn/logi-tools
int main(int argc, char ** argv) {
    char c ;
    unsigned int i ;
    FILE * fr;
    long start_time, end_time ;
    double diff_time ;
    struct timespec cpu_time ;
    unsigned int size = 0 ;
    initGPIOs();
    init_i2c(1);

    //parse programm args
    for(i = 1 ; i < argc ; ) {
        if(argv[i][0] == '-') {
            switch(argv[i][1]) {
            case '\0':
                i ++ ;
                break ;
            case 'r' :
                resetFPGA();
                closeGPIOs();
                close(i2c_fd);
                return 1 ;
                break ;
            case 'h' :
                printHelp();
                return 1 ;
                break;
            default :
                printHelp();
                return 1 ;
                break ;
            }
        } else {
            //last argument is file to load
            break ;
        }
    }


    if(init_spi() < 0) {
        printf("cannot open spi bus \n");
        return -1 ;
    }
    fr = fopen (argv[i], "rb");  /* open the file for reading bytes*/
    if(fr < 0) {
        printf("cannot open file %s \n", argv[1]);
        return -1 ;
    }
    memset((void *) configBits, (int) 0, (size_t) 1024*1024);
    size = fread(configBits, 1, 1024*1024, fr);
    printf("bit file size : %d \n", size);

    //8*5 clock cycle more at the end of config
    if(serialConfig(configBits, size+5) < 0) {
        printf("config error \n");
        exit(0);
    } else {
        printf("config success ! \n");
    }

    closeGPIOs();
    fclose(fr);
    close(spi_fd);
    close(i2c_fd);
    return 1;
}