UBoot移植-时钟、串口配置

环境:

    Ubuntu 12.04 LTS

    Linux version 3.2.0-23-generic-pae

   arm-none-eabi-gcc 4.6.1

    u-boot-2012.10

    OK6410开发板


1、时钟配置:

    参考:

    https://blog.youkuaiyun.com/qq_36028037/article/details/78716993

    https://blog.youkuaiyun.com/coding__madman/article/details/51246591

    设置的目标是APLL=533MHz MPLL=266MHz PCLK=66MHz

    1)设置OTHERS寄存器:主要设置了寄存器的第6、7位。

    2)设置APLL_LOCK、MPLL_LOCK的时间

    3)设置分频系数

    4)设置时钟源

    时钟配置的代码用的uboot源码,没做任何改动。


2、串口配置

    因为之前对时钟配置的相关操作不熟悉,导致不知道如何配置串口的相关参数(UBRDIV、UDIVSLOTn)。因为在时钟配置时得到的PCLK为66MHz,则根据公式可得:

    //PCLK=66MHz,
    //DIV_VAL = (66000000 / (115200 * 16)) - 1 = 34.8
    //UBRDIV0 = 34

    //(num of 1’s in UDIVSLOTn)/16 = 0.8

   //num of 1’s in UDIVSLOTn = 12

   //UDIVSLOTn = 0xdddd


   相关代码:

    /* set GPIO to enable UART */
    ldr    r0, =ELFIN_GPIO_BASE
    ldr    r1, =0x220022
    str    r1, [r0, #GPACON_OFFSET]

    ldr    r1, =0x2222
    str       r1, [r0, #GPBCON_OFFSET]

    ldr    r0, =ELFIN_UART_CONSOLE_BASE        @0x7F005000
    mov    r1, #0x0
    str    r1, [r0, #UFCON_OFFSET]
    str    r1, [r0, #UMCON_OFFSET]

    mov    r1, #0x3                    @was 0.
    str    r1, [r0, #ULCON_OFFSET]

    //PCLK=66MHz,
    //DIV_VAL = (66000000 / (115200 * 16)) - 1 = 34.8
    //UBRDIV0 = 34
    //(num of 1’s in UDIVSLOTn)/16 = 0.8
    //num of 1’s in UDIVSLOTn = 12
    //UDIVSLOTn = 0xdddd
    ldr    r1, =0xa45            /* UARTCLK SRC = x0 => PCLK */
    str    r1, [r0, #UCON_OFFSET]
    ldr    r1, =0x22
    str    r1, [r0, #UBRDIV_OFFSET]
    ldr    r1, =0xdddd
    str    r1, [r0, #UDIVSLOT_OFFSET]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值