Beispiel #1
0
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) {
	unsigned long long int _timeout, now_time, width = 0L;

	if(pin >= PINS || PIN86[pin].gpN == NOUSED) return 0x00;

	_timeout = ((unsigned long long int)timeout)*vx86_CpuCLK() + timer_GetClocks64();
	while(digitalRead(pin) == state)
		if(timer_GetClocks64() >= _timeout)
			return 0;
	while(digitalRead(pin) != state)
		if(timer_GetClocks64() >= _timeout)
			return 0;
	now_time = timer_GetClocks64();
	while(digitalRead(pin) == state)
		if(timer_GetClocks64() >= _timeout)
			return 0;
	width = timer_GetClocks64() - now_time;
	width = (unsigned long long int)(width * (1.0/vx86_CpuCLK()));

	return ((unsigned long)width); // unit is micro second
}
Beispiel #2
0
bool init() {
	int i, crossbarBase, gpioBase;
	if(io_Init() == false) return false;
    timer_NowTime(); // initialize timer
    CLOCKS_PER_MICROSEC = vx86_CpuCLK();
    VORTEX86EX_CLOCKS_PER_MS = CLOCKS_PER_MICROSEC*1000UL;
    
    // Set IRQ4 as level-trigger
    io_outpb(0x4D0, io_inpb(0x4D0) | 0x10);
    
	//set corssbar Base Address
	crossbarBase = sb_Read16(SB_CROSSBASE) & 0xfffe;
	if(crossbarBase == 0 || crossbarBase == 0xfffe)
		sb_Write16(SB_CROSSBASE, CROSSBARBASE | 0x01);
	
	// Force set HIGH speed ISA on SB
	sb_Write(SB_FCREG, sb_Read(SB_FCREG) | 0x8000C000L);
	
	//set SB GPIO Base Address
	gpioBase = sb_Read16(SB_GPIOBASE) & 0xfffe;
	if(gpioBase == 0 || gpioBase == 0xfffe)
	{
		sb_Write16(SB_GPIOBASE, GPIOCTRLBASE | 0x01);
		gpioBase = GPIOCTRLBASE;
	}
	
	// Enable GPIO 0 ~ 7 
	io_outpdw(gpioBase, 0x00ff);
	
	// set GPIO Port 0~7 dircetion & data Address
	for(i=0;i<8;i++)
		io_outpdw(gpioBase + (i+1)*4,((GPIODIRBASE + i*4)<<16) + GPIODATABASE + i*4);
	  
	// set ADC Base Address
	sb_Write(0xbc, sb_Read(0xbc) & (~(1L<<28)));  // active adc
	sb1_Write16(0xde, sb1_Read16(0xde) | 0x02);   // not Available for 8051A Access ADC
	sb1_Write(0xe0, 0x0050fe00L); // baseaddr = 0xfe00, disable irq
	
	// set MCM Base Address
	set_MMIO();
	mc_setbaseaddr();
	for(i=0; i<4; i++)
		mc_SetMode(i, MCMODE_PWM_SIFB);
	
	if(Global_irq_Init == false)
	{
		// set MCM IRQ
		if(irq_Init() == false) 
	    {
	        printf("MCM IRQ init fail\n"); return false;
	    }
	    
	    if(irq_Setting(GetMCIRQ(), IRQ_LEVEL_TRIGGER + IRQ_DISABLE_INTR) == false)
	    {
	        printf("MCM IRQ Setting fail\n"); return false;
	    }
	    Set_MCIRQ(GetMCIRQ());
	    Global_irq_Init = true;
	}
    
	//CDC
	USBDEV = CreateUSBDevice();
	if(USBDEV == NULL)
	{
		printf("init error\n");
		return false;
	}
    
	usb_SetUSBPins(USBDEV, 7, 0, 7, 1);
	usb_SetTimeOut(USBDEV, 0L, 500L); // USB RX timerout is 0ms and TX timeout is 500ms
	if(usb_Init(USBDEV) == false)
	{
		printf("init2 error\n");
		return false;
	}
    
	//io_Close();
	return true;
}
Beispiel #3
0
int main()
{
	char bios_version[16];
	unsigned long mem_size;

	printf("86INFO v1.1, author: PING-HUI WEI, E-mail: [email protected], 2016/03/18\n");

	printf("CPU:\t\t\t ");
	switch(vx86_CpuID())
	{
		case CPU_VORTEX86SX:
			printf("Vortex86SX\n");
			break;
		case CPU_VORTEX86DX_UNKNOWN:
			printf("Vortex86DX_unknown\n");
			break;
		case CPU_VORTEX86DX_A:
			printf("Vortex86DX_A\n");
			break;
		case CPU_VORTEX86DX_C:
			printf("Vortex86DX_C\n");
			break;
		case CPU_VORTEX86DX_D:
			printf("Vortex86DX_D\n");
			break;
		case CPU_VORTEX86MX:
			printf("Vortex86MX\n");
			break;
		case CPU_VORTEX86MX_PLUS:
			printf("Vortex86MX_plus\n");
			break;
		case CPU_VORTEX86DX2:
			printf("Vortex86DX2\n");
			break;
		case CPU_VORTEX86DX3:
			printf("Vortex86DX3\n");
			break;
		case CPU_VORTEX86EX:
			printf("Vortex86EX\n");
			break;
		case CPU_UNSUPPORTED:
		default:
			printf("unsupported\n");
	}

	printf("CPU Frequency:\t\t %ldMHz\n", vx86_CpuCLK());
	printf("CPU Temperature:\t %f °C\n", cpuTemperature());

	printf("Memory Size:\t\t");
	if(get_mem_size(&mem_size) == false)
		printf("get memory size error!\n");
	else
		printf(" %luMB\n", mem_size);

	printf("Memory Frequency:\t %luMHz\n", vx86_DramCLK());

	printf("BIOS Version:\t\t");
	if(get_BIOS_version(bios_version) == false)
		printf("get bios version error!\n");
	else
		printf(" %s\n", bios_version);

	return EXIT_SUCCESS;
}