读书人

三星uboot-1.1.6源码分析lowlevel

发布时间: 2012-06-20 20:37:21 作者: rapoo

三星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 (三)-串口


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

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




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]-------主要是对下面这个寄存器进行操作,主要是对接收和发送方式的设置,还有时钟的选择


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



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


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


#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]------ 和上面一样,都和波特率设置有关

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


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

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


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


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

读书人网 >系统运维

热点推荐