关键词:RISC-V,编译,软件模拟,调试系统,平头哥玄铁CPU、调试工具,集成开发环境、GDB,剑池CDK,IDE,

引言

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

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

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

一 调试系统的基本介绍

图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的控制和读写寄存器、读写内存等功能。

二 玄铁CPU调试系统总览

图 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。

图 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.2.1 DebugServer

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

图 2.3 DebugServer Console版本界面

2.2.2 GDB

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

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

图 2.4 RISC-V GDB使用示例

GDB详细手册参考:https://www.gnu.org/software/gdb/documentation/

2.2.3 剑池CDK

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

图 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,开发者可以提高开发效率,优化系统设计。

图 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具有更大的循环拷贝次数。

图 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开发板进行调试。

本文转自平头哥芯片开放社区(occ),更多详情请点击【这里】 。

平头哥玄铁CPU调试系统介绍相关推荐

  1. 平头哥玄铁处理器Linux新版本,5大亮点速览

    来源 | 芯片开放社区 为了便于 CPU 评估,系统集成,快速上手玄铁处理器 Linux 操作系统,平头哥更新了玄铁处理器 linux 版本,结合 gitlab 开源 CI/CD 系统,对已发布到开源 ...

  2. 3年出货5000万颗!国内老牌芯片商用平头哥玄铁处理器研发新芯片

    7月22日,据记者了解,国内最大智能语音芯片商全志科技(以下简称"全志")已和阿里旗下半导体公司平头哥达成战略合作,全志将基于平头哥玄铁处理器研发全新的计算芯片,该芯片将应用于工业 ...

  3. RK CPU调试技巧

    RK CPU调试技巧 文章目录 RK CPU调试技巧 2.CPU温度 查看CPU工作温度 3.CPU电压 查看CPU工作电压 设置CPU工作电压 查看CPU频率电压表 4.CPU频率 查看CPU频率 ...

  4. 第一台64位RISC-V便携式计算机上市 内置平头哥玄铁C906处理器

    素材来源:CSDN,RISC-V International Twitter等,OCC经整理发布 RISC-V作为免费且灵活的开放指令集架构,虽然在PC.服务器和手机领域尚不能与X86和Arm相比,但 ...

  5. OpenHarmony 平头哥玄铁架构 轻量系统移植—润和W800移植分享

    本方案基于OpenHarmony LiteOS-M内核,使用联盛德W800芯片的润和软件海王星系列[Neptune100开发板](https://gitee.com/openharmony-sig/d ...

  6. 邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”

    3月2日,由平头哥主办的2023"玄铁RISC-V生态大会"将在上海举行.本次大会以"开放·连接"为主题,将全面展示RISC-V生态最新进展及在各行业的商业化成 ...

  7. 平头哥玄铁E906的编译/综合/啃代码/etc

    首先推荐这篇,感谢这位大佬的系列博客,我仿真和综合很多都是参考这位的.(12条消息) 一.E906移植----项目介绍.开发环境与实验平台搭建_大功率灯泡的博客-CSDN博客 这里主要是记录一些啃代码 ...

  8. 剑池CDK快速使用指南

    文章目录 背景介绍 平头哥IoT开发工具简介 工作空间及组件 组件操作及配置演示 剑池CDK基础概念及功能 工程管理及运行步骤: 模拟器 硬件调试器及配置 使用剑池CDK进行IoT方案开发 使用剑池C ...

  9. 互联网晚报 | 10月24日 星期日 | 华为鸿蒙生态建设投入已超500亿;瑞幸门店端扭亏为盈;文旅部要求暂停经营旅游专列业务...

    今日看点 ✦ 文旅部:严格控制旅游团队规模,即日起暂停经营旅游专列业务 ✦ 华为余承东:3年来华为在鸿蒙生态上已投入超500亿元 ✦ 李彦宏:百度用"工程思维"做自动驾驶,无人车累 ...

最新文章

  1. OpenCV——膨胀与腐蚀
  2. 渗透测试---数据库安全: sql注入数据库原理详解
  3. MongoDB 查询时间差问题修复
  4. 657. 机器人能否返回原点
  5. 中职计算机技术教学计划,中职计算机教学计划
  6. idea中拉取项目时 没有文件_idea编译器中maven项目获取路径的方法
  7. Verilog 初学笔记--顺序操作 和 并行操作的一点思考(参考黑金教程:Verilog HDL那些事 建模篇)...
  8. double除以int结果是int吗_游戏开发java中int可以用汉字吗?
  9. matlab-lsqcurvefit函数
  10. PHP用户连续签到赠送额外积分
  11. 亮风台AR眼镜震撼发布 HiAR 产品全面升级
  12. html去掉右侧滚动条,html中去掉textarea右侧滚动条和右下角拖拽
  13. 基于matlab的巴特沃思数字滤波器设计,基于Matlab巴特沃斯低通滤波器的设计
  14. 设置word页面为绿色
  15. 17 RFID卡的读写
  16. 分享漂亮有创意的思维导图,流程图模板
  17. vite、vue3警告:Component inside <Transition> renders non-element root node that cannot be animated.
  18. RCTF 2018线上赛 writeup
  19. HTTP keep-alive和TCP keepalive的区别,你了解吗?
  20. 保证充足的高质量睡眠

热门文章

  1. android调用 qt so文件路径,Android Java调用Qt写的so库
  2. java 私有全局变量_java中的全局变量
  3. 极线几何关系、极点、极线,三维重构,k-d树的特征匹配方法
  4. mysql 变量 数据类型_MySQL(MySQL的数据类型)
  5. 计算机培训软文,软文诊断62期: 学写软文标题,只需懂电脑开机即可
  6. 第三章 part2 单调性与极值
  7. C# LINQ标准查询操作符
  8. 用群晖筑建音乐之「家」
  9. 网站安全公司 该如何浅入浅出发展分析
  10. ISV的想法,用友全都懂