您的位置:首页 > 其它

u-boot-2013.07在mini2440上的移植(三):时钟体系的设置

2013-08-30 12:56 495 查看

一. 相关寄存器设置方案

设置方案时钟频率值寄存器设置值
方案一
MPLLCON = ( (0x5c<<12) | (0x01<<4) | (0X01));

UPLLCON = ( (0x38<<12) | (0x02<<4) | (0x02));

CLKDIVN = 0x05;

LOCKTIME = 0xFFFFFF;

方案二
MPLLCON = ( (0x7f<<12) | (0x02<<4) | (0X01));

UPLLCON = ( (0x38<<12) | (0x02<<4) | (0x02));

CLKDIVN = 0x05;

LOCKTIME = 0xFFFFFF;

二.移植过程

        本次移植采用方案一,具体移植需要修改的内容如下所示:

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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: