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

一. 相关寄存器设置方案

设置方案时钟频率值寄存器设置值
方案一

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();




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值