一. 相关寄存器设置方案
设置方案 | 时钟频率值 | 寄存器设置值 |
方案一 | MPLLCON = ( (0x5c<<12) | (0x01<<4) | (0X01)); | |
方案二 | MPLLCON = ( (0x7f<<12) | (0x02<<4) | (0X01)); |
二.移植过程
本次移植采用方案一,具体移植需要修改的内容如下所示:
1.修改文件一:u-boot-2013.07 / arch / arm / cpu / arm920t / start.S
/* FCLK:HCLK:PCLK = 1:4:8 */
/* default FCLK(Fin) is 12 MHz ! */
ldr r0, =CLKDIVN
mov r1, #0x05
/* 修改:由原来的 #3 改为 #0x05 */
str r1, [r0]
/* when HDIVN != 0, Change CPU Bus mode from the fast bus mode
to the asynchronous bus mode*/
mrc p15, 0, r1, c1, c0, 0 /* 新增:将CPU设为异步总线模式 */
orr r1, r1, #0xc0000000 /* 新增 */
mcr p15, 0, r1, c1, c0, 0 /* 新增 */
2.修改文件二:u-boot-2013.07 / board / friendlyarm / mini2440 / mini2440.h
/* PLL Parameters */
#define CLKDIVN_VAL 0x05
/* 修改:将原来的 7 改为 0x05 */
#define M_MDIV 0x5c
/* 修改:将原来的 0x7F 改为 0x5c */
#define M_PDIV 0x1
/* 修改:将原来的 0x2 改为 0x1 */
#define M_SDIV 0x1
#define U_M_MDIV 0x38
#define U_M_PDIV 0x2
#define U_M_SDIV 0x2
3.修改文件三:u-boot-2013.07 / arch / arm / cpu / arm920t / s3c24x0 / cpu_info.c
static const getfreq freq_f[] = {
get_FCLK,
get_HCLK,
get_PCLK,
get_UCLK /* 新增:为了打印出UCLK,特将get_UCLK()的函数名加进来 */
};
static const char freq_c[] = { 'F', 'H', 'P', 'U' };
/* 修改:将原来的{'F', 'H', 'P'}改为{'F', 'H', 'P', 'U'}*/
4.修改文件四:u-boot-2013.07 / arch / arm / lib / board.c
power_init_board();
#ifdef PORTING_2_MINI2440_BY_XIXINJIE
puts("************************************************\n");
puts("* U-Boot-2013-07 for mini2440 *\n");
puts("* Ported by XiXinjie *\n");
puts("* 2013.08.27 *\n");
puts("************************************************\n");
print_cpuinfo(); /* 新增:为了在串口中打印出CpuID FCLK HCLK PCLK UCLK */
#endif /* PORTING_2_MINI2440_BY_XIXINJIE */
#if !defined(CONFIG_SYS_NO_FLASH)
puts("Flash: ");
flash_size = flash_init();