第一阶段

1.开发环境

系统:centOS6.5           linux版本:2.6.32         交叉编译器:buildroot-2012.08

以上工具已经准备好,具体安装步骤不再赘述,将着重介绍u-boot-2010.09移植到fl2440开发板的全过程。

2.从http://ftp.denx.de/pub/u-boot/下载u-boot-2010.09的源码包,注意不要下u-boot-2010.09-rc1.tar.bz2或u-boot-2010.09-rc2.tar.bz2 版本的 ,因为带rc的为测试版本,我们下载u-boot-2010.09.tar.bz2

3.新建u-boot-2010.09用于存放我们下载的源码包

[weishusheng@centos]$ mkdir u-boot-2010.09

4.进入u-boot-2010.09目录,上传u-boot源码包

[weishusheng@centos]$cd u-boot-2010.09

5.解压源码包

[weishusheng@centos u-boot-2010.09]$ tar -xjf u-boot-2010.09.tar.bz2

6.打开U-boot-2010.09解压目录下的boards.cfg在241行smdk2410后添加fl2440的配置选项:

fl2440          arm arm920t     fl2440      -       s3c24x0

(注意这里不能写错,我曾经就把s3c24x0写成s3c2440,编译会报错)

7.在/board子目录中建立自己的开发板fl2440目录,并以smdk2410为模板,建立文件

[weishusheng@centos u-boot-2010.09]$ cd board

[weishusheng@centos board]$ mkdir fl2440
[weishusheng@centos board]$ cp -arf samsung/smdk2410/* fl2440
[weishusheng@centos board]$ mv fl2440/smdk2410.c fl2440/fl2440.c

修改fl2440目录下的Makefile中的28行

COBJS  := smdk2410.o flash.o为

COBJS  := fl2440.o flash.o

8.在include/configs/中建立开发板的配置头文件

[weishusheng@centos u-boot-2010.09]$ cp include/configs/smdk2410.h include/configs/fl2440.h

9.测试编译是否成功(成功)

[weishusheng@centos u-boot-2010.09]$ make fl2440_config
Configuring for fl2440 board...

添加串口打印启动信息部分

1.修改文件arch/arm/cpu/arm920t/start.S

将117,118两行注释掉,这个是用于LED跳转的,没什么用,也没有程序可跳

117 @   bl  coloured_LED_init
118 @   bl  red_LED_on

2.将134-170 行注释掉,这个代码是定义特殊寄存器和屏蔽中断的,我们将在后面的程序中操作

3.进入board/fl2440/lowlevel_init.S

在128行,添加以下寄存器定义

#define S3C24X0_INTERRUPT_BASE      0x4A000000

#define S3C24X0_CLOCK_POWER_BASE    0x4C000000

#define S3C2410_NAND_BASE           0x4E000000

#define S3C24X0_WATCHDOG_BASE       0x53000000

#define S3C24X0_GPIO_BASE           0x56000000

#define GPBCON                      0x56000010

#define GPBDAT                      0x56000014

#define GPBUP                       0x56000018

#define INTMSK_OFFSET               0x08

#define INTSUBMSK_OFFSET            0x1c

#define MPLLCON_OFFSET              0x04

#define CLKDIVN_OFFSET              0x14

#define NFCONF_OFFSET               0x00

#define NFCONT_OFFSET               0x04

#define NFCMD_OFFSET                0x08

#define NFSTAT_OFFSET               0x20

#define MDIV_405                    0x7f << 12

#define PSDIV_405                   0x21

#define MDIV_200                    0xa1 << 12

#define PSDIV_200                   0x31

在155行lowlevel_init:后面添加

关闭看门狗

/****** Disable Watchdog ******/

ldr r0, =S3C24X0_WATCHDOG_BASE

mov r1, #0

str r1, [r0]

接着屏蔽所有中断

/****** Disable interrupt by mask all IRQ mask ******/

ldr r0, =S3C24X0_INTERRUPT_BASE

mvn r1, #0x0

str r1, [r0, #INTMSK_OFFSET]

str r1, [r0, #INTSUBMSK_OFFSET]

接着初始化系统时钟,总线时钟

/****** Initialize System Clock, FCLK:HCLK:PCLK = 1:4:8,default FCLK is 120MHz ******/

ldr r0, =S3C24X0_CLOCK_POWER_BASE

mov r1, #5

str r1, [r0, #CLKDIVN_OFFSET]

mrc p15, 0, r1, c1, c0, 0

orr r1, r1, #0xc0000000

mcr p15, 0, r1, c1, c0, 0

mov r2, #MDIV_405

add r2, r2, #PSDIV_405

str r2, [r0, #MPLLCON_OFFSET]

接着初始化nandflash

/***** Initialize Nandflash controller ******/
     mov r1, #S3C2410_NAND_BASE
    ldr r2, =( (7<<12)|(7<<8)|(7<<4)|(0<<0) )
     str r2, [r1, #NFCONF_OFFSET]
 
     ldr r2, =( (1<<4)|(0<<1)|(1<<0) )   @ Active low CE controller
     str r2, [r1, #NFCONT_OFFSET]
     ldr r2, =(0x6)                      @ RnB Clear
     str r2, [r1, #NFSTAT_OFFSET]
     mov r2, #0xff                       @ Reset Nandflash
     strb    r2, [r1, #NFCMD_OFFSET]
     mov r3, #0       @ Delay for a while

delay:
     add r3, r3, #0x1
     cmp r3, #0xa
     blt delay

wait:
     ldr r2, [r1, #NFSTAT_OFFSET]  @ wait ready
     tst r2, #0x4
     beq wait

4.修改include/asm/arch-s3c24x0/s3c24x0.h

将该文件中所有的#if defined(CONFIG_S3C2410)

都修改为#if defined(CONFIG_S3C2410) || defined (CONFIG_S3C2440)

支持s3c2440开发板

在160行左右修改nandflash的寄存器定义,修改s3c2410_nand结构体为如下

#if defined (CONFIG_S3C2440)

/*   NAND FLASH (see S3C2440 manual chapter 6) */

struct s3c2410_nand

{

u32 NFCONF;
    u32 NFCONT;
    u32 NFCMD;
    u32 NFADDR;
    u32 NFDATA;
    u32 NFMECCD0;
    u32 NFMECCD1;
    u32 NFSECCD;
    u32 NFSTAT;
    u32 NFESTAT0;
    u32 NFESTAT1;
    u32 NFMECC0;                
    u32 NFMECC1;
    u32 NFSECC;
    u32 NFSBLK;
    u32 NFEBLK;

};

#endif

124行左右修改s3c24x0_clock_power结构体如下

struct s3c24x0_clock_power

{

u32 LOCKTIME;

u32 MPLLCON;

u32 UPLLCON;

u32 CLKCON;

u32 CLKSLOW;

u32 CLKDIVN;

#if defined (CONFIG_S3C2440)

u32 CAMDIVN;

#endif

};

5.include/asm/arch/s3c24x0_cpu.h,补充对s3c2440的支持

23行,修改#elif defined (CONFIG_S3C2410)为

#elif defined (CONFIG_S3C2410) || (CONFIG_S3C2440)

6.修改arch/arm/cpu/arm920t/s3c24x0/timer.c文件

184行添加支持s3c2440

defined(CONFIG_S3C2440) || \

7.修改arch/arm/cpu/arm920t/s3c24x0/speed.c

在static ulong get_PLLCLK(int pllreg)函数里大概66行(return (CONFIG_SYS_CLK_FREQ * m) / (p << s);的上一行)添加

#if defined(CONFIG_S3C2440) /* add by weishusheng */

if(pllreg == MPLL)

return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s));

else if(pllreg == UPLL)

#endif

80行左右修改get_HCLK()函数如下

ulong get_HCLK(void)

{

struct s3c24x0_clock_power *clk_power = s3c24x0_get_base_clock_power();

//return (readl(&clk_power->CLKDIVN) & 2) ? get_FCLK() / 2 : get_FCLK();

#if defined(CONFIG_S3C2440) /* Modify by hurryliu*/

if (readl(&clk_power->CLKDIVN) & 0x6)

{

if ((readl(&clk_power->CLKDIVN) & 0x6)==2)

return(get_FCLK()/2);

if ((readl(&clk_power->CLKDIVN) & 0x6)==6)

return((readl(&clk_power->CAMDIVN) & 0x100) ? get_FCLK()/6 : get_FCLK()/3);

if ((readl(&clk_power->CLKDIVN) & 0x6)==4)

return((readl(&clk_power->CAMDIVN) & 0x200) ? get_FCLK()/8 : get_FCLK()/4);

return(get_FCLK());

}

else

return(get_FCLK());

#else

return((readl(&clk_power->CLKDIVN) & 0x2) ? get_FCLK()/2 : get_FCLK());

#endif /* Modify end*/

}

8.修改lowlevel_init.S  修改各个bank寄存器数值

[weishusheng@centos u-boot-2010.09]$ vim board/fl2440/lowlevel_init.S

54行的#define B1_BWSCON       (DW32)    改为#define B1_BWSCON       (DW16)

88行左右B3_改为如下(前面的数字是我的行号)

88 #define B3_Tacs         0xc

89 #define B3_Tcos         0x7 
 90 #define B3_Tacc         0xf 
 91 #define B3_Tcoh         0x1 
 92 #define B3_Tah          0x0 
 93 #define B3_Tacp         0x0     
 94 #define B3_PMC          0x0

144行左右修改为如下

104 #define B5_Tacs         0xc 
105 #define B5_Tcos         0x7 
106 #define B5_Tacc         0xf 
107 #define B5_Tcoh         0x1 
108 #define B5_Tah          0x0 
109 #define B5_Tacp         0x0
110 #define B5_PMC          0x0

120行左右 /* REFRESH parameter */改为如下

120 /* REFRESH parameter */
121 #define REFEN           0x1 /* Refresh enable */
122 #define TREFMD          0x0 /* CBR(CAS before RAS)/Auto refresh */
123 #define Trc             0x3 /* 7clk     add by wei*/
124 #define Tchr            0x2 /* 3clk */
125 
126 
127 #if defined(CONFIG_S3C2440)
128 #define Trp         0x2 /* 4clk */
129 #define REFCNT          1012
130 #else
131 #define Trp         0x0 /* 2clk */
132 #define REFCNT      0x0459
133 #endif
134 /**************************************/

9.修改include/configs/fl2440.h

在38行添加#define CONFIG_S3C2440     1

在31行定义在内存中运行的宏,支持在内存中运行(当需下载到nandflash时把以下这个宏去掉)

#define  CONFIG_SKIP_LOWLEVEL_INIT     1

在120行,修改为自己的开发板启动信息

#define CONFIG_SYS_PROMPT       "[fl2440@wss]# "

这些工作做完后,下载到内存中运行,连接串口,就可以看到打印的信息了(如下)

U-Boot 2010.09 (Aug 18 2014 - 11:17:12)

DRAM:  64 MiB

Flash: 512 KiB

*** Warning - bad CRC, using default environment

In:    serial

Out:   serial

Err:   serial

Net:   CS8900-0

[fl2440@wss]#

[fl2440@wss]#

[fl2440@wss]#

u-boot-2010.09移植(A)的更多相关文章

  1. u-boot-2010.09移植(B)

    前面我们的u-boot只是在内存中运行,要想在nandflash中运行,以达到开机自启的目的,还需作如下修改 一.添加DM9000网卡支持 1.修改board/fl2440/fl2440.c中的boa ...

  2. Linux JDK 安装及卸载 http://www.cnblogs.com/benio/archive/2010/09/14/1825909.html

    参考:http://www.cnblogs.com/benio/archive/2010/09/14/1825909.html

  3. ok6410 u-boot-2012.04.01移植六完善MLC NAND支持

    继ok6410 u-boot-2012.04.01移植四.五后,开发板基本已支持MLC NAND,支持DM9000.但是通过NAND命令更新u-boot到NAND,还存在问题,需要根据u-boot的n ...

  4. Linux移植之内核启动过程start_kernel函数简析

    在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...

  5. wifi 驱动移植范例

    .改Makefile:  里面没有dm6441平台的,我看到有dm6446的,所以就在这里改了 ifeq ($(PLATFORM),DM6446) LINUX_SRC = /root/work/lin ...

  6. ok6410 u-boot-2012.04.01移植二修改源码支持单板

    继ok6410 u-boot-2012.04.01移植一后修改代码,对ok6410单板初始化,主要包括时钟.串口.NAND.DDR等初始化.这些工作在以前的裸板程序都写了,直接拿来用.我觉得先写裸板程 ...

  7. 让VS 2010在调试字符串时,支持Json数据格式友好显示

    阅读本文如果对Microsoft.VisualStudio.DebuggerVisualizers的用法不熟悉的,可以参考这篇文章.http://www.cnblogs.com/devil0153/a ...

  8. [sharepoint]Office Web Apps for SharePoint 2010

    Office Web Apps for SharePoint 2010 2012年09月20日 ⁄ 综合 ⁄ 共 908字 ⁄ 字号 小 中 大 ⁄ 评论关闭 After you install Of ...

  9. [转]SharePoint 2010 Powershell Feature Cmdlets

    In this installment its time to look at the various cmdlets that have to do with Features. Of course ...

随机推荐

  1. DOM位置参数

    以chrome浏览器测试为准 scrollwidth scrollheight clientwidth clientheight offsetwidth offsetheight 对象的实际宽高 包括 ...

  2. a标签的herf和click事件

    在动态网页中,常常需要在单击超链接时处理一些数据,而不是跳转一个网页.在这种情况下,通常有以下三种处理方式: 不设置<a>标签的href属性,只设置onclick属性.在这种处理方式下,通 ...

  3. C语言程序设计第9堂作业

    一.本次课主要内容: 本章将散布在前五章中的数据类型和表达式等内容做了归纳性的汇总,本次课需要掌握以下两个方面: (1)本次课通过从数据在计算机内的存储格式入手,介绍整型.字符型.单精度和双精度实型四 ...

  4. COMP9020

    outline: numbers, sets, functions week 1logic week 2–3relation theory week 5–6graphs and trees week ...

  5. Java并发编程学习笔记(二)——对象的共享

    主要概念:可见性.重排序.失效数据.最低安全性.发布.逸出.线程封闭(Ad-hoc.栈封闭.ThreadLocal类).不变性.Final域.事实不可变对象. 1.在没有同步的情况下,编译器.处理器以 ...

  6. Asp.net attributes collection

    <?xml version="1.0" encoding="utf-8"?><root>  <ContralNames>   ...

  7. EntityFrameworkCore 试用

    引用 EF Core Sqlite Install-Package Microsoft.EntityFrameworkCore.SqlServer 引用 EF Core Tool Install-Pa ...

  8. android view :事件

    在view绘制完成后,要想在和view交互一定就要使用事件了,这些事件包括触屏,按键,以及轨迹球,说起轨迹球,在黑莓的手机上常见,现在触屏出来之后基本上就没有这个东西了.这些事件从屏幕上产生出来,会进 ...

  9. IOS 错误 [UIWebView cut:]: unrecognized selector sent to instance

    那在什么场景中会出现这种情况呢? 如果一个包含文字的输入元素有焦点,然后按钮的点击会导致输入失去焦点,然后接下来在输入时双按会重新得到焦点并从弹出bar中选择剪切复制粘贴,就会导致此error. 也就 ...

  10. 如何清除SQL Server Management Studio的最近服务器列表

    SQL Server Management Studio (SSMS) 的"连接到服务器"对话框会记录用户所有访问过的服务器名称,这个功能对于经常连接多个数据库的人来说确实挺方便的 ...