예제 #1
0
파일: interrupt.c 프로젝트: nekogigi/kozos
/* ・ス・ユ・ネ・ヲ・ィ・「。ヲウ荵、゚・ル・ッ・ソ、ホス魘�ス */
int softvec_init(void)
{
  int type;
  for (type = 0; type < SOFTVEC_TYPE_NUM; type++)
    softvec_setintr(type, NULL);
  return 0;
}
예제 #2
0
파일: command.c 프로젝트: tkysnj/myosmeta
static void cmd_timer( int cmdc, char *cmdv[COMMAND_WORD_NUM] )
{
  softvec_setintr(SOFTVEC_TYPE_TIMINTR, timer_intr);
  send_write("start timer .\n");
  timer_start(0,3000);
  timer_start(1,4500);
}
예제 #3
0
파일: kozos.c 프로젝트: yku/EmbeddedOS
static int setintr(softvec_type_t type, kz_handler_t handler)
{
    static void thread_intr(softvec_type_t type, unsigned long sp);
    softvec_setintr(type, thread_intr);
    handlers[type] = handler;

    return 0;
}
예제 #4
0
파일: kozos.c 프로젝트: giggi/12step
static int
setintr(softvec_type_t type, kz_handler_t handler)
{
    softvec_setintr(type, thread_intr);
    handlers[type] = handler;

    return 0;
}
예제 #5
0
파일: kozos.c 프로젝트: forest1040/kozos
/* システム・コールの処理(kz_setintr():割込みハンドラ登録) */
static int thread_setintr(softvec_type_t type, kz_handler_t handler)
{
  static void thread_intr(softvec_type_t type, unsigned long sp);

  /*
   * 割込みを受け付けるために,ソフトウエア・割込みベクタに
   * OSの割込み処理の入口となる関数を登録する.
   */
  softvec_setintr(type, thread_intr);

  handlers[type] = handler; /* OS側から呼び出す割込みハンドラを登録 */
  putcurrent();

  return 0;
}
예제 #6
0
파일: kozos.c 프로젝트: bobchin/kozos
/* システムコールの処理(kz_setintr(): 割り込みハンドラ登録) */
static int thread_setintr(softvec_type_t type, kz_handler_t handler)
{
  static void thread_intr(softvec_type_t type, unsigned long sp);

  /*
   * 割り込みを受け付けるために、ソフトウェア割り込みベクタに
   * OSの割り込み処理の入口となる関数を登録する。
   */
  softvec_setintr(type, thread_intr);

  handlers[type] = handler;
  /* 処理後にレディキューに接続し直す */
  putcurrent();

  return 0;
}
예제 #7
0
파일: main.c 프로젝트: yku/EmbeddedOS
int main(void)
{
    INTR_DISABLE;

    puts("kozos boot succeed!\n");

    softvec_setintr(SOFTVEC_TYPE_SERINTR, intr);
    serial_intr_recv_enable(SERIAL_DEFAULT_DEVICE);

    puts("> ");

    INTR_ENABLE;
    while(1){
        asm volatile ("sleep");
    }

    return 0;
}
예제 #8
0
파일: main.c 프로젝트: kshimo69/h83069fos
int main(void)
{
    INTR_DISABLE;   /* 割込み無効にする */

    puts("kozos boot succeed!\n");

    /* シリアル割込みハンドラを登録 */
    softvec_setintr(SOFTVEC_TYPE_SERINTR, intr);
    /* シリアル受信割込みを有効化 */
    serial_intr_recv_enable(SERIAL_DEFAULT_DEVICE);

    puts("> ");

    INTR_ENABLE;    /* 割込み有効にする */
    while(1) {
        asm volatile ("sleep"); /* 省電力モードに移行 */
        /* 割込み待ち */
    }

    return 0;
}
예제 #9
0
파일: main.c 프로젝트: monyuonyu/pinokernel
int boot_main()
{
//	long i;
//	static int ii;
//	const char str[][32] = {{"ok sci\n\r"}, {"ok bootloader\n\r"}, {"ok started!! XMODEM\n\r"}, {"ok finish!! XMODEM\n\r"}, {"ok started!! Deploy\n\r"}, {"ok finish!! Deploy\n\r"}};

	// ポート4を光らすテスト
//	volatile unsigned char* p4ddr = (volatile unsigned char*) 0xFEE003;
//	volatile unsigned char* p4 = (volatile unsigned char*) 0xFFFFD3;
//	*p4ddr = 0x03;
//	*p4 = 0x01;

//	sci_write_str(SCI_NO_1, str[0]);
//
//	sci_write_str(SCI_NO_1, str[2]);
//	ii = xmodem_start(buf_start);
//	sci_write_str(SCI_NO_1, str[3]);
//
//	sci_write_str(SCI_NO_1, str[4]);
//	mot_deploy(buf_start);
//	sci_write_str(SCI_NO_1, str[5]);

//	sci_write_str(SCI_NO_1, (const char*)buf_start);

//	sci_write_str(SCI_NO_1, str[1]);

//	*p4 = 0x02;

	// ソフト・割り込みベクタへ登録
	softvec_setintr(softvec_type_serial, main_vec);

	// シリアル通信割り込みEnable
	sci_read_intr_enable(SCI_NO_1);

	// 割り込みENABLE
	INTERUUPT_ENABLE


	sci_write_str(SCI_NO_1, "PINoC Console>_ \r\n");

	// Sleep
	as_SLEEP_LOOP_3069

//	sci_write_str(SCI_NO_1, (char*)&text_start);

//	char* entry_point;
//	void (*start)(void);
//	char str[32] = {0,};
//	while(1)
//	{
//		int i;
//		sci_write_str(SCI_NO_1, "PINoC Console>_ ");
//
//
//		// エンターが入力されるまでループ
//		getstring(str);
//
//		sci_write(SCI_NO_1, '\n');
//
//		// メインスイッチ
//		switch (str[0])
//		{
//		// RAMへロード
//		case 'l':
//			sci_write_str(SCI_NO_1, "  started!! XMODEM...\n\r");
//			xmodem_start((char*)&buf_start);
//			sci_write_str(SCI_NO_1, "  finish!! XMODEM\n\r");
//			sci_write_str(SCI_NO_1, "    Transfer is Completed...\n\r");
//			break;
//
//			// void main(void) の形式で関数ポインタから開始
//		case 's':
//			start = (void*)&buf_start;
//			start();
//			break;
//
//			// メモリダンプ
//		case 'd':
//			getstring(str);
//			asciitobin(str, 4);
//
//			for (i = 0; i < (int)*((short*)str); i++)
//				sci_write(SCI_NO_1, *(((char*)&buf_start) + i));
//			break;
//
//			// elfヘッダ情報表示
//		case 'e':
//			if(elf_read((char*)&buf_start))
//			{
//				sci_write_str(SCI_NO_1, "it's not elf file...\n\r");
//			}
//			else
//			{
//				sci_write_str(SCI_NO_1, "it's elf file!!\n\r");
//			}
//
//			if(elf_analysis((char*)&buf_start))
//			{
//				sci_write_str(SCI_NO_1, "it's not load file...\n\r");
//			}
//			else
//			{
//				sci_write_str(SCI_NO_1, "it's load file!!\n\r");
//			}

//			// RAM展開
//			entry_point = elf_develop((char*)&buf_start);
//			start = (void (*)(void))entry_point;
//
//			// ヘルプ
//		case 'h':
//			break;
//
//		case 'q':
//			dbg();
//			as_SLEEP_3069
//			dbg();
//			break;
//
//		}
//
//	}

	return 0;
}