uCOS-II在S3C2440上的移植
3)
修改时钟频率和总线速率 M开发论坛
这一部主要是修改CLKDIVN时钟分频比和MPLL总线速率,可在init.S的初始化汇编环境中设置, ARM
ldr
r0,=CLKDIVN
; Set ratios 1:3:6 for FCLK:HCLK:PCLK http://www.armforum.cn
ldr
r1,=(7) ARM
str
r1,[r0] 字串4
[ PLL_ON_START http://www.armforum.cn
; Configure MPLL ARM开发论坛
ldr
r0,=MPLLCON
http://www.armforum.cn
ldr
r1,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV)
; Fin=12MHz,Fout=50MHz http://www.armforum.cn
str
r1,[r0] http://www.armforum.cn
] ARM
也可在C的入口函数C_vMain中设置 字串8
__vChangeClockDivider(3,1);
// 1:3:6
/* already set at init.S */ ARM开发论坛
__vChangeMPllValue(184,2,2);
// FCLK=406M ARM开发论坛
M开发论坛
4)
修改内核心跳 ARM开发论坛
Michael Anburaj的移植是使用看门狗作内核心跳,但在S3C2440中,看门狗与AC97控制器共用一个中断,所以需要修改中断跳转和清中断等操作。考虑到看门狗在嵌入式的重要性,这里改用没有输出功能的时钟4作为内核心跳。修改心跳初始化函数FRMWRK_vStartTicker(): ARM开发论坛
void FRMWRK_vStartTicker(U32 wTicksPerSec) 字串8
{ ARM
…… ARM开发论坛
OS_ENTER_CRITICAL(); ARM开发论坛
ARM
pISR_TIMER4 = (U32)__vTimer4Interrupt; 字串8
字串8
tcfg1 &= ~S3C2410_TCFG1_MUX4_MASK; 字串4
tcfg1 |= S3C2410_TCFG1_MUX4_DIV2; 字串4
M开发论坛
tcfg0 &= ~S3C2410_TCFG_PRESCALER1_MASK; 字串8
tcfg0 |= ((6 - 1) / 2) << S3C2410_TCFG_PRESCALER1_SHIFT; 字串4
ARM
tcnt = (PCLK / 6) / wTicksPerSec; 字串5
…… M开发论坛
tcon &= ~(7<<20); ARM
tcon |= S3C2410_TCON_T4RELOAD; 字串8
tcon |= S3C2410_TCON_T4MANUALUPD; http://www.armforum.cn
rTCON = tcon; ARM
rTCNTB4 = tcnt; ARM
ARM
tcon |= S3C2410_TCON_T4START; 字串8
tcon &= ~S3C2410_TCON_T4MANUALUPD; 字串5
rTCON = tcon; M开发论坛
ARM
BIT_CLR(rINTMSK, BIT_TIMER4); 字串8
OS_EXIT_CRITICAL(); ARM
} ARM
uCOS-II在S3C2440上的移植
自己在s3c2440上正移植实验,希望能有所帮助。