(转) 从0移植uboot(五) _实现串口输出
ref : https://www.cnblogs.com/xiaojiang1025/p/6500520.html
串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可以将程序运行的情况直接通过串口线输出到屏幕上,对于这种异常重要的功能,uboot原生就提供了支持,但为此我们需要做一些准备工作, 流程还是那套:
- 找运行逻辑,即插入代码的位置。
 - 根据运行逻辑编写功能代码。
 - 找配置逻辑,即修改哪些文件使配置生效。
 - 根据配置逻辑修改配置使功能代码生效。
 - 重新编译烧写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. 重新编译烧写
进行了这些工作,我们就可以接上串口线看一下是否有串口输出, 下面是我把网卡一起移植之后的结果, 当然, 这个界面是串口的功劳.

(转) 从0移植uboot(五) _实现串口输出的更多相关文章
- 从0移植uboot(五) _实现串口输出
		
串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可以将程序运行的情况直接通过串口线输出到屏幕上,对于这种异常重要的功能,uboot原生就提供了支持,但为此我们需要做一些 ...
 - 从0移植uboot(六) _实现网络功能
		
为uboot添加网卡功能可以让uboot通过tftp下载内核, 方便我们的开发, 对于网卡功能的移植,我们依然在在一遍又一遍的实践这个uboot改造的套路. 找运行逻辑,即插入代码的位置. 根据运行逻 ...
 - (转)从0移植uboot(六) _实现网络功能
		
ref:https://www.cnblogs.com/xiaojiang1025/p/6500532.html 为uboot添加网卡功能可以让uboot通过tftp下载内核, 方便我们的开发, 对于 ...
 - 从0移植uboot (二) _启动流程分析
		
经过了上一篇的配置,我们已经执行make就可以编译出一个uboot.bin,但这还不够,首先,此时的uboot并不符合三星芯片对bootloader的格式要求,其次,此时的uboot.bin也没有结合 ...
 - 从0移植uboot(三) _编译最小可用uboot
		
前两篇介绍了uboot-2013.01的配置原理以及大体的运行流程,本文将讨论如何对uboot源码进行配置,将一个可用的uboot烧录到SD卡中. 定制自己的core board 市面上能买到的开发板 ...
 - 从0移植uboot (一) _配置分析
		
来源:Linux社区 作者:xiaojiang1025 :http://www.linuxidc.com/Linux/2017-02/141018.htm 和绝大多数源码编译安装一样,uboot的 ...
 - (转)从0移植uboot(三) _编译最小可用uboot
		
ref: https://www.cnblogs.com/xiaojiang1025/p/6436752.html 前两篇介绍了uboot-2013.01的配置原理以及大体的运行流程,本文将讨论如何对 ...
 - (转)从0移植uboot (一) _配置分析
		
ref : https://www.cnblogs.com/xiaojiang1025/p/6106431.html 本人建议的uboot学习路线,先分析原有配置,根据现有的配置修改.增加有关的部分, ...
 - 从0移植uboot (四) _点亮调试LED
		
这一节主要讨论1个问题:点灯.点灯是实际开发中,特别是裸板开发中常见的调试手段,相当于主机开发中漫天飞舞的printf/printk.为了追踪程序的现场执行情况,很多时候我们都使用点一个灯的方法来进行 ...
 
随机推荐
- 关于JAVA线程池-ThreadPoolExecutor
			
1. 源码翻译 /* * * * * * * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Grou ...
 - [RK3399] 修改移动网络默认为4G
			
CPU:RK3399 系统:Android 7.1 现在手机卡都默认是 4G 网路,但是源码中默认的还是 3G网络,每次都要手动改到 4G. 下面在源码中就直接将默认网络改为4G. PREFERRED ...
 - 对象转型、迭代器Iterator、Set集合、装箱与拆箱、基本数据类型与字符串的转换、TreeSet集合与对象
			
包的声明与定义 需要注意的是,包的声明只能位于Java源文件的第一行. 在实际程序开发过程中,定义的类都是含有包名的: 如果没有显式地声明package语句,创建的类则处于默认包下: 在实际开发中 ...
 - windows下搭建基于nginx的rtmp服务器
			
https://blog.csdn.net/fireroll/article/details/51985688 Windows机器配置:Windows7旗舰版 64位Intel(R) Core(TM) ...
 - Swift_IOS之UIActivityIndicatorView加载齿轮控件
			
// // ViewController.swift // helloIOS // // Created by loaderman on 2019/1/25. // Copyright © 2019年 ...
 - Hibernate 自动更新表出错 More than one table found in namespace
			
报错:Caused by: org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table f ...
 - Eclipse中把项目导出为war包【我】
			
项目右键,Export 全部默认一路下一步,选择一个目标文件夹,确定即可.
 - 算法习题---4-4骰子涂色(UVa253)
			
一:题目 分别对两个骰子的六个面涂色r-红 b-蓝 g-绿,通过转动骰子,看两个骰子是不是一样的涂色方法 (一)题目详解 题目规定了正方体的六个面的序号:从1-,按照这个需要提供涂色序列 (二)案例展 ...
 - CentOS7下搭建zabbix监控(四)——Zabbix报警设置
			
CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 CentOS7下搭建zabbix监控(三)——Zabbix ...
 - php判断进程是否存在
			
//计划任务定时检测master进程是否存在,不存在则启动,以root用户运行 public function checkMaster() { $cmd = 'ps axu|grep "Uc ...