U-Boot之代码调试

让调试U-Boot不再困难

本文介绍U-Boot的两种调试方法,一种是基于代码级别,另外一种是基于工具进行在线调试。

01


DEBUG宏

U-Boot自带DEBUG宏,打开该宏定义之后,会增加许多的内在打印信息供开发人员参考。这个宏定义的开关可以通过在include/common.h中增加宏定义来实现。

DEBUG宏实际上控制的是下面的语句:

没有DEBUG宏定义,U-Boot的启动信息如下:

打开DEBUG宏定义,U-Boot的启动信息如下:

可以看到增加了很多打印,包括内置的调用函数链信息等。

02


JTAG工具在线调试

JTAG工具可以选择小巧易用的JLINK,通过工具自带软件包中的JLINK Commander工具实现在线调试的目的。

一个完整的调试步骤可以参考下面的提示进行:

1、connect

2、halt CPU

3、Set PC

4、Set Breakpoint、run,查看是否停在断点处

5、单步执行

6、读写寄存器

对于U-Boot的调试,大前提是一定要熟悉U-Boot代码。关于U-Boot代码的组成结构,主要由汇编初始化程序(初始化cpu和代码重定向)、C代码驱动初始化、命令行部分、内核镜像的加载部分的应用代码。每一部分的调试方法不尽相同,文中所述主要是针对U-Boot完全没有启动起来或者仅仅启动一部分的时候。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python中 sys.argv[]的用法

调用解释器时,脚本名和附加参数传入一个名为 sys.argv 的字符串列表。通过执行 import sys可以获取这个列表,sys.argv[0] 表示脚本的名字,sys.argv[1] 代表第一个输入参数,sys.argv[2] 代表第二个输入参数,以此类推。如&#xff1…

IT夫妻语录

IT夫妻语录 亲爱的,最近我发现你情绪低落,反应速度大大降低,是不是头脑里碎片太多?   男:我也说不清楚,我觉得越来越与同事不兼容了。   女:也许这与你和他们配置有关…

每日一题(51)—— 大小端判断

请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1。 int checkCPU() {{union w{ int a;char b;} c;c.a 1;return (c.b 1);} } 分析:嵌入式系统开发者应该对Little-endian和Big-endian模…

Android初学第21天

Android初学第21天 09_LayoutsAndWidgets 代码 SignleFragmentActivity.java package com.bignerdranch.android.criminalintent;import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.…

快两年的时间,我都干了啥

‍‍‍‍大家好,我是写代码的篮球球痴这是一篇总结性的文章,主要是总结这一年多快两年的时间,我都在做了些什么。公司名字我就不说了,知道的人一眼就知道了。我们是一家智能家居的公司。提到智能家居,就一定会涉及网关&#xff0c…

每日一题(52)—— 进程

列举几种进程的同步机制: 1)原子操作 2)信号量机制 3)自旋锁 4)管程,会合,分布式系统 网络编程中设计并发服务器,使用多进程与 多线程 ,请问有什么区别?…

ioremap,你应该知道的事

因为现在使用是dts来表示板级,也就是machine,所以现在我们在内核使用内核映射使用的函数是of_iomap。c代码:struct device_node *node NULL;unsigned int irq_info[3] { 0, 0, 0 };u32 phys_base;switch (idx) {case 0:node of_find_node_…

牙痛,肿成阴阳脸

成阴阳脸:-( 明天见不了客户了,犯愁。好在台湾的朋友非常热情,晚上还安排最好的牙医林先生在诊所等我;又有另一朋友送我神奇的东南亚牙膏。

.NET 二维码生成(ThoughtWorks.QRCode)

引用ThoughtWorks.QRCode.dll (源代码里有) 1、简单二维码生成及解码代码: //生成二维码方法一private void CreateCode_Simple(string nr) { QRCodeEncoder qrCodeEncoder new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode QRCodeEnc…

如何向开源社区奉献代码

从事嵌入式工作, 日常就是与u-boot, linux这些开源代码打交道, 将自己的代码提交到主线, 将是一件快乐而又能提升逼格的事情. 有些比较新的代码会使用github进行bug追踪, pr合并, 这些直接在github提交Pull Request就好了, 比较简单, 就不在赘述. 本文重点介绍如何使用mail lis…

每日一题(53)—— 评价代码片段

评价下面代码片段: unsigned int zero 0; unsigned int compzero 0xFFFF; /*1s complement of zero */ 对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下: unsigned int compzero ~0; 这一问题真正能揭露出应试者是…

TCP三次握手及四次挥手详解

此篇文章转载自:http://justim.blog.51cto.com/740099/237548TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchron…

zxing二维码的生成与解码(C#)

ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。 首先,在其官网http://code.google.com/p/zxing/上去下载源码 编译在其cshar…

STM32项目(一) —— 展示车座椅

STM32项目(一) —— 展示车座椅 宗旨:技术的分享是有限的,分享的精神是无限的。功能:模拟人开车时,ACR和ABL的变化。 主控制器:STM32(CAN,串口,网口&#xff…

一文读懂 | CPU负载均衡实现

在《一文读懂 | 进程怎么绑定 CPU》这篇文章中介绍过,在 Linux 内核中会为每个 CPU 创建一个可运行进程队列,由于每个 CPU 都拥有一个可运行进程队列,那么就有可能会出现每个可运行进程队列之间的进程数不一样的问题,这就是所谓的…

NA-NP-IE系列实验28:HDLC 和PPP 封装

实验28:HDLC 和PPP 封装<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. 实验目的通过本实验&#xff0c;读者可以掌握如下技能&#xff1a;&#xff08;1&#xff09; 串行链路上的封装概念&#xff08;2&#xff09; HDLC 封…

使用git提交到github,每次都要输入用户名和密码的解决方法

使用git提交文件到github,每次都要输入用户名和密码&#xff0c;操作起来很麻烦&#xff0c;以下方法可解决&#xff0c;记录以下。 原因&#xff1a;在clone 项目的时候&#xff0c;使用了 https方式&#xff0c;而不是ssh方式。 默认clone 方式是&#xff1a;https 切换到&am…

回家一趟

大家好&#xff0c;我是写代码的篮球球痴。最近休年假回了一趟家里&#xff0c;决定回来也比较仓促&#xff0c;那天在公司的36楼发呆&#xff0c;觉得心里有点东西&#xff0c;然后就特别想回家看看。从晚上8&#xff1a;30出发&#xff0c;到第二天的中午&#xff0c;我从广东…

STM32项目(二) —— 车灯测试台架

STM32 —— 车灯测试台架 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 需求&#xff1a; &#xff08;1&#xff09;、点灯控制器&#xff1a;在线节拍&#xff0c;离线节拍&#xff1b; &#xff08;2&#xff09;、PWM控制盒&#xff1a;在线PWM&…

Spring MVC 使用介绍(二)—— DispatcherServlet

一、Hello World示例 1、引入依赖 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope> </dependency> <dependency&g…