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系列内容。

相关文章
|
14天前
|
监控 数据挖掘 BI
探索项目管理系统:解析五大功能,洞悉项目成功的关键
项目新手常忽视管理系统的价值,而高手已借助系统实现规划清晰。优秀的项目管理系统必备五大功能:项目WBS分解、图表报表、工时管理、团队协作和任务自动化。WBS能将复杂项目拆分成可管理任务,明确责任,评估时间和资源需求,便于跟踪进度。Zoho Projects作为示例,支持创建任务层级,利用甘特图和资源利用图监控进度和资源分配,工时管理则帮助控制项目时间和成本。同时,系统促进团队协作,如通过即时通讯和知识库增强团队凝聚力,而任务自动化则减少错误,提升效率。
22 1
|
1月前
|
存储 缓存 NoSQL
深入解析Redis:一种快速、高效的键值存储系统
**Redis** 是一款高性能的键值存储系统,以其内存数据、高效数据结构、持久化机制和丰富的功能在现代应用中占有一席之地。支持字符串、哈希、列表、集合和有序集合等多种数据结构,适用于缓存、计数、分布式锁和消息队列等场景。安装Redis涉及下载、编译和配置`redis.conf`。基本操作包括键值对的设置与获取,以及哈希、列表、集合和有序集合的操作。高级特性涵盖发布/订阅、事务处理和Lua脚本。优化策略包括选择合适数据结构、配置缓存和使用Pipeline。注意安全、监控和备份策略,以确保系统稳定和数据安全。
310 1
|
1月前
|
传感器 存储 数据采集
04 深度解析物联网架构与技术应用于农业大棚系统
本文将深入探讨物联网架构在农业大棚系统中的应用,从设备接入、边缘网关、数据传输到云平台和应用平台,逐层解析其技术应用与通信协议,为读者全面呈现物联网在农业领域的实际运用场景。
|
1月前
|
存储 缓存 固态存储
深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!
深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!
|
3天前
|
监控 供应链 数据可视化
深度解析BPM系统:优化业务流程,提升组织效率
本文探讨了业务流程管理系统(BPM)的核心价值和功能,以及低代码如何优化流程管理。BPM通过自动化和标准化流程,提高效率,降低技术复杂性,促进协作和监控。低代码平台加速了开发进程,增强了流程自动化,使得非专业开发者也能构建应用程序。结合低代码,企业能更轻松地适应市场变化,实现流程简化和业务增长。
8 1
|
4天前
|
存储 SQL 自然语言处理
RAG技术全解析:打造下一代智能问答系统
一、RAG简介 大型语言模型(LLM)已经取得了显著的成功,尽管它们仍然面临重大的限制,特别是在特定领域或知识密集型任务中,尤其是在处理超出其训练数据或需要当前信息的查询时,常会产生“幻觉”现象。为了克服这些挑战,检索增强生成(RAG)通过从外部知识库检索相关文档chunk并进行语义相似度计算,增强了LLM的功能。通过引用外部知识,RAG有效地减少了生成事实不正确内容的问题。RAG目前是基于LLM系统中最受欢迎的架构,有许多产品基于RAG构建,使RAG成为推动聊天机器人发展和增强LLM在现实世界应用适用性的关键技术。 二、RAG架构 2.1 RAG实现过程 RAG在问答系统中的一个典型
36 2
|
4天前
|
供应链 监控 安全
全面剖析:新页ERP系统不为人知的一面,以及系统的工作流程解析!
全面剖析:新页ERP系统不为人知的一面,以及系统的工作流程解析!
|
4天前
|
新零售 供应链 搜索推荐
多人拼团新零售分销模式系统开发(解析)
新零售模式的推广和应用,必将对传统零售业产生深远影响
|
6天前
|
Linux 网络安全 数据库
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)
|
6天前
|
Linux 开发工具 Android开发
移动应用与系统:开发与操作系统的深度解析
【5月更文挑战第6天】 在数字化时代,移动应用和操作系统是信息技术的核心组成部分。本文深入探讨了移动应用的开发过程、关键技术以及移动操作系统的架构和功能。通过对这些技术的详细分析,我们可以更好地理解移动应用和系统的工作原理,以及它们如何影响我们的生活和工作。

热门文章

最新文章

推荐镜像

更多