從0移植uboot(五) _實現串口輸出

串口做爲一種很是簡單的通訊方式,纔是嵌入式系統調試的王道,經過設置串口輸出,咱們能夠將程序運行的狀況直接經過串口線輸出到屏幕上,對於這種異常重要的功能,uboot原生就提供了支持,但爲此咱們須要作一些準備工做, 流程仍是那套:html

  1. 找運行邏輯,即插入代碼的位置。
  2. 根據運行邏輯編寫功能代碼。
  3. 找配置邏輯,即修改哪些文件使配置生效。
  4. 根據配置邏輯修改配置使功能代碼生效。
  5. 從新編譯燒寫uboot。

1. 找運行邏輯

經過(二)的分析, 咱們瞭解到初始化串口的工做在BL2的"board/samsung/myboard/lowlevel_init.S"中進行, 因此咱們的工做就是在這個文件中添加相應的代碼.3d

2. 編寫功能代碼

爲了讓串口工做, 咱們須要添加以下代碼
添加臨時棧調試

41 lowlevel_init:
 42         ldr sp,=0x02060000                      @use iRom stack in bl2
 43         push    {lr}

關閉看門狗code

67         beq     wakeup_reset
 68 
 69 #if 1 /*for close watchdog */
 70         /* PS-Hold high */
 71         ldr r0, =0x1002330c
 72         ldr r1, [r0]
 73         orr r1, r1, #0x300
 74         str r1, [r0]
 75         ldr
 76          r0, =0x11000c08
 77         ldr r1, =0x0
 78         str r1, [r0]
 79         /* Clear MASK_WDT_RESET_REQUEST */
 80         ldr r0, =0x1002040c
 81         ldr r1, =0x00
 82         str r1, [r0]
 83 #endif
 84         /*

串口初始化htm

352         str     r1, [r0, #EXYNOS4_GPIO_A1_CON_OFFSET]
353 #if 1
354         ldr r0, =0x10030000
355         ldr r1, =0x666666
356         ldr r2, =CLK_SRC_PERIL0_OFFSET
357         str r1, [r0, r2]
358         ldr r1, =0x777777
359         ldr r2, =CLK_DIV_PERIL0_OFFSET
360         str r1, [r0, r2]
361 #endif                                                                                                                          
362         ldr r0, =EXYNOS4_UART_BASE

註釋掉 trustzone 初始化blog

104         /* for UART */
105         bl uart_asm_init
106                             @bl tzpc_init

3. 找配置邏輯

這些彙編代碼也不須要特別的配置, 從新編譯便可生效get

4. 修改配置

it

5. 從新編譯燒寫

進行了這些工做,咱們就能夠接上串口線看一下是否有串口輸出, 下面是我把網卡一塊兒移植以後的結果, 固然, 這個界面是串口的功勞.
asm

相關文章
相關標籤/搜索