|
環(huán)境:ads2.2+ARM9 +s3c2410 注意:由于編譯器(ads1.2或2.2)對全局變量初始化為0的不完全支持,有時必須手動初始化為0,切記。。 一、ucos II移植到ARM9 s3c2410 可從官網(wǎng)下載移植代碼,基本無需改動。 在os_cpu_a.s中的函數(shù)UCOS_IRQHandler中的bl OSIntEnter和bl C_IRQHandler之間插入如下代碼(見邵貝貝,第2版,第104頁的說明:L3.18(4) ): ldr r0, =OSIntNesting ldrb r0,[r0] cmp r0,#1 bne XX ldr r0,=OSTCBCur ldr r1,[r0] str sp,[r1] ; store sp in preempted tasks's TCB XX 二、ucGui 390移植到ARM9 s3c2410 1. Lcd驅動: 1) 畫點函數(shù): 對dm2410實驗板上的lcd,左上為原點(0,0),函數(shù)如下: void LCD2410_SetPixel(int xp, int yp, U16 color, int dindex) { *(pLCDBuffer565 + SCREEN_WIDTH*yp + xp) = color; } 為了達到更快的顯示速度,別忘了開啟Cache!。 2)LCD控制器的初始化,對2410函數(shù)如下: int LCD2410_Init(void) { if(!isLcdInit) { InitLcdPort(); InitLcdRegs(); isLcdInit = 1; return 0; } return 1; } void InitLcdPort(void) { // LCD port initialize. s2410IOP->GPCUP = 0xFFFFFFFF; s2410IOP->GPCCON = 0xAAAAAAAA; s2410IOP->GPDUP = 0xFFFFFFFF; s2410IOP->GPDCON = 0xAAAAAAAA; s2410IOP->GPGCON &= ~(3 << 8); /* Set LCD_PWREN as output */ s2410IOP->GPGCON |= (1 << 8); s2410IOP->GPGDAT |= (1 << 4); //* Backlight ON
|