针对嵌入式处理器的可配置LLDB底层调试器解析

描述

 

针对(且不限于)嵌入式处理器的可配置LLDB底层调试器

一般来说,软件开发人员或处理器开发人员有时需要检查和调试代码。代码调试可以在不同层次上进行,例如查看波形或解析打印输出,但首选是在交互会话中检查代码。调试器通过接受开发人员的命令、执行命令并显示结果来促进交互会话。例如,在代码的某一行停止时显示变量值。这次我们可以重点关注下 LLDB(底层调试器),它是在 LLVM 项目下开发的调试器。

调试器和定制

调试器通常支持多种目标,如 x86、Arm或RISC-V。它们拥有这些目标的嵌入式知识(也称为 ABI),例如程序员可以看到哪些寄存器、目标有哪些指令或内存映射如何?然而,RISC-V 的诞生带来了一个新的维度。RISC-V 支持并认可自定义扩展,这意味着处理器可能拥有更多开发人员感兴趣的指令和/或寄存器,但标准 RISC-V 目标机并不知晓这些指令和/或寄存器。

对于这些问题,Codasip给出了解决方案,这些解决方案不仅适用于 RISC-V 架构,还适用于使用 Codasip Studio 工具描述的几乎所有架构(即定制处理器)。

LLDB及其架构

LLDB是 LLVM 项目下的下一代调试器,可重用 LLVM 编译器中的大量代码,如表达式评估。它包含所有标准功能:

断点、观察点

程序流程控制(步入/步出/步进、继续、中断)

变量

寄存器

内存  

LLDB 结构设计精良,模块化程度高。而模块化的意义在于它为扩展做好了准备且可以利用插件架构。

LLDB插件

独立的插件可处理以下功能: 

指令反汇编

在不同平台上启动可执行文件

支持各种可执行文件和调试格式或支持的高级语言,如 C 或 C++

每种插件类型都有一个预定义的API,插件必须实现该API。除插件外,LLDB还有一个核心主体,可利用插件并保存有关支持的架构/目标及其特性的信息。然后目标将插件和ABI连接起来。例如RISC-V 目标机知道ELF 是默认的可执行文件格式,以及RISC-V 架构可能是32位或64 位,有 32 个寄存器等信息。

虽然LLDB在起点(baseline)中是灵活的,但要最大限度地利用定制计算,就必须对其进行增强。

Codasip如何实现对LLDB的增强?

对此我们使用插件增强LLDB,以添加对以下功能的支持:

作为平台的Codasip仿真器、RTL仿真器或JTAG

在Codasip仿真器或FPGA/ASIC上运行的进程

可配置的ABI,且不仅仅适用于RISC-V处理器

可配置的反汇编器

CodAL语言(见下文)

除此以外我们还增强了LLDB内核,支持双栈架构、哈佛架构和16位架构,以及其他许多大大小小的全方位改进。

但是对于定制计算来说还需要更进一步。如上所述,设计人员可能会添加新指令或新寄存器。在这种情况下LLDB插件系统是不够的。当然,Codasip Studio可以为插件生成代码,但这么操作编译时间会非常长。

当然没有任何一个项目希望看到以上的不利情况。每个人都希望在开发处理器时能在几秒到几分钟的时间内快速周转,而不是更长。

添加配置功能

因此Codasip通过增加一个新的配置级别。该配置级别允许添加(或删除)新的寄存器、指令或内存映射,而无需重新编译插件。配置本身由处理器模型自动生成,并在LLDB启动时自动传递。然后LLDB 会加载配置文件并更新加载的插件。这样,我们就能从内置插件和处理器定制中获益,而且一切都在几秒钟内完成。

下面的示例显示了 LLDB 的命令行界面。

嵌入式

使用机器接口或Python,LLDB也可以集成到集成开发环境中。

嵌入式

那么处理器将如何调试?

到目前为止,我们已经讨论了软件和 C/C++ 调试。但是处理器设计也需要调试。Codasip Studio提供的不仅仅是标准的波形调试。我们还增强了 LLDB对CodAL语言的支持。这项功能允许直接在CodAL中调试处理器,而无需在RTL中检查波形。换句话说,LLDB可以在CodAL级别完成所有标准调试工作,如访问CodAL变量、步进或设置断点等。设计人员可以轻松地从C/C++通过汇编转到CodAL代码。下图显示了这种情况。

同时LLDB还包括其他优秀功能。其中一个值得一提的功能是使用Python 编写脚本。这可以无缝、顺利地集成到CI/CD或其他自动化框架中。它支持Windows、Linux或MacOS等主流平台(Codasip Studio同时也支持所有平台)。LLDB可以使用机器接口协议或Python集成到大多数集成开发环境(如 VS Code、Eclipse 等)中。此外,Codasip还为那些从GDB转向LLDB的用户提供了一个不错的命令图。如果您对该话题感兴趣,随时欢迎加入LLDB社区和Codasip,探索更多LLDB功能和特性!

关于Codasip

Codasip作为领先的处理器解决方案供应商,支持系统级芯片(SoC)开发人员设计出差异化的产品,从而获得竞争优势。客户可使用Codasip Studio设计自动化工具, 开放的架构许可以及可定制的RISC-V处理器IP系列,通过定制计算,充分解锁RISC-V的无限潜力。Codasip总部位于欧洲,同时服务于全球市场,目前已实现在数十亿颗芯片中布局。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分