Exemplo n.º 1
0
int kmain( void )
{
    struct pcb_s* process_screen_right_pcb;
    struct pcb_s* process_screen_top_left_pcb;
    struct pcb_s* process_screen_bottom_left_pcb;
    
    FramebufferInitialize();	
    sched_init();

    process_screen_right_pcb = sys_create_process((func_t*)&process_screen_right, 18);
    process_screen_top_left_pcb = sys_create_process((func_t*)&process_screen_top_left, 20);
    process_screen_bottom_left_pcb = sys_create_process((func_t*)&process_screen_bottom_left, 20);
	
	// ******************************************
	// switch CPU to USER mode
	// ******************************************
	ENABLE_IRQ();
    __asm("cps 0x10");
    
    // USER Program
    // ******************************************
	
	//On attend la terminaison de notre processus.
	sys_wait(process_screen_right_pcb);
    sys_wait(process_screen_top_left_pcb);
    sys_wait(process_screen_bottom_left_pcb);
	
	return 0;
}
Exemplo n.º 2
0
int main(int argc, char const *argv[]) {
  rpiInit();
  FramebufferInitialize();

  _init_vector_table();

  // disable IRQ
  *INTERRUPT_DISABLE_BASIC_IRQS = 0xffffffff;
  *INTERRUPT_DISABLE_IRQS1 = 0xffffffff;
  *INTERRUPT_DISABLE_IRQS2 = 0xffffffff;
  *INTERRUPT_FIQ_CTRL = 0;  // 20c

  _disable_IRQ();

  // set Timer Interrupt
  *INTERRUPT_ENABLE_BASIC_IRQS = 0x01;

  // stop timer
  *TIMER_CONTROL &= 0xffffff00;

  // set timer clock -> 1MHz
  //(0xF9=249: timer clock=250MHz/(249+1))
  *TIMER_PREDIVIDER = 0x000000F9;

  // Timer (100 msec)
  *TIMER_LOAD = 100000 - 1;
  *TIMER_RELOAD = 100000 - 1;

  // clear IRQ flag
  *TIMER_IRQ_CLR = 0;

  // start timer
  *TIMER_CONTROL |= 0x000000A2;

  // enable interrupts
  *INTERRUPT_ENABLE_BASIC_IRQS = 0x01;

  // enable IRQ
  _enable_IRQ();

  while (true) {
    _disable_IRQ();
    if (true == g_interrupt) {
      g_interrupt = false;
      _enable_IRQ();
      redraw();
    } else {
      _enable_IRQ();
    }
  }
  return 0;
}
Exemplo n.º 3
0
void kmain( void )
{
	FramebufferInitialize();
    sched_init(COLLABORATIVE);
    
    int p = 5;
	for(int i=0;i<5000000;i++) {
		p = (p*p)%27;
	}

    create_process((func_t*)&user_process1);
	create_process((func_t*)&user_process2);
	create_process((func_t*)&user_process3);
	
    __asm("cps 0x10"); // switch CPU to USER mode

    sys_exit(0);
}