从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

相关文章
相关标签/搜索