一般来说,软件开发人员或处理器开发人员有时需要检查和调试代码。代码调试可以在不同层次上进行,例如查看波形或解析打印输出,但首选是在交互会话中检查代码。调试器通过接受开发人员的命令、执行命令并显示结果来促进交互会话。例如,在代码的某一行停止时显示变量值。这次我们可以重点关注下 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,以添加对以下功能的支持:
可配置的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总部位于欧洲,同时服务于全球市场,目前已实现在数十亿颗芯片中布局。
审核编辑:汤梓红
-
处理器
+关注
关注
68文章
19291浏览量
229904 -
ARM
+关注
关注
134文章
9097浏览量
367648 -
嵌入式
+关注
关注
5083文章
19129浏览量
305400 -
调试器
+关注
关注
1文章
305浏览量
23747
原文标题:针对嵌入式处理器的可配置LLDB底层调试器都有哪些绝活儿?
文章出处:【微信号:Codasip 科达希普,微信公众号:Codasip 科达希普】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论