RISC-V生态全景解析(八):平头哥玄铁CPU调试系统介绍

简介: 编辑语:芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。

编辑语:

芯片开放社区(OCC)面向开发者推出RISC-V系列内容,通过多角度、全方位解读RISC-V,系统性梳理总结相关理论知识,构建RISC-V知识图谱,促进开发者对RISC-V生态全貌的了解。

上期内容提到,RISC-V工具链由众多基础工具组成,其中包含调试系统。在嵌入式开发中,调试工作将耗费大量时间,且随着如今的SoC均内置多颗CPU内核与集群,调试的复杂度也日益攀升。一款高效、高性能的调试系统将有效提升开发效率。

本期【技术解码】将介绍玄铁CPU的调试系统,带大家深入了解剑池系列工具链。

# 引言

对于开发人员来说,顺畅的调试系统和高效的调试方法将有效降低开发过程中的信息误差,提升开发效率。本文将介绍玄铁CPU的调试系统组成,分为如下两大部分:

  • 调试系统的基本介绍
  • 玄铁CPU调试系统简介

希望通过本文的介绍,能使用户对玄铁CPU的调试系统有一定的理解、了解玄铁CPU配套的调试工具的使用。同时方便大家更容易理解后续介绍的调试方法。

01 调试系统的基本介绍

截屏2021-11-22 下午6.22.03.png

图1 典型的MCU调试系统中

调试系统是一套为基于硬件调试模块,结合软件调试工具,为开发者提供解决软硬件bug的技术系统。软件调试部分包括调试工具、link及其固件。硬件调试部分包括调试模块(Debug Module)。

例如图1所示,在典型的MCU调试系统中:

  • 调试工具(Debug Tools)是面向开发者调试的软件工具,一般运行在开发人员的主机、服务器等场景下。常见的有调试工具有GDB、IDE等,如T-HEAD的riscv工具链中的gdb,CDK,DebugServer等工具。开发者使用这类工具进行软件程序的调试、分析工作;

  • 由于调试主机无法直接与CPU上的调试单元连接,因此需要link作为中间转换工具,使得调试工具的操作能够真实地作用在CPU上,比如平头哥的CkLink,Segger的JLink等等;

  • CPU上的调试模块(Debug Module)是支持大部分调试手段的基础,实现对CPU的控制和读写寄存器、读写内存等功能。

02 玄铁CPU调试系统总览

截屏2021-11-22 下午6.22.35.png

图 2.1 玄铁调试系统概览

如图2.1所示,玄铁CPU调试系统主要由以下几部分组成:

  • 软件运行环境,指软件运行的实际环境,包括模拟器、普通硬件环境(Bare Metal)、基于Linux内核的环境;

  • Debug Monitor,主要指配合调试工具,对被调试程序进行调试控制的工具,包括DebugServer/OpenOCD/GDBServer等。对于实际开发板来说,往往还需要在线仿真调试工具(cable/link),如CkLink, JLink等;

  • 调试/Profiling工具,是开发者经常使用的用于调试程序的工具,主要包括GDB、perf、CPF、Trace、Flash Programmer等;

  • 用户接口,是用户直接接触到的操作界面,主要是命令行工具(CMD Line)、剑池CDK、剑池CDS等。其中大部分调试/profiling工具大部分都支持命令行方式呈现。剑池CDK、剑池CDS相比命令行工具,有友好的界面,具有更好开发体验。

本章节主要介绍玄铁CPU的硬件调试框架,以及部分软件调试工具、Profiling工具的简介。

2.1 玄铁CPU的硬件调试框架

在玄铁CPU的硬件设计上,调试功能集中在调试模块(Debug Module)中基本结构如图2.2所示。基于该架构,调试模块的各个功能可以覆盖各种IOT设备领域的CPU,包括低功耗、音频处理、视频处理、计算型等领域的CPU。

截屏2021-11-22 下午6.23.03.png

图2.2 RISC-V调试框架总览

玄铁CPU中的调试模块,是基于《RISC-V Debug Spec v0.13.2》实现的,实现的功能包括:复位及调试控制、寄存器访问、内存访问、断点等功能。

关于调试模块中具体的功能及其操作接口,请查阅《RISC-V Debug Spec v0.13.2》,附链接:https://github.com/riscv/riscv-debug-spec

基本的调试功能介绍:

  • Break-Point功能:Break-Point功能俗称断点功能,即插入断点,使CPU运行到断点位置后停住。开发人员可在断点位置继续进行其他调试手段操作,如读写内存、读写寄存器等。

  • Watch-Point功能:Watch-Point功能是一种对数据访问的调试手段。可以观测某个内存地址是否发生了数据读写行为。

  • 寄存器访问:访问CPU的寄存器能力,包括通用寄存器,控制寄存器等。

  • 内存访问:访问总线上内存以及外设区的能力,可以读写内存上的数据,外设的控制/数据寄存器。

  • 调试控制:指的是单步执行指令、使CPU进入调试模式、全速运行等功能。

2.2 玄铁CPU的软件调试工具

如图2.1所示,玄铁CPU配套有诸多调试工具,本章节将分别介绍几个典型调试工具,如表2.1所示:

表2.1 玄铁调试工具

调试工具 描述
DebugServer 是一种Debug Monitor软件,用于和玄铁CPU的调试模块进行交互,完成调试操作。
GDB 开源GDB软件,支持玄铁CPU体系结构,包括玄铁8系列、9系列CPU
剑池CDK 平头哥推出的玄铁CPU集成开发环境
Perf Perf是Linux上强大的性能分析工具集合。结合PMU事件可对程序热点采样,cycle、指令数统计等。
CPF T-HEAD研发的性能分析工具,能真实反映CPU 的运行轨迹(目前仅在t-head qemu上支持)

2.1.1 DebugServer

DebugServer是平头哥自行设计实现的调试工具。其目的是为了配合GDB完成对CPU的软件调试,其中包含一套GDB Remote Serial Protocol的实现,并解析该协议,通过USB操作link完成协议的执行。同时DebugServer也实现了一套CLI,完成一些简单的调试功能,如复位、指令单步,读写寄存器、读写内存等。

截屏2021-11-22 下午6.23.33.png

图 2.3 DebugServer Console版本界面

2.2.2 GDB

GDB是一个软件调试工具,是GNU组织维护的开源软件:https://www.gnu.org/software/gdb/。GDB支持不同的后端体系架构,目前GDB的发布的源码版本中已经支持玄铁8系列、9系列CPU。能够满足玄铁CPU的日常开发需求。

通过一段简单示例看一下GDB使用。

截屏2021-11-22 下午6.24.10.png

图 2.4 RISC-V GDB使用示例

GDB详细手册参考:

https://www.gnu.org/software/gdb/documentation/

2.2.3 剑池CDK

剑池CDK是玄铁CPU的开发环境,集成了编辑、编译、调试等功能,便于开发者使用。本章节简要介绍一下剑池CDK的调试功能,如下图所示:

截屏2021-11-22 下午6.24.41.png

图 2.5 剑池CDK调试界面

截图中基本上涵盖了日常使用到的调试功能:

  • 寄存器读写
  • 反汇编查看
  • 源码对应
  • 断点管理
  • 变量查看
  • 调试控制等

详细调试手册请查看剑池CDK帮助文档.

2.2.4 CPF

CPF(C-SKY Profiling analysis utils)是一套针对玄铁CPU应用程序的性能分析工具,包含了一系列记录和分析的工具。CPF基于T-Head trace(目前仅T-Head qemu支持T-Head trace功能)进行分析,通过T-Headtrace 硬件能够非侵入式的获取CPU运行时的信息,真实反映CPU 的运行轨迹。借助于CPF,开发者可以提高开发效率,优化系统设计。

截屏2021-11-22 下午6.25.10.png

图 2.6 CPF report结果

如图2.6所示,这是一个helloworld的打印输出示例程序,通过CPF工具,可以直观的看出该程序各函数在执行工程中的耗时占比,除此之外,还能看到程序执行的cycle数、指令数,被调用的次数等。

2.2.5 PERF

Perf是一系列强大的性能分析工具集合。在Linux 2.6.31版本引入,至今tool/perf目录拥有1万多个提交,是内核开发中最活跃的几个领域之一,通过perf可以使用一到两行命令就完成像程序热点采样,接口调用分析,阻塞分析。

玄铁CPU的PMU单元支持了大量硬件事件计数器,包含了指令数,周期数,cache访问,分支预测等等,图2.7 以memcpy为例演示perf通过PMU或者程序执行的指令数、周期数。

tst-mem2比tst-mem具有更大的循环拷贝次数。

截屏2021-11-22 下午6.25.43.png

图 2.7 perf stat –e instructions, cycles tst-mem

关于平头哥玄铁CPU的调试系统介绍就到这里。其他关于玄铁CPU调试系统的文档请参考:

① RISC-V Debug Sepc:

https://github.com/riscv/riscv-debug-spec

② GDB用户手册:

https://www.gnu.org/software/gdb/documentation/

③ 玄铁CPU调试技巧:

https://occ.t-head.cn/community/download?id=3854517824420909056

④ 剑池CDK用户手册:

https://occ.t-head.cn/development/series/download?spm=a2cl5.14290816.0.0.d3ef180f9g3GPH&id=3864775351511420928&type=kind&softPlatformType=4#sticky

后续我们还将为大家介绍基于玄铁CPU的生态芯片,如何对RISC-V开发板进行调试。

03 下期预告

玄铁CPU的调试系统是剑池系列工具链的组成之一,下期内容我们将为大家介绍剑池系列工具链的另一基础工具——剑池CDK。欢迎广大开发者持续关注芯片开放社区RISC-V系列内容。

相关文章
|
12天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
46 3
|
8天前
|
存储 自然语言处理 数据可视化
3倍提升效率:医疗病理信息抽取与关系图谱展示系统解析
该项目旨在通过NLP技术将医疗病理报告中的非结构化文本转化为结构化数据,实现信息的高效抽取、存储及可视化展示。利用Python、JavaScript等技术栈,结合Echarts等工具,构建病理信息的关系图谱,支持多条件检索与图表互动,提高医生及研究人员的工作效率。预期成果包括数据结构化、关系图谱可视化、快速检索及数据统计分析等功能。项目预计2-4周完成。
|
1月前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
49 3
|
2月前
|
机器学习/深度学习 存储 人工智能
让模型评估模型:构建双代理RAG评估系统的步骤解析
在当前大语言模型(LLM)应用开发中,评估模型输出的准确性成为关键问题。本文介绍了一个基于双代理的RAG(检索增强生成)评估系统,使用生成代理和反馈代理对输出进行评估。文中详细描述了系统的构建过程,并展示了基于四种提示工程技术(ReAct、思维链、自一致性和角色提示)的不同结果。实验结果显示,ReAct和思维链技术表现相似,自一致性技术则呈现相反结果,角色提示技术最为不稳定。研究强调了多角度评估的重要性,并提供了系统实现的详细代码。
61 10
让模型评估模型:构建双代理RAG评估系统的步骤解析
|
25天前
|
机器学习/深度学习 Android开发 UED
移动应用与系统:从开发到优化的全面解析
【10月更文挑战第25天】 在数字化时代,移动应用已成为我们生活的重要组成部分。本文将深入探讨移动应用的开发过程、移动操作系统的角色,以及如何对移动应用进行优化以提高用户体验和性能。我们将通过分析具体案例,揭示移动应用成功的关键因素,并提供实用的开发和优化策略。
|
1月前
|
域名解析 缓存 网络协议
【网络】DNS,域名解析系统
【网络】DNS,域名解析系统
98 1
|
2月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
1月前
|
域名解析 运维 网络协议
推荐一款专业级的动态域名解析系统 - bind webadmin
`bind webadmin`是一款基于Bind9打造的高效DNS管理系统,简化了DNS配置与管理流程,适用于动态IP环境下的远程访问需求。此系统不仅便于维护,还支持API接口,方便自动化操作与第三方应用集成,特别适合远程办公、智能家居及各类物联网应用场景。其自托管特性保障了数据的安全与可控性,同时提供了详尽的中文安装教程,易于部署。项目地址:[bindwebadmin](https://github.com/guofusheng007/bindwebadmin.git)。建议使用阿里云主机以获得最佳性能。
|
1月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
2月前
|
域名解析 缓存 网络协议
域名系统DNS_基础知识
域名系统(DNS)使我们能够通过易记的域名访问互联网资源,而非直接使用IP地址。DNS采用层次树状结构,由多个分量组成,如顶级域名(如.com或.cn)位于最右侧。域名长度限制为255个字符,各级域名由相应管理机构监管,顶级域名由ICANN管理。DNS分为国家顶级域名、通用顶级域名和反向域等。域名解析涉及根域名、顶级域名及权限域名服务器,通过递归和迭代查询完成。为提高效率,DNS使用分布式服务器和高速缓存技术。
144 8

推荐镜像

更多
下一篇
无影云桌面