串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可以将程序运行的情况直接通过串口线输出到屏幕上,对于这种异常重要的功能,uboot原生就提供了支持,但为此我们需要做一些准备工作, 流程还是那套:

  1. 找运行逻辑,即插入代码的位置。
  2. 根据运行逻辑编写功能代码。
  3. 找配置逻辑,即修改哪些文件使配置生效。
  4. 根据配置逻辑修改配置使功能代码生效。
  5. 重新编译烧写uboot。

1. 找运行逻辑

通过(二)的分析, 我们了解到初始化串口的工作在BL2的"board/samsung/myboard/lowlevel_init.S"中进行, 所以我们的工作就是在这个文件中添加相应的代码.

2. 编写功能代码

为了让串口工作, 我们需要添加如下代码

添加临时栈

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

关闭看门狗

 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 /*

串口初始化

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 初始化

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

3. 找配置逻辑

这些汇编代码也不需要特别的配置, 重新编译即可生效

4. 修改配置

5. 重新编译烧写

进行了这些工作,我们就可以接上串口线看一下是否有串口输出, 下面是我把网卡一起移植之后的结果, 当然, 这个界面是串口的功劳.

最新文章

  1. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
  2. NOI2001|POJ1182食物链[种类并查集 向量]
  3. codevs 1536 海战
  4. 使用sqoop 在关系型数据库和Hadoop之间实现数据的抽取
  5. Effective Java 20 Prefer class hierarchies to tagged classes
  6. Android develop tricks——整理自国外的一些Blog
  7. 二十分钟弄懂C++11 的 rvalue reference (C++ 性能剖析 (5))
  8. 无法读取配置节 system.serviceModel 因为它缺少节声明的解决方法
  9. QT 小票打印
  10. javaScript滚动新闻之上下左右平滑滚动
  11. Html5 监听拦截Android返回键方法详解
  12. 为什么我离开Mac for Windows:苹果已经放弃了[译]
  13. vue 拖拽移动(类似于iPhone虚拟home )
  14. [问题]Android listView item edittext 不能调用软键盘输入法
  15. JavaScript自定义事件和触发(createEvent, dispatchEvent)
  16. php中生成透明背景png缩略图程序
  17. HTTP知识点【总结篇】
  18. FE 命令随笔
  19. 洛谷P1463 反素数
  20. 使用GraphHttpClient调用Microsoft Graph接口 - GET

热门文章

  1. Linux内容
  2. http理解
  3. linux命令之free篇
  4. 顺序栈的基本操作中Push压入后的- S.top = S.base + S.stacksize; 作用
  5. SSD固态硬盘测试工具收集(持续更新)
  6. Java知识回顾 (10) 线程
  7. js -- 绑定的click addEventListener 事件只触发一次
  8. MySQL表最大能达到多少?
  9. Web Workers 简介
  10. mysql字符串用法