porting microC/OS-II on x86
一點這次RTOS final project的心得,其中keyboard interrupt的部分感謝洪泰昌學長的幫忙,所有的架構是base on
http://www.micrium.com/intel/index.html這裡的code
1. 使用VC 6必須把MASM 611的ml.exe放進VC6的bin目錄中,目前我還沒辦法使用VS 2005成功complier。
2. 使用VMWare搭配Floppy Image Creator可以簡化開發過程。
3. 此部分為Keyboard intrrupt部分。
如需使用其他interrupt請參考Ralf Brown's Interrupt List服用
/* 大概觀念為這樣,這份code還有些小問題,要自行處理 */
/* Tang Chih-Cheih 98/01/21 */
/*--------------------- 設定x86 interrupt 0x21 對應到OSKeyboardISR function(os_cpu_c.c)---------------------*/
SetIntVector(0x21, OSKeyboardISR); // Install the handler
;-----------------------------------------------------------------------
; 讓keyboard interrupt 對應到displayEnter的function(os_cpu_a.asm)
; _OSKeyboardISR
;-----------------------------------------------------------------------
PUBLIC _OSKeyboardISR
EXTRN _OSIntEnter:NEAR
EXTRN _displayEnter:NEAR
EXTRN _OSIntExit:NEAR
_OSKeyboardISR PROC NEAR
pushad;
call _OSIntEnter;
call _displayEnter;
call _OSIntExit;
;Send an end-of-interrupt to the i8042.
in al,61h;
mov ah,al;
or al,80h;
out 61h,al;
xchg al,ah;
out 61h,al;
;Send an end-of-interrupt to the i8259.
mov al,20h;
out 20h,al;
;Standard uCOS processing.
popad;
iretd
_OSKeyboardISR ENDP
/*--------------------- 從port 0x60 讀取keyboard的scan code ---------------------*/
void displayEnter(){
INT8U indata;
char data[2];
indata = inportb(0x60);
data[0] = indata;
data[1]='\0';
OnScreen(24, 5, data, 14);
}
0 意見:
張貼留言