u-boot分析(八)----串口初始化
u-boot分析(八)
上篇博文我們按照210的啟動流程,分析到了內存初始化,今天我們繼續按照u-boot的啟動流程對串口的初始化進行分析。
今天我們會用到的文檔:
1.??????? 2440芯片手冊:http://download.csdn.net/detail/wrjvszq/8358949
2.??????? 6410芯片手冊:http://download.csdn.net/detail/wrjvszq/8358965
3.??????? 210芯片手冊:S5PV210_UM_REV1.1(我的不知道為什么傳不上去大家去百度搜吧)
?
串口的初始化比較簡單,我們今天會通過以下幾點,對串口的初始化進行介紹:
1.????? 串口通信協議分析
2.????? 編程分析
?
l? 串口通信協議分析
相信搞過單片機的對串口并不陌生,我下面僅僅是復習一下串口通信協議。
1.?????? RS232接口
我們常見的串口是九幀的串口如下圖
注:上面為公頭,下面為母頭
其接口定義如下:
1.??????? DCD?? 載波檢測
2.??????? RXD?? 接收數據
3.??????? TXD?? 發送數據
4.??????? DTR?? 數據終端準備
5.??????? GND? 信號地
6.??????? DSR?? 數據設備準備好
7.??????? RTS?? 請求發送
8.??????? CTS?? 清除發送
9.??????? RI??? 振鈴指示
注:紅色標注的三個管腳最為重要
2.?????? 異步串口通信協議
下圖是其工作模式:
其各個位的意義如下:
l? 起始位:先發出一個邏輯”0”的信號,表示傳輸字符的開始。
l? 數據位:有效數據。
l? 奇偶校驗位:來校驗資料傳送的正確性。
l? 停止位:它是一幀數據的傳輸結束。
l? 空閑位:處于邏輯“1”狀態,表示當前線路上沒有資料傳送。
l? 波特率:表示每秒鐘傳送的二進制位數。
3.?????? 數據發送接收過程
l? 發送過程:
把數據發送到fifo中,fifo把數據發送到移位寄存器,然后在時鐘脈沖的作用下,往串口線上發送一位bit數據。
l? 接收過程:
接收移位寄存器接收到數據后,將數據放到fifo中,接受fifo事先設置好觸發門限,當fifo中數據超過這個門限時,就觸發一個中斷,然后調用驅動中的中斷服務函數,把數據寫到flip_buf中。
l? 編程分析
1.?????? 初始化流程:
按照以往的經驗去手冊找其的初始化流程,但是沒有找到,可以通過在網上查找資料,或者對照u-boot我們可以總結出通用的串口初始化流程:
1)??????? 設置引腳工作模式
2)??????? 設置數據格式
3)??????? 設置工作模式(DMA,輪詢,中斷)
4)??????? 設置波特率
2.?????? 代碼分析
通過上面的流程我們就不難理解u-boot的代碼,大家可以自己分析:
1 /* 2 * uart_asm_init: Initialize UART in asm mode, 115200bps fixed. 3 * void uart_asm_init(void) 4 */ 5 uart_asm_init: 6 7 /* set GPIO(GPA) to enable UART */ 8 @ GPIO setting for UART 9 ldr r0, =ELFIN_GPIO_BASE 10 ldr r1, =0x22222222 11 str r1, [r0, #GPA0CON_OFFSET] 12 13 ldr r1, =0x2222 14 str r1, [r0, #GPA1CON_OFFSET] 15 16 // HP V210 use. SMDK not use. 17 #if defined(CONFIG_VOGUES) 18 ldr r1, =0x100 19 str r1, [r0, #GPC0CON_OFFSET] 20 21 ldr r1, =0x4 22 str r1, [r0, #GPC0DAT_OFFSET] 23 #endif 24 25 ldr r0, =ELFIN_UART_CONSOLE_BASE @0xEC000000 26 mov r1, #0x0 27 str r1, [r0, #UFCON_OFFSET] 28 str r1, [r0, #UMCON_OFFSET] 29 30 mov r1, #0x3 31 str r1, [r0, #ULCON_OFFSET] 32 33 ldr r1, =0x3c5 34 str r1, [r0, #UCON_OFFSET] 35 36 ldr r1, =UART_UBRDIV_VAL 37 str r1, [r0, #UBRDIV_OFFSET] 38 39 ldr r1, =UART_UDIVSLOT_VAL 40 str r1, [r0, #UDIVSLOT_OFFSET] 41 42 ldr r1, =0x4f4f4f4f 43 str r1, [r0, #UTXH_OFFSET] @'O' 44 45 mov pc, lr?
?
?
轉載于:https://www.cnblogs.com/wrjvszq/p/4237498.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的u-boot分析(八)----串口初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: famous javascript li
- 下一篇: php array_merge 与 +
