Exemple #1
0
void
main(void)
{
	extern char edata[], end[];
	uint rev;

	okay(1);
	m = (Mach*)MACHADDR;
	memset(edata, 0, end - edata);	/* clear bss */
	machinit();
	mmuinit1();

	optionsinit("/boot/boot boot");
	quotefmtinstall();
	
	ataginit((Atag*)BOOTARGS);
	confinit();		/* figures out amount of memory */
	xinit();
	uartconsinit();
	screeninit();

	print("\nPlan 9 from Bell Labs\n");
	rev = getfirmware();
	print("firmware: rev %d\n", rev);
	if(rev < Minfirmrev){
		print("Sorry, firmware (start.elf) must be at least rev %d (%s)\n",
			Minfirmrev, Minfirmdate);
		for(;;)
			;
	}
	trapinit();
	clockinit();
	printinit();
	timersinit();
	cpuidprint();
	archreset();

	procinit0();
	initseg();
	links();
	chandevreset();			/* most devices are discovered here */
	pageinit();
	swapinit();
	userinit();
	gpiomeminit();
	schedinit();
	assert(0);			/* shouldn't have returned */
}
Exemple #2
0
static int RFID_Response(int fd, void *infostruct, unsigned int blocktime,
		unsigned int *err) {
	int len = 0;
	unsigned char rcv_buf[1024];
	len = UART_Recv(fd, rcv_buf, blocktime, err);
	if (len == -1 || len == 's') {
		goto end;
	}
	if (rcv_buf[0] != 0xBB) {
		*err = ERR_CODE_FRAME_HEAD;
		len = -1;
		goto end;
	} else if (rcv_buf[len - 1] != 0x0A) {
		*err = ERR_CODE_FRAME_TAIL_2ND;
		len = -1;
		goto end;
	} else if (rcv_buf[len - 2] != 0x0D) {
		*err = ERR_CODE_FRAME_TAIL_1ST;
		len = -1;
		goto end;
	}
#ifdef DEBUG
	int i=0;
	printf("recv %d:",len);
	for(i=0; i<len; i++)
	{
		printf("%.2X ",rcv_buf[i]);
	}
	printf("\n");
#endif // DEBUG
	LOGD("type:%x", rcv_buf[1]);
	switch (rcv_buf[1]) {
	case 0x80:
		my_setstate((unsigned char*) infostruct, rcv_buf);
		break;
	case 0x81:
		my_setstate((unsigned char*) infostruct, rcv_buf);
		break;
	case 0x82:
		my_setstate((unsigned char*) infostruct, rcv_buf);
		break;
	case 0x83:
		my_setstate((unsigned char*) infostruct, rcv_buf);
		break;
	case 0x87:
		my_setstate((unsigned char*) infostruct, rcv_buf);
		break;
	case 0x88:
		my_setstate((unsigned char*) infostruct, rcv_buf);
		break;
	case 0x89:
		my_setstate((unsigned char*) infostruct, rcv_buf);
		break;
	case 0x8A:
		gethardware((prfid) infostruct, rcv_buf);
		break;
	case 0x8B:
		getfirmware((prfid) infostruct, rcv_buf);
		break;
	case 0x8C:
		gettxpower((prfid) infostruct, rcv_buf);
		break;
	case 0x8D:
		getradiostate((prfid) infostruct, rcv_buf);
		break;
	case 0x8E:
		getrflinkprofile((prfid) infostruct, rcv_buf);
		break;
	case 0x90:
		getcurrentantenna((prfid) infostruct, rcv_buf);
		break;
	case 0x91:
		gethzzone((prfid) infostruct, rcv_buf);
		break;
	case 0x92:
		getcurrenttemperature((prfid) infostruct, rcv_buf);
		break;
	case 0x93:
		getgpiostate((char *) infostruct, rcv_buf);
		break;
	case 0x94:
		getgen2((prfid) infostruct, rcv_buf);
		break;
	case 0x96:
		getepcsingle((pepc) infostruct, rcv_buf);
		break;
	case 0x97:
		getepcmulti((pepc) infostruct, rcv_buf);
		break;
	case 0x98:
		//my_setstate((unsigned char *) infostruct, rcv_buf);
		len = -8;
		break;
	case 0x99:
		getlabeldata((plabeldata) infostruct, rcv_buf);
		break;
	case 0x9A:
		my_setstate((unsigned char *) infostruct, rcv_buf);
		break;
	case 0x9B:
		my_setstate((unsigned char *) infostruct, rcv_buf);
		break;
	case 0x9C:
		my_setstate((unsigned char *) infostruct, rcv_buf);
		break;
	case 0x9D:
		my_setstate((unsigned char *) infostruct, rcv_buf);
		break;
	case 0x9E:
		getmlabertimer((unsigned short*) infostruct, rcv_buf);
		break;
	case 0x9F:
		my_setstate((unsigned char *) infostruct, rcv_buf);
		break;
	case 0xA0:
		getantandwaittime((unsigned short *) infostruct, rcv_buf);
		break;
	case 0xFF:
		geterrorinfo(err, rcv_buf);
		len = -1;
		break;
	default:
		*err = ERR_CODE_FRAME_CMD;
		len = -1;
		break;
	}
	end: return len;
}
Exemple #3
0
void
main() {
	uint j=0,i=0,k=0;
	uint rev;
	ulong pc;

	pc = getpc();
	pl011_addr((void *)pc, 1);
	pl011_puts("Entered main() at ");
	pl011_addr(&main, 0);
	pl011_puts(" with SP=");
	pl011_addr((void *)getsp(), 0);
	pl011_puts(" with SC=");
	pl011_addr((void *)getsc(), 0);
	pl011_puts(" with CPSR=");
	pl011_addr((void *)getcpsr(), 0);
	pl011_puts(" with SPSR=");
	pl011_addr((void *)getspsr(), 1);

	pl011_puts("Clearing Mach:  ");
	memset(m, 0, sizeof(Mach));
	pl011_addr((char *)m,		0); pl011_puts("-");
	pl011_addr((char *)(m+1),	1);

	pl011_puts("Clearing edata: ");
	memset(edata, 0, end-edata);
	pl011_addr((char *)&edata,	0); pl011_puts("-");
	pl011_addr((char *)&end,	1);

	conf.nmach = 1;

	quotefmtinstall();
	confinit();
	mmuinit1();
	xinit();
	poolinit();
	poolsizeinit();
	//uartconsinit();
	screeninit();
	trapinit();
	timersinit();
	clockinit();
	printinit();
	swcursorinit();

	rev = getfirmware();
	print("\nARM %ld MHz id %8.8lux firmware: rev %d, mem: %ld\n"
		,(m->cpuhz+500000)/1000000, getcpuid(), rev, conf.topofmem/MB);
	print("Inferno OS %s Vita Nuova\n", VERSION);
	print("Ported to Raspberry Pi (BCM2835) by LynxLine\n\n");

	procinit();
	links();
	chandevreset();

	eve = strdup("inferno");

	userinit();
	schedinit();

	pl011_puts("to inifinite loop\n\n");
	for (;;);
}