u-boot-2011.03在mini2440/micro2440上的移植(二)——在RAM中运行
来源:互联网 发布:clover软件怎么卸载 编辑:程序博客网 时间:2024/06/07 16:31
2.1 include/configs/micro2440.h
删除
#define CONFIG_S3C2410 1 /* specifically a SAMSUNG S3C2410 SoC */
#define CONFIG_SMDK2410 1 /* on a SAMSUNG SMDK2410 Board */
添加
#define CONFIG_S3C2440 1 /* specifically a SAMSUNG S3C2440 SoC */
#define CONFIG_MICRO2440
#define CONFIG_SKIP_LOWLEVEL_INIT
【说明】
定义CONFIG_SKIP_LOWLEVEL_INIT是因为我们要在RAM中运行,所以要跳过底层的一些初始化代码
2.2 arch/arm/cpu/arm920t/start.S
# if defined(CONFIG_S3C2410)
ldr r1, =0x3ff
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
# if defined(CONFIG_S3C2440)
# define LOCKTIME 0x4C000000
# define MPLLCON 0x4C000004
# define UPLLCON 0x4C000008
# define CLKDIV_VAL 5
# define M_MDIV 0x7f /* XTal=12.0MHz MPLL=405MHz */
# define M_PDIV 2
# define M_SDIV 1
# define U_MDIV 0x38 /* XTal=12.0MHz UPLL=48MHz */
# define U_PDIV 2
# define U_SDIV 2
ldr r1, =0x7fff
ldr r0, =INTSUBMSK
str r1, [r0]
ldr r0,=LOCKTIME /* 设置U_LTIME和M_LTIME */
ldr r1,=0x0fff0fff
str r1,[r0]
ldr r0, =CLKDIVN /* Fclk:Hclk:Pclk = 1:4:8 */
ldr r1, =CLKDIV_VAL
str r1, [r0]
mrc p15, 0, r0, c1, c0, 0 /* 总线模式设为异步模式 */
orr r0, r0, #0xc0000000
mcr p15, 0, r0, c1, c0, 0
ldr r0,=UPLLCON /* 配置UPLL */
ldr r1,=((U_MDIV<<12) + (U_PDIV<<4) + U_SDIV)
str r1,[r0]
nop /* 为确保硬件完成操作,至少需7个时钟周期 */
nop
nop
nop
nop
nop
nop
ldr r0,=MPLLCON /* 配置MPLL */
ldr r1,=((M_MDIV<<12) + (M_PDIV<<4) + M_SDIV)
str r1,[r0]
#else
/* FCLK:HCLK:PCLK = 1:2:4 */
/* default FCLK is 120 MHz ! */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
#endif /* CONFIG_S3C2440 */
#endif /* CONFIG_S3C24X0 */
2.3 board/samsung/micro2440/micro2440.c
#define FCLK_SPEED 2
#if FCLK_SPEED==0 /* Fout = 203MHz, Fin = 12MHz for Audio */
#define M_MDIV 0xC3
#define M_PDIV 0x4
#define M_SDIV 0x1
#elif FCLK_SPEED==1 /* Fout = 202.8MHz */
#define M_MDIV 0xA1
#define M_PDIV 0x3
#define M_SDIV 0x1
#elif FCLK_SPEED==2 /* Fout = 405MHz */
#define M_MDIV 0x7F
#define M_PDIV 0x2
#define M_SDIV 0x1
#endif
#define USB_CLOCK 2
#if USB_CLOCK==0
#define U_M_MDIV 0xA1
#define U_M_PDIV 0x3
#define U_M_SDIV 0x1
#elif USB_CLOCK==1
#define U_M_MDIV 0x48
#define U_M_PDIV 0x3
#define U_M_SDIV 0x2
#elif USB_CLOCK==2 /* Fout = 48MHz */
#define U_M_MDIV 0x38
#define U_M_PDIV 0x2
#define U_M_SDIV 0x2
#endif
int board_init (void)
{
......
gd->bd->bi_arch_number = MACH_TYPE_MINI2440;
......
}
int dram_init (void)
{
......
gd->ram_size = PHYS_SDRAM_1_SIZE;
return 0;
}
【说明】
我在发布资源时用的是MACH_TYPE_MICRO2440,之前的Linux内核中有MICRO2440的机器码,值为2680,但是最近的内核,比如Linux-2.6.39中并没有这个值,虽然我自己是在Micro2440开发板上移植,但机器码还是使用MACH_TYPE_MINI2440,其值为1999。所以下载了资源的网友一定要注意gd->bd->bi_arch_number 的值。
2.4 测试
[408@WZC u-boot-2011.06]$ make
编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处,u-boot已经能在RAM中运行。
- u-boot-2011.03在mini2440/micro2440上的移植(二)——在RAM中运行
- u-boot-2011.03在mini2440/micro2440上的移植(一)——准备工作
- u-boot-2011.03在mini2440/micro2440上的移植(三)——支持DM9000
- u-boot-2011.03在mini2440/micro2440上的移植(四)——支持内核启动
- u-boot-2011.03在mini2440/micro2440上的移植(五)——支持Nand Flash
- u-boot-2011.03在mini2440/micro2440上的移植(六)——支持yaffs下载
- u-boot-2011.03在mini2440/micro2440上的移植(七)——支持Nand Flash启动
- u-boot-2011.03在mini2440/micro2440上的移植(八)——结束语及资源下载
- U-boot-200908在FL2440上的移植(一)--uboot在RAM中运行
- u-boot-2011.09在ST2410上的移植-在RAM中运行
- u-boot-2010.12移植到2440(二,移植在RAM中运行)
- [转]u-boot-2010.12移植到2440(二,移植在RAM中运行)
- [转]u-boot-2010.12移植到2440(二,移植在RAM中运行)
- [转]u-boot-2010.12移植到2440(二,移植在RAM中运行)
- u-boot-2010-06在mini2440上的移植(二)
- u-boot-2009.08在mini2440上的移植(二)---增加nor flash功能 ——心得体会
- u-boot-2009.08在mini2440上的移植(二)---增加nor flash功能
- u-boot-2013.07在mini2440上的移植(二):从简单修改入手
- 2440平台,SD卡启动WINCE,全部源码
- 深入Java字符串
- u-boot-2011.03在mini2440/micro2440上的移植(一)——准备工作
- Asp.net IIS 7.5 怎么配置伪静态?
- Android中AsyncTask的简单用法 .
- u-boot-2011.03在mini2440/micro2440上的移植(二)——在RAM中运行
- sql经典常用大全
- 关于CString::IsEmpty()的返回值
- u-boot-2011.03在mini2440/micro2440上的移植(三)——支持DM9000
- S2SH获取oralce的date类型,显示在web页面带时间方法
- u-boot-2011.03在mini2440/micro2440上的移植(四)——支持内核启动
- shell 程序设计1--- 那些年我们一起学习linux程序设计
- jQuery 教程
- apache日志格式定义及示例说明