コード例 #1
0
ファイル: tests_gpio.c プロジェクト: m-labs/autotest-m1
static int generic_sw(unsigned int b)
{
	char c;
	
	printf("Press the button. f to fail test, s to skip.\n");
	if(CSR_GPIO_IN & b) return TEST_STATUS_FAILED;
	while(!(CSR_GPIO_IN & b)) {
		if(readchar_nonblock()) {
			c = readchar();
			if(c == 'f')
				return TEST_STATUS_FAILED;
			if(c == 's')
				return TEST_STATUS_NOT_DONE;
		}
	}
	while((CSR_GPIO_IN & b)) {
		if(readchar_nonblock()) {
			c = readchar();
			if(c == 'f')
				return TEST_STATUS_FAILED;
			if(c == 's')
				return TEST_STATUS_NOT_DONE;
		}
	}
	return TEST_STATUS_PASSED;
}
コード例 #2
0
ファイル: main.c プロジェクト: sbourdeauducq/dvidebug
static void dvidump(void)
{
	unsigned int counter;

	while(1) {
		printf("waiting for PLL lock...\n");
		while(!dvisampler0_clocking_locked_read());
		printf("PLL locked\n");
		calibrate_delays();
		if(init_phase())
			printf("Phase init OK\n");
		else
			printf("Phase did not settle\n");
		print_status();

		counter = 0;
		while(dvisampler0_clocking_locked_read()) {
			counter++;
			if(counter == 2000000) {
				print_status();
				adjust_phase();
				counter = 0;
			}
			if(readchar_nonblock() && (readchar() == 'c'))
				capture_raw();
		}
		printf("PLL unlocked\n");
	}
}
コード例 #3
0
ファイル: tdc.c プロジェクト: HackLinux/tdc-core
void rofreq()
{
    int val;
    int last;
    int t;
    
    /* reset into debug mode, so this will always work */
    tdc->DCTL = TDC_DCTL_REQ;
    tdc->CS = TDC_CS_RST;
    while(!(tdc->DCTL & TDC_DCTL_ACK));
    
    while(!readchar_nonblock()) {
        t = gettemp();
        printf("%d.%04d", t/16, (t%16)*625);
        do {
            tdc->FCC = TDC_FCC_ST;
            while(!(tdc->FCC & TDC_FCC_RDY));
            val = tdc->FCR;
            printf(",%d", val);
            last = tdc->CSEL & TDC_CSEL_LAST;
            tdc->CSEL = TDC_CSEL_NEXT;
        } while(!last);
        printf("\n");
    }
    
    tdc->DCTL = 0;
    tdc->CS = TDC_CS_RST;
}
コード例 #4
0
ファイル: main.c プロジェクト: cr1901/artiq
static int check_test_mode(void)
{
    char c;
    long long int t;

    t = clock_get_ms();
    while(clock_get_ms() < t + 1000) {
        if(readchar_nonblock()) {
            c = readchar();
            if((c == 't')||(c == 'T'))
                return 1;
        }
    }
    return 0;
}
コード例 #5
0
ファイル: tdc.c プロジェクト: HackLinux/tdc-core
void mraw()
{
    if(!(tdc->CS & TDC_CS_RDY)) {
        printf("Startup calibration not done\n");
        return;
    }
    tdc->EIC_IER = TDC_EIC_IER_IE0;
    
    while(1) {
        while(!(tdc->EIC_ISR & TDC_EIC_ISR_IE0)) {
            if(readchar_nonblock()) return;
        }
        printf("%d[%d]\n", tdc->RAW0, tdc->POL & 0x01);
        tdc->EIC_ISR = TDC_EIC_ISR_IE0;
    }
}
コード例 #6
0
ファイル: main.c プロジェクト: texane/mm-papilio
static int test_user_abort()
{
	unsigned int i;
	char c;
	
	puts("I: Press Q to abort boot");
	for(i=0;i<4000000;i++) {
		if(readchar_nonblock()) {
			c = readchar();
			if(c == 'Q') {
				puts("I: Aborted boot on user request");
				return 0;
			}
		}
	}
	return 1;
}
コード例 #7
0
ファイル: tdc.c プロジェクト: HackLinux/tdc-core
void diff()
{
    int pol0, pol1;
    unsigned int rts0, rts1;
    unsigned int ts0, ts1;
#ifndef CSV
    int diff;
    int rdiff;
#endif
    
    if(!(tdc->CS & TDC_CS_RDY)) {
        printf("Startup calibration not done\n");
        return;
    }
    tdc->EIC_IER = TDC_EIC_IER_IE0|TDC_EIC_IER_IE1;
    while(1) {
        while((tdc->EIC_ISR & (TDC_EIC_ISR_IE0|TDC_EIC_IER_IE1)) != (TDC_EIC_ISR_IE0|TDC_EIC_IER_IE1)) {
            if(readchar_nonblock()) return;
        }
        pol0 = pol1 = tdc->POL;
        pol0 = !!(pol0 & 0x01);
        pol1 = !!(pol1 & 0x02);
        ts0 = tdc->MESL0;
        ts1 = tdc->MESL1;
        rts0 = tdc->RAW0;
        rts1 = tdc->RAW1;
        #ifdef CSV
        printf("%u,%u,%u,%u,%u,%u\n", pol0, rts0, ts0, pol1, rts1, ts1);
        #else
        diff = ts0 - ts1;
        if(diff < 0)
            diff = -diff;
        rdiff = rts0 - rts1;
        if(rdiff < 0)
            rdiff = -rdiff;
        printf("0: %dps [%d/%d]  1: %dps [%d/%d]  diff: %dps [%d]\n", 
            ts0*977/1000, rts0, pol0,
            ts1*977/1000, rts1, pol1,
            diff*977/1000, rdiff);
        #endif
        if(pol0 != pol1)
            printf("Inconsistent polarities!\n");
        tdc->EIC_ISR = TDC_EIC_ISR_IE0|TDC_EIC_ISR_IE1;
    }
}
コード例 #8
0
ファイル: tests_midi.c プロジェクト: m-labs/autotest-m1
static int loopback(void)
{
	unsigned int c = 0;
	char e;
	int timeout;
	int result = TEST_STATUS_PASSED;

	if(CSR_MIDI_STAT & MIDI_STAT_RX_EVT) CSR_MIDI_STAT = MIDI_STAT_RX_EVT;

	printf("Press 'e' to terminate the MIDI test\n");
	while(1) {
		if(c == 256) {
			printf("Sending 0 ~ 255...\n");
			c = 0;
		}
		CSR_MIDI_RXTX = c;
		while(!(CSR_MIDI_STAT & MIDI_STAT_TX_EVT)) {
			if(readchar_nonblock()) {
				e = readchar();
				if(e == 'e') return result;
			}
		}
		CSR_MIDI_STAT = MIDI_STAT_TX_EVT;

		timeout = 10000;
		while(!(CSR_MIDI_STAT & MIDI_STAT_RX_EVT)) {
			if(timeout-- == 0) {
				printf("Test failed: RX timeout\n");
				result = TEST_STATUS_FAILED;
				break;
			}
		}

		if(timeout > 0) {
			if(CSR_MIDI_RXTX != c) {
				printf("Failed: TX: %d, but RX: %d\n", c, CSR_MIDI_RXTX);
				result = TEST_STATUS_FAILED;
			}
			CSR_MIDI_STAT = MIDI_STAT_RX_EVT;
		}
		c++;
	}

	return result;
}
コード例 #9
0
ファイル: main.c プロジェクト: fallen/milkymist-avnet
int main()
{
#ifdef EMULATION
	emu_init();
#endif
	irq_setmask(0);
	irq_enable(1);
	uart_async_init();
	banner();
	brd_init();
	cpustats_init();
	time_init();
	mem_init();
	vga_init();
	snd_init();
	pfpu_init();
	tmu_init();
	renderer_init();
	apipe_init();
	rpipe_init();
	slowout_init();
	hdlcd_init();
	ui_init();
	shell_init();
	
	while(1) {
		if(readchar_nonblock())
			shell_input(readchar());
		apipe_service();
		rpipe_service();
#ifdef EMULATION
		emu_service();
#endif
	}
	
	return 0;
}