int main(int argc, char ** argv){ char c ; FILE * fr; long start_time, end_time ; double diff_time ; struct timespec cpu_time ; unsigned int size = 0 ; initGPIOs(); #ifdef MARK1 init_i2c(3); #endif fr = fopen (argv[1], "rb"); /* open the file for reading bytes*/ if(fr < 0){ printf("cannot open file %s \n", argv[1]); } size = fread(configBits, 1, 1024*1024, fr); printf("bit file size : %d \n", size); //clock_gettime(CLOCK_REALTIME, &cpu_time); //start_time = cpu_time.tv_sec ; if(serialConfig(configBits, size) < 0){ printf("config error \n"); exit(0); }else{ printf("config success ! \n"); } //clock_gettime(CLOCK_REALTIME, &cpu_time); //end_time = cpu_time.tv_sec ; //diff_time = end_time - start_time ; //diff_time = diff_time/1000000 ; //printf("Configuration took %fs \n", diff_time); closeGPIOs(); fclose(fr); return 1; }
/* * Main function initializes registers and memory, then starts the main loop */ int main(int argc, char** argv){ //Local Variables int status; //Initializations initMem(); #ifdef RPI setup_io(); initGPIOs(); #endif //Setup printf("%s starting up...\n", VERSTR); printf("Command line arguments:\n"); printf("~q: Quit, ~pm lower upper: Prints mem between lower and upper\n"); printf("~pr: Prints register contents, ~rm: reset memmory to 0s\n"); printf("~cp: Changes the period of the clock to given number in nano seconds\n"); printf("~in: Prompt for file input\n"); printf("~run <start location>: runs program starting at <Start location>\n"); printf("~step <start location>: runs program starting at <Start location>. Steps through each execution. ~step without an address continues the current execution.\n"); for(int i = 1; i < argc; i++) { if(argv[i] != NULL) { printf(" %s", argv[i]); } } status = mainloop(); return status; }
int main(void){ char op_code[100]; uint16_t instAddr; uint16_t topAddr; uint16_t baseAddr; uint16_t mem; int run = 1; char fileName[100]; char in[100]; puts("Initializing memory"); puts("Usage:\n ~pm lower upper : prints memor from lower to upper, <mem> = 1 for secondary"); puts("~rm : resets memory"); puts("~in : import file into memory"); puts("~wr : writes current MEM to the RAM chip"); puts("~rr <mem> : reads current RAM into MEM, reads into secondary mem if <mem> = 1"); puts("~cm : checks secondary memory to main memory"); puts("~q : quit"); //setup setup_io(); initGPIOs(); initMem(); GPIO_SET = 1 << WE; //UNCOMMENT FOR PI AS RAM //pthread_t tid; //pthread_create(&tid, NULL, memThread, NULL); while(run){ printf("Input: "); fgets(in, 99, stdin); sscanf(in, "%s %hu %hu %hu", op_code, &instAddr, &topAddr, &mem); //Process input if(!strcmp(op_code, "~q")){ printf("Shuting down memory...\n"); run = 0; } else if(!strcmp(op_code, "~pm")){ printMem(instAddr, topAddr, mem); printf("Current Address: %hu\n", readAddress()); } else if(!strcmp(op_code, "~rm")){ freeMem(); initMem(); } else if(!strcmp(op_code, "~in")){ printf("Enter file name, followed by an address to load at: "); scanf("%s %hu", fileName, &baseAddr); puts("WARNING, make sure the base address is set correctly when assembling file"); while(getchar()!= '\n'); if(readBin(fileName, baseAddr) == -1){ puts("Could not open file"); } } else if(!strcmp(op_code, "~wr")){ printf("Writing current MEM to RAM...\n"); writeRAMChip(); } else if(!strcmp(op_code, "~rr")){ printf("Reading RAM into Memory\n"); readRAMChip(instAddr); } else if(!strcmp(op_code, "~off")){ initGPIOs(); } else if(!strcmp(op_code, "~cm")){ checkMEM(instAddr); } } }
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; }