예제 #1
0
int main(int argc, char *argv[]){
	char test_str[] = "Hello World";
	int bytes = strlen(test_str); // get number of bytes in test string
	char buf[BUF_SIZE];
	int ret; // return value
	int bus; // which bus to use
	
	// Parse arguments
	if(argc!=2){ //argc==2 actually means one argument given
		print_usage();
		return -1;
	}
	else bus = atoi(argv[1]);
	
	if(!(bus==0||bus==1||bus==2||bus==5)){
		print_usage();
		return -1;
	}
	
	// Initialization
	initialize_board();
	printf("\ntesting UART bus %d\n\n", bus);
	if(initialize_uart(bus, BAUDRATE, TIMEOUT_S)){
		printf("Failed to initialize_uart%d\n", bus);
		cleanup_board();
		return -1;
	}
	
	// Flush and Write
	printf("Sending  %d bytes: %s \n", bytes, test_str);
	flush_uart(bus);
	uart_send_bytes(bus, bytes, &test_str[0]);
	
	// Read 
	memset(buf, 0, BUF_SIZE);
	ret = uart_read_bytes(bus, bytes, &buf[0]);
	if(ret<0) printf("Error reading bus\n");
	else if(ret==0)printf("timeout reached, %d bytes read\n", ret);
	else printf("Received %d bytes: %s \n", ret, buf);
	
	// close up
	close_uart(bus);
	cleanup_board();
	return 0;
}
예제 #2
0
int
main(void)
{
	unsigned int pot_value;
	unsigned int counter = 0;

	initialize_board();
	initialize_led();
	initialize_uart();
	initialize_adc(MODE_ANALOG0);
	initialize_pwm();

	uart_printf("Hello, world!\n");

    while(1)
    {

	pot_value = adc_get_reading();
	//UARTprintf ("Temperature = %3d*C \r", adc_get_temp ());
	uart_printf ("AIN0 (PE3) = %3d Duty value = %d\r", pot_value,
		     pot_value/4);
	led_toggle (GREEN_LED);

	counter += 100;
	if (counter > 1000)
		counter = 0;

	pwm_set_duty (pot_value/4);
        //
        // This function provides a means of generating a constant length
        // delay.  The function delay (in cycles) = 3 * parameter.  Delay
        // 250ms arbitrarily.
        //
        SysCtlDelay(SysCtlClockGet() / 12);


    }
}
예제 #3
0
/**
 *
 * Main function
 *
 * This function is the main entry of the interrupt test. It does the following:
 *	Initialize the audio
 *	Initialize the debug uart
 *	Enable the interrupts
 *
 * @param	None
 *
 * @return
 *		- XST_SUCCESS if example finishes successfully
 *		- XST_FAILURE if example fails.
 *
 * @note		None.
 *
 ******************************************************************************/
int main(void)
{
    init_platform();
    InitMotorBoard();

    xil_printf("\r\n--- Entering main() --- \r\n");

    int status = XST_SUCCESS;
    status |= initialize_audio(&sIic, &sAxiAudioDma);
    status |= fnInitInterruptController(&sIntc);
    status |= initialize_uart(&sUartLite);
    status |= initialize_video(&sVideoCapt, &sIntc);
    status |= initialize_targeting(&sAxiTargetingDma);
    status |= SetupSdGpio(&sGpio);

    if (status != XST_SUCCESS) {
        xil_printf("Failed to initialize system.\r\n");
        return XST_FAILURE;
    }

    // Initialize static variables.
    for (int i = 0; i < FILE_ID_MAX; i++) {
        sSdFileBoard[i].loaded = false;
    }
    sSdFileMemTip = (u32 *) AUDIO_BASE_ADDR;

    sButtonState = 0;

    sLoopSelect = DEFAULT_LOOP;
    fnEnableInterrupts(&sIntc, &ivt[0], sizeof(ivt)/sizeof(ivt[0]));

    register_uart_response("test", test_fcn);
    register_uart_response("record", uart_rec_audio);
    register_uart_response("play", uart_play_audio);
    register_uart_response("kill", end_fcn);
    register_uart_response("exit", end_fcn);
    register_uart_response("dump", dump_mem);

    // Commands to run self-tests
    register_uart_response("lowlevel", LowLevelTest);
    register_uart_response("highlevel", HighLevelTest);
    register_uart_response("lasertest", EnterLaserTest);
    register_uart_response("motortest", EnterMotorTest);
    register_uart_response("stop", stopTest);

    register_uart_response("load_sounds", loadSounds);
    register_uart_response("load_images", loadImages);

    register_uart_response("still_alive", playPortalSong);
    register_uart_response("gun", playGunSound);
    register_uart_response("portal_gun", playPortalGunSound);
    register_uart_response("target", playTargetAcquired);
    register_uart_response("playpos", playPos);
    register_uart_response("playneg", playNeg);

    register_uart_response("manual", EnterManualMainLoop);
    register_uart_response("auto", EnterAutomaticMainLoop);

    register_uart_response("passthrough", passthroughHdmi);
    register_uart_response("runip",       EnterIpTest);
    register_uart_response("videoinfo",   print_video_info);
    register_uart_response("df1",         df1);
    register_uart_response("df2",         df2);
    register_uart_response("df0",         df0);
    register_uart_response("vf1",         vf1);
    register_uart_response("vf2",         vf2);
    register_uart_response("vf0",         vf0);
    register_uart_response("ipinfo",      print_ip_info);
    register_uart_response("ipouttoggle", toggle_ip_output);
    register_uart_response("dummytarget", setDummyTarget);

    register_uart_response("lemon",       DisplayLemon);
    register_uart_response("heman",       DisplayHeman);
    register_uart_response("pass",        SetPassthroughMode);
    register_uart_response("gray",        SetGrayscaleMode);
    register_uart_response("sobel",        SetSobelMode);
    register_uart_response("thresh",        SetThresholdMode);
    register_uart_response("label",        SetLabelMode);
    register_uart_response("colour",        SetColourMode);
    register_uart_response("laser",        SetLaserMode);
    register_uart_response("flood1",        SetFlood1Mode);
    register_uart_response("flood2",        SetFlood2Mode);

    register_uart_response("laseron",        LaserOn);
    register_uart_response("laseroff",        LaserOff);

    register_uart_response("redthresh",        SetRedThreshold);
    register_uart_response("sobelthresh",   SetSobelThreshold);
    register_uart_response("f1thresh",   SetFlood1Threshold);
    register_uart_response("f2thresh",   SetFlood2Threshold);
    register_uart_response("setminsize",   SetSizeThreshold);


    register_uart_response("setobjid",   SetObjId);

    register_uart_response("test_args",   TestArgs);

    xil_printf("\r\n--- Done registering UART commands --- \r\n");

    initialSetup();
    xil_printf(PROMPT_STRING);
    while (do_run) {
        switch (sLoopSelect) {
            case MANUAL_MODE: ManualMainLoop(); break;
            case AUTOMATIC_MODE: AutoMainLoop(); break;
            case LASER_TEST: LaserTest(); break;
            case MOTOR_TEST: MotorPatternTest(); break;
            case IP_TEST: runImageProcessing(); sLoopSelect = DEFAULT_LOOP; break;
            default: MB_Sleep(100); break;
        }
    }

    xil_printf("\r\n--- Exiting main() --- \r\n");

    return XST_SUCCESS;
}
예제 #4
0
void main() {
	int fd = initialize_uart(UART_PORT, UART_BAUD);

	srand(0);

	//		Command			Seed	# accesses	Offset
	//send_cmd(fd,  	TCMD_Fill,    		1000,   1 << 20,        1024);
	//send_cmd(fd, 	TCMD_CmdRnd_AddrRnd, 	1002, 	1 << 20, 	0);

	//
	// SPEC TRACES
	//
/*	int num_valid_blocks = 1 << 20;
	//send_cmd(fd, TCMD_Fill, 1000, num_valid_blocks, 1024);

	int MAX = 300000;
	
	FILE* file = fopen("trace_hmmer_pruned.csv", "rt"); int MAX_read = 1 << 20;
	//FILE* file = fopen("trace_libquantum.csv", "rt"); int MAX_read = 307607;
	//FILE* file = fopen("trace_gcc_2006_pruned.csv", "rt"); int MAX_read = 1 << 20;
	//FILE* file = fopen("trace_sjeng_pruned.csv", "rt"); int MAX_read = 702033;
	//FILE* file = fopen("trace_bzip2_pruned.csv", "rt"); int MAX_read = 384355;

	#define CHUNK 12
	char buf[CHUNK];
	size_t nread;

	int sent_before[num_valid_blocks];
	int * read_trace = (int*) malloc(sizeof(int) * num_valid_blocks);
	int j;
	for (j = 0; j < num_valid_blocks; j++) {
		sent_before[j] = 0;
	}

	if (file) {
		int i = 0; 
		int address; 
		char type; 
	  	int writes = 0;
		int reads = 0;
		int skipped = 0;

		while(i < MAX && fgets(buf, CHUNK, file) != NULL) {
		 	sscanf (buf, "%c %x\n", &type, &address);
		 	
			if (address > num_valid_blocks) {
				printf("WARNING: access=%d addr %x too large\n", i, address);	
				address = 0;
			}
			else if (sent_before[address] == 0) {
				printf ("sent write %x\n", address);
				send_cmd(fd, CMD_Update, address, 0, 0);
				sent_before[address] = 1;
				writes++;
			}
			read_trace[i] = address;
			//send_cmd(fd, CMD_Read, address, 0, 0);
			i++;
  		} 

		i = 0;
		while (reads < MAX_read && i < MAX) {
			int caddr = read_trace[i];
			if (caddr) {
				printf ("%d: sent read %x\n", reads, caddr);
				send_cmd(fd, CMD_Read, caddr, 0, 0);
				reads++;
			} else printf ("WARNING: skipped read %d\n", i);
			i++;
		}

		printf("Done; writes=%d, reads=%d\n", writes, reads);

   		fclose(file);
	}
*/

	// Random accesses	
	int num_valid = 1 << 13;
    int i;
    int Nread = num_valid;
    for (i = 0; i < Nread; i++) {
            send_cmd(fd, CMD_Update, i, 0, 0);
    }

    int Nwrite = Nread << 0;
    for (i = 0; i < Nwrite; i++) {
            send_cmd(fd, CMD_Read, rand() % Nread, i, 0);
    }

	// Simple stride
/*
    int i;
    int Nread = 1 << 15;
    for (i = 0; i < Nread; i++) {
            send_cmd(fd, CMD_Update, i, 0, 0);
	if (i % 100000 == 0) printf("Wrote %d\n", i);
    }

    int Nwrite = Nread << 0;
    for (i = 0; i < Nwrite; i++) {
            send_cmd(fd, CMD_Read, i % Nread, i, 0);
	if (i % 100000 == 0) printf("Read %d\n", i);
    }
*/


	// Access same place always
	// Status: fine
/*
    int i;
    int Nread = 1000;

    for (i = Nread; i >= 0; i--) {
            send_cmd(fd, CMD_Update, i, 0, 0);
    }

    int Nwrite = 1000;
    for (i = 0; i < Nwrite; i++) {
            send_cmd(fd, CMD_Read, 0, i, 0);
    }
*/

	// Ask the FPGA board to send the histogram
	send_start_cmd(fd);
}
예제 #5
0
/*
 * Sets up the device to use STDIO over serial.
 */
void set_up_stdio_over_serial() {
    initialize_uart();
    set_up_special_files();
}