minis3c2440嵌入式开发板学习之u-boot移植(一)

时间:2021-09-13 18:49:29

 

U-boot移植

(以下步骤适用于s3c2440开发板)

1、修改Makefile文件:

a.修改交叉编译宏(CROSS_COMPILE?=)修改为(CROSS_COMPILE?=arm-linux-);

    b.._LIBS:后的两个变量交换位置(line289)

    c.添加tocore2440_config Make文件(line2997

tocore2440_config: unconfig

@$(MKCONFIG) $(@:_config=) arm arm920t tocore2440 tocore  s3c24x0

包含六个参数:$1. tocore2440 表示在include/configs/目录下必须包含tocore2440.h文件;$2. arm表示在主目录下包含lib_arm目录,在include/目录下包含asm_arm目录;$3.arm920t表示CPU型号,在cpu目录下包含arm920t目录;$4.tocore2440芯片型号;$5.厂商目录(if($5!=NULL),则在board目录下有$5/$4目录,else,则在board目录下有$4目录)$6. s3c24x0表示在include/asm_arm/包含arch_ s3c24x0目录;

d.以上部分表示在移植U-boot前首先要添加开发板自己的配置头文件,并在board目录下建立自己的开发板目录,修改s3c24x0(cpu/arm920t/s3c24x0,include/asm_arm/archs3c24x0)文件,改为支持2440开发板,修改过程如下:

1)      修改inperrupts.c文件,添加宏定义:#defined(CONFIG_S3C2440)( line36)

2)      修改speed.c文件:a.添加宏定义:#defined (CONFIG_S3C2440) ( line33)b.get_PLLCLK()函数中添加2440支持,具体修改方式如下:在return返回值前添加#if defined(CONFIG_S3C2440)

if (pllreg == MPLL)

return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s)); //得到2440开发板的频率

    else if (pllreg == UPLL)

#endif

c.get_HCLK()函数修改为2440支持,将原函数返回改为:

    //该函数为读取当前系统时钟

#if defined(CONFIG_S3C2440)

   if (clk_power->CLKDIVN & 0x6)

    {

        if ((clk_power->CLKDIVN & 0x6)==2) return(get_FCLK()/2);

        if ((clk_power->CLKDIVN & 0x6)==6) return((clk_power->CAMDIVN & 0x100) ? get_FCLK()/6 : get_FCLK()/3);

        if ((clk_power->CLKDIVN & 0x6)==4) return((clk_power->CAMDIVN & 0x200) ? get_FCLK()/8 : get_FCLK()/4);

         return(get_FCLK());

    }

    else return(get_FCLK());

#else

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

#endif

d.修改time.c文件,添加宏定义#defined (CONFIG_S3C2440)(line33)