u-boot-2016.01移植笔记之让u-boot在2440中能正确的运行

现在我们的u-boot只能编译通过,但下载到2440中去的时候是没有任何输出的

现在打开u-boot穿件source insight工程

打开arch\arm\lib\vectors.S文件,_start就在这个文件里,u-boot.bin就是从这里开始的,它的第一句话是“b  reset“然而reset并不在这个文件里,我们就追踪一下,发现是在u-boot-2016.01\arch\arm\cpu\arm920t\start.S中,一路看下来我发现并没有对MPLL进行初始化也就是设置时钟,而是在board_init_f中board_early_init_f初始化的但是之前是按照100MHz设置的但是现在的2440只工作在12MHz,这样无法正常工作所以把board_early_init_f中

/* to reduce PLL lock time, adjust theLOCKTIME register */

       writel(0xFFFFFF,&clk_power->locktime);

 

       /*configure MPLL */

       writel((M_MDIV<< 12) + (M_PDIV << 4) + M_SDIV,

              &clk_power->mpllcon);

 

注释掉,并在start.S中关闭看门狗之后加入

#define S3C2440_MPLL_400MHz  ((0X5c<<12)|(0x01<<4)|(0x01))

       /*

        * mask all IRQs by setting all bits in theINTMR - default

        */

/* 设置时钟 */

        ldr r0, =0x4c000014

        mov r1, #0x05

        str r1, [r0]

 

        mrc   p15, 0, r1, c1, c0, 0         /* 读出控制寄存器 */ 

        orr   r1, r1, #0xc0000000          /* 设置为“asynchronous bus mode” */

       mcr    p15, 0, r1, c1, c0, 0         /* 写入控制寄存器 */

       /* MPLLCON = S3C2440_MPLL_200MHZ */

       ldrr0, =0x4c000004

       ldrr1, =S3C2440_MPLL_400MHz

       strr1, [r0]

 

/* 启动Icache */

 

       mrc p15, 0, r0, c1, c0, 0   @ read control reg

       orrr0, r0, #(1<<12)

mcr p15, 0, r0, c1, c0, 0   @ write it back

这时再编译会发现串口打印出来一堆乱码,这表示2440工作了,这时候出现乱码应该是串口方面的问题那么我们就继续追踪代码在board_init_f函数中调用了init_sequence_f数组里面有一个串口初始化serial_init,点进去,里面有个get_current函数,再进里面default_serial_console函数,再进,在这个函数所在的c文件(serial_s3c24x0.c)中有个_serial_setbrg函数中里面有个get_PCLK函数进去该函数中有这么一句”#ifdef CONFIG_S3C2440”但是这个宏没有被定义,这个代表定义它就支持了2440,我们就在include\configs\smdk2440.h中定义一下就可以了

然后再重新编译,编译出来的u-boot.bin下载到2440中我们就可以看到串口打印出信息了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值