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 */ }
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; }
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 (;;); }