u-boot-2010.09移植(二)

来源:互联网 发布:战网获取数据索引很慢 编辑:程序博客网 时间:2024/04/27 17:22

让串口能正常输出打印信息,添加jz2440中S3C2440片上系统的支持。

一、汇编文件修改,这部分主要集中修改修改cpu/arm920t/start.S文件。

1、打开/cpu/arm920t/start.S,删除AT91RM9200使用的LED代码,117、118行,关闭LED代码。

  • start_code:
    /*
    * set the cpu to SVC32 mode
    */
    mrs r0,cpsr
    bic r0,r0,#0x1f
    orr r0,r0,#0xd3
    msr cpsr,r0


     /*bl coloured_LED_init
    bl red_LED_on*/     //这是LED灯初始化将其屏蔽掉,因为我们jz2440上的LED资源与SMDK2410开发板的不一致
2.  找到下面的语句,定位到该位置,修改相应部位,即增加红色部分

  • #if defined(CONFIG_S3C2400) || defined(CONFIG_S3C2410) || defined(CONFIG_S3C2440)  
  •  mov  r1, #0xffffffff
     ldr    r0, =INTMSK
    str r1, [r0]
    # if defined(CONFIG_S3C2440)
    ldr r1, =0x7fff   //这里是屏蔽中断,S3C440用到了15位,所以把值设置成0x7fff
    ldr r0, =INTSUBMSK
    str r1, [r0]
    # endif    

    # if defined(CONFIG_S3C2440)
    #  define MPLLCON        0x4C000004 
    #  define UPLLCON        0x4C000008
     ldr r0, =CLKDIVN
    mov r1, #5                // FCLK:HCLK:PCLK = 1:4:8 
    str r1, [r0]

           ldr   r0, =MPLLCON     //写MPLL使pll生效,405MHz,(127<<12)+(2<<4)+(1)
           ldr   r1, =0x7F021
           str    r1, [r0]
                                
           ldr   r0, =UPLLCON    //USB时钟48MHz       (56<<12)+(2<<4)+(2)
           ldr   r1, =0x038022
           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

#endif  /* CONFIG_S3C2400 || CONFIG_S3C2410 */


/*
* we do sys-critical inits only at reboot,
* not when booting from ram!
*/
#ifndef CONFIG_SKIP_LOWLEVEL_INIT
bl cpu_init_crit
#endif

3 打开 board/samsung/ok2440v3/ok2440v3.c

 将下面一段去掉

 #define FCLK_SPEED 1

 #ifFCLK_SPEED==0              /* Fout = 203MHz, Fin = 12MHz for Audio */
 #define M_MDIV  0xC3
 #define M_PDIV  0x4
 #define M_SDIV  0x1
 #elifFCLK_SPEED==1            /* Fout = 202.8MHz */
 #define M_MDIV  0xA1
 #define M_PDIV  0x3
 #define M_SDIV  0x1
 #endif
 #define USB_CLOCK 1

 #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
 #endif

用下面一段替换:

#define M_MDIV 0x7f
#define M_PDIV 0x2
#define M_SDIV 0x1

#define U_M_MDIV 0x38
#define U_M_PDIV 0x2   //因为FL2440的晶振为12M,在芯片手册可以查到这些值,使得CPU频率为405M,USB时钟频率为48M.
#define U_M_SDIV 0x2

4 打开cpu/arm920t/s3c24x0/speed.c;修改(根据设置的分频系数FCLK:HCLK:PCLK = 1:4:8修改获取时钟频率的函数):

  • static ulong get_PLLCLK(int pllreg)
    {
        S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
        ulong r, m, p, s;

        if (pllreg == MPLL)
    r = clk_power->MPLLCON;
        else if (pllreg == UPLL)
    r = clk_power->UPLLCON;
        else
    hang();

        m = ((r & 0xFF000) >> 12) + 8;
        p = ((r & 0x003F0) >> 4) + 2;
        s = r & 0x3;

    # if defined(CONFIG_S3C2440)
    if (pllreg == MPLL)
    {
    return((CONFIG_SYS_CLK_FREQ * m * 2) / (p << s));
             }
    # endif

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

  • /* return HCLK frequency */
    ulong get_HCLK(void)
    {
        S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
    # if defined(CONFIG_S3C2440)
    return(get_FCLK()/4);
    # endif

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

这样,时钟就设置好了,保存,重新生成u-boot.bin,下载到开发板运行,就可以看到串口打印信息了

如果我们在include/configs/fl2440.h文件中添加

#define  CONFIG_SKIP_LOWLEVEL_INIT     1 //用来支持uboot在内存中直接运行

然后再编译出u-boot.bin,这时的镜像文件就可以通过J-Link下载到内存0x33f80000处运行。

在board/asmsung/fl2440/fl2440.c添加如下两个宏定义用来自动补齐命令
#define CONFIG_CMDLINE_EDITING   1  

#define CONFIG_AUTO_COMPLETE     1 /*tab COMPLETE*/ 


3 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 初中写作业犯困怎么办 孩子晚上学习困怎么办 小孩子容易兴奋激动怎么办 中考时过度兴奋怎么办 小孩兴奋不睡觉怎么办 孩子突然反常不听话怎么办? 婴儿亢奋不睡觉怎么办 宝宝听力筛查没通过怎么办 7个多月宝宝缺钙怎么办 暑假孩子天天看电视怎么办 移植后天天便秘怎么办 天天拉屎还便秘怎么办 孩子不爱吃鸡蛋怎么办 孩子看书没耐心怎么办 5岁宝宝鼻炎怎么办 手术后认知障碍怎么办 孩子很调皮好动怎么办 学生打家长该怎么办 老师打学生家长该怎么办 三岁儿子多动症怎么办 小孩一直缺锌怎么办 宝宝严重缺锌怎么办 儿童缺钙缺锌怎么办 怀孕前期喝酒了怎么办 怀孕之前喝酒了怎么办 怀孕后喝酒了怎么办 刚怀孕喝啤酒怎么办 早孕期间喝酒了怎么办 发现怀孕一个月怎么办 怀孕初期喝白酒怎么办 准备怀孕喝酒了怎么办 怀孕初期喝醉了怎么办 怀孕前喝酒了怎么办 受孕期间喝酒了怎么办 一个月发现怀孕怎么办 上课不专心老师怎么办 小孩子上课不专心怎么办 孩子好动不专心怎么办 一年级上课不听讲怎么办 小孩不专心听讲怎么办 小孩上课不集中怎么办