三星uboot-1.1.6源码分析——lowlevel_init.S (3)---串口


三星uboot-1.1.6源码分析——lowlevel_init.S (board\samsung\smdk6410)(1)的链接地址

三星uboot-1.1.6源码分析——lowlevel_init.S (2)——时钟配置的链接地址



上一篇主要说了时钟有关的部分,这一篇接着说在第一篇中没说完的余下的代码。这一篇主要说串口部分

/* for UART */
bl  uart_asm_init  
具体的源码在同一个文件中,如下所示:

/*
 * uart_asm_init: Initialize UART in asm mode, 115200bps fixed.
 * void uart_asm_init(void)
 */
uart_asm_init:
/* set GPIO to enable UART */
@ GPIO setting for UART
ldr r0, =ELFIN_GPIO_BASE
ldr r1, =0x220022
str   r1, [r0, #GPACON_OFFSET]------看下面:主要是对UART0和UART1的GPIO进行配置,因为很多GPIO都是复用的





ldr r1, =0x2222
str   r1, [r0, #GPBCON_OFFSET]   ------和上面一样,这里是UART2和UART3,看下图:





ldr r0, =ELFIN_UART_CONSOLE_BASE@0x7F005000  ------这是UART LINE CONTROL REGISTER的基地址
mov r1, #0x0
str r1, [r0, #UFCON_OFFSET]   
str r1, [r0, #UMCON_OFFSET]  ------这两个寄存器主要和FIFO有关,这里应该是禁止了


mov r1, #0x3                @was 0.    对UART0进行配置,8位,无校验,1停止位,普通模式(非红外)
str r1, [r0, #ULCON_OFFSET]


#if defined(CONFIG_CLKSRC_CLKUART) ---- 定义了
ldr r1, =0xe45/* UARTCLK SRC = 11 => EXT_UCLK1*/
#else
ldr r1, =0x245/* UARTCLK SRC = x0 => PCLK */
#endif


str r1, [r0, #UCON_OFFSET]-------主要是对下面这个寄存器进行操作,主要是对接收和发送方式的设置,还有时钟的选择





#if defined(CONFIG_UART_50)
ldr r1, =0x1A
#elif defined(CONFIG_UART_66)  定义了这个#define CONFIG_UART_66/* default clock value of CLK_UART */
ldr r1, =0x22
#else
ldr r1, =0x1A
#endif
str r1, [r0, #UBRDIV_OFFSET]---- 和波特率设置有关,有如下公式:


DIV_VAL1) = (EXT_UCLK1 / (bps x 16) ) –1

DIV_VAL = UBRDIVn + (num of 1’s in UDIVSLOTn)/16. Refer to UART Baud Rate Configure Registers.





#if defined(CONFIG_UART_50)
ldr r1, =0x3
#elif defined(CONFIG_UART_66)
ldr r1, =0x1FFF
#else
ldr r1, =0x3
#endif
str r1, [r0, #UDIVSLOT_OFFSET]------ 和上面一样,都和波特率设置有关




ldr r1, =0x4f4f4f4f
str r1, [r0, #UTXH_OFFSET]@'O'   发送字符‘O’




movpc, lr  ----------返回


ldrr0, =ELFIN_UART_BASE      发送‘K’
ldr r1, =0x4b4b4b4b
str r1, [r0, #UTXH_OFFSET]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值