移植最新uboot之新建板—时钟—SDRAM—UART

Posted code_development

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移植最新uboot之新建板—时钟—SDRAM—UART相关的知识,希望对你有一定的参考价值。

修改u-boot支持开发板,我使用的是 2440开发板

 (1)  建一个单板

   # cd board/samsung    //进入这个单板目录

   # cp  smdk2410  smdk2440  -rf   //修改2410的单板为2440的

   修改配置文件:

  # cd   include/configs

  #cp   smdk2410.h   smdk2440.h

  执行make  smdk2440_config不成功,则 搜索 2410:  grep  "smdk2410" * -nR

  修改如下:

   #vi    boards.cfg

   添加一行2440的  :

    smdk2440  arm   arm920t   -  samsung   s3c24x0

    u-boot  配置:  make smdk2440_config

                编译:  make  

 

(2)  烧写看结果

(3)  调试

    问题:  阅读代码发现不足:uboot 里先以60MHZ的时钟计算参数来设置内存控制器,但是cpu的MPLL还未设置。

    处理:  把MPLL的设置放到start.S里,取消 boart_early_init_f  里对MPLL的设置

 

  如果u-boot上的烧写内存不够,可以使用 :

  usb上传:     usb  1   30000000(烧写的地址)

  去掉写保护: protect off all

  擦除:          earse   0   7ffff(512K)

  烧写:          cp.b   0   30000000    0      80000

 

      a).   修改start.S里的时钟&内存设置:

          start.S中 本2410的时钟去掉,换成如下时钟设置:   

    /* 2. 设置时钟 */
    ldr r0, = 0x4c000014
    //mov r1, #0x03 //分频系数
    mov r1, #0x05 //分频系数
    str r1, [r0]

    /* 如果HDIVN非0,CPU的总线模式应该从“fast bus mode”变为“asynchronous bus mode” */
    mrc p15, 0, r1, c1, c0, 0 /* 读出控制寄存器 */ 
    orr r1, r1, #0xc0000000 /* 设置为“asynchronous bus mode” */
    mcr p15, 0, r1, c1, c0, 0 /* 写入控制寄存器 */

    /* */
    ldr r0, =0x4c000004
    ldr r1, =S3C2440_MPLL_400MHZ
    str r1, [r0] // r1的值存入r0所指的位置

    /* 启动ICACHE */
    mrc p15, 0, r0, c1,c0, 0 @ read control reg
    orr r0, r0, #(1<<12)
    mcr p15, 0, r0, c1,c0, 0 @ write it back 把值写入协处理器里

 

  b).  修改内存设置:  

    .long 0x22011110; //BWSCON
    .long 0x00000700; //BANKCON0
    .long 0x00000700; //BANKCON1
    .long 0x00000700; //BANKCON2
    .long 0x00000700; //BANKCON3 
    .long 0x00000700; //BANKCON4
    .long 0x00000700; //BANKCON5
    .long 0x00018005; //BANKCON6
    .long 0x00018005; //BANKCON7
    .long 0x008C04F4; //REFRESH
    .long 0x000000B1; //BANKSIZE
    .long 0x00000030; //MRSRB6
    .long 0x00000030; //MRSRB7

  c).   修改smdk2440.h配置文件:

    把MPLL设置注销了

当你做到这里的时候,在编译返回第二步去看结果,会出现乱码。处理方法下回分解。谢谢!

 

以上是关于移植最新uboot之新建板—时钟—SDRAM—UART的主要内容,如果未能解决你的问题,请参考以下文章

tiny4412 --Uboot移植 时钟

uboot移植——修改行提示符和开发板名称

全志H3系统移植 | 移植主线最新uboot 2023.04和kernel 6.1.11到Nanopi NEO开发板

uboot移植之九鼎提供的uboot的文件夹分析

嵌入式linux开发uboot移植——三星官方uboot的移植

X-005 FriendlyARM tiny4412 uboot移植之时钟初始化