int main( void )
{
	Xil_SetTlbAttributes(0xFFFF0000,0x14de2);           // S=b1 TEX=b100 AP=b11, Domain=b1111, C=b0, B=b0


    print("CPU1: init_platform\n\r");

	prvInitializeExceptions();
	init_axi_gpio();
	init_fifo_queues();

	startProductionControl();

	startAdversaryTask();

	// Start the tasks and timer running.
	vTaskStartScheduler();

	// If all is well, the scheduler will now be running
//	for( ;; );
	 while(1){
	     	while(COMM_VAL == 0){};
	  //   	if(irq_count > 0) {
	  //       	print("CPU1: Hello World With Interrupt CPU 1\n\r");
	  //       	irq_count = 0;
	  //       	sleep(2);		//Delay so output can be seen
	  //   	} else {
	     	print("CPU1: Hello World CPU 1\n\r");
	 //    	}
	     	COMM_VAL = 0;

	     }
	 return 0;
}
int main( void )
{
	prvInitializeExceptions();
	xMutex_Led = xSemaphoreCreateMutex();

	configASSERT( xMutex_Led );

	/* Setup the GPIO Hardware. */
	prvSetGpioHardware();

	/* Start the two tasks */
	xTaskCreate( prvLed_ON, ( signed char * ) "LED_ON",
				configMINIMAL_STACK_SIZE, NULL,
				mainLED_ON_TASK_PRIORITY, NULL );
	xTaskCreate( prvLed_OFF, ( signed char * ) "LED_OFF",
				configMINIMAL_STACK_SIZE, NULL,
				mainLED_OFF_TASK_PRIORITY, NULL );

	/* Start the tasks and timer running. */
	vTaskStartScheduler();

	/* If all is well, the scheduler will now be running, and the following line
	will never be reached.  If the following line does execute, then there was
	insufficient FreeRTOS heap memory available for the idle and/or timer tasks
	to be created.  See the memory management section on the FreeRTOS web site
	for more details. */
	for( ;; );
}
int main( void )
{
 	prvInitializeExceptions();

	/* Start the tasks and timer running. */
	vTaskStartScheduler();

	/* If all is well, the scheduler will now be running, and the following line
	will never be reached.  If the following line does execute, then there was
	insufficient FreeRTOS heap memory available for the idle and/or timer tasks
	to be created.  See the memory management section on the FreeRTOS web site
	for more details. */
	for( ;; );
}
int main( void )
{
	prvInitializeExceptions();
	init_axi_gpio();
	init_fifo_queues();

	startProductionControl();

	// Start the tasks and timer running.
	vTaskStartScheduler();

	// If all is well, the scheduler will now be running
	for( ;; );
}
int main( void )
{
	 prvInitializeExceptions();

	 /* Create Binary Semaphore */
	 vSemaphoreCreateBinary(xSemaphore_led);
	 configASSERT( xSemaphore_led );

	 /* Setup the GPIO Hardware. */
	 prvSetGpioHardware();

	 /* Create the task */
     xTaskCreate( prvLed_Task, ( signed char * ) "LED_TASK",
     			configMINIMAL_STACK_SIZE, NULL,
    			mainLED_TASK_PRIORITY, &xTask );


	 /* Create timer.  Starting the timer before the scheduler
     has been started means the timer will start running immediately that
     the scheduler starts. */
     xTimer = xTimerCreate ( (const signed char *) "LedTimer",
        		 	 	 	 	 	   TIMER_PERIOD,
        		 	 	 	 	 	   pdTRUE, /* auto-reload when expires */
        		 	 	 	 	 	   (void *) TIMER_ID, /* unique id */
        		 	 	 	 	 	   vTimerCallback	/* Callback */
                           );

     if ( xTimer == NULL ) {
		 /* The timer was not created. */
		 xil_printf("Failed to create timer\n\r");
		 prvShutdown();
		 return 0;
	 } else {
		 /* Start the timer */
		 xTimerStart( xTimer, 0 );
	 }

     /* Starting the scheduler will start the timers running as it is already
     been set into the active state. */
     vTaskStartScheduler();

     /* Should not reach here. */
     for( ;; );
}
int main( void )
{
	prvInitializeExceptions();

	/* Start the two tasks */
	xTaskCreate( prvHelloWorld, ( signed char * ) "HW",
			configMINIMAL_STACK_SIZE, NULL,
			mainHELLO_WORLD_TASK_PRIORITY, NULL );
	xTaskCreate( prvGoodBye, ( signed char * ) "GB",
			configMINIMAL_STACK_SIZE, NULL,
			mainGOOD_BYE_TASK_PRIORITY, NULL );

	/* Start the tasks and timer running. */
	vTaskStartScheduler();

	/* If all is well, the scheduler will now be running, and the following line
	will never be reached.  If the following line does execute, then there was
	insufficient FreeRTOS heap memory available for the idle and/or timer tasks
	to be created.  See the memory management section on the FreeRTOS web site
	for more details. */
	for( ;; );
}