0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Codasip 科达希普 来源: Codasip 科达希普 2023-10-16 14:58 次阅读

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

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

调试器和定制

调试器通常支持多种目标,如 x86、ArmRISC-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 的命令行界面。

99fe87f8-699c-11ee-939d-92fbcf53809c.png

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

9a1a3b24-699c-11ee-939d-92fbcf53809c.png

那么处理器将如何调试?

到目前为止,我们已经讨论了软件和 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

    文章

    18275

    浏览量

    222158
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8651

    浏览量

    361781
  • 嵌入式
    +关注

    关注

    4982

    文章

    18281

    浏览量

    288442
  • 调试器
    +关注

    关注

    1

    文章

    288

    浏览量

    23409

原文标题:针对嵌入式处理器的可配置LLDB底层调试器都有哪些绝活儿?

文章出处:【微信号:Codasip 科达希普,微信公众号:Codasip 科达希普】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式云计算与视频大数据——基于TI嵌入式处理器

    :大的计算资源2:功耗消耗3:智慧城市和智慧海洋4:WSN (Ad-hoc)5:嵌入式云计算平台已经开始了……很多处理器厂商已经设计了类型的嵌入式处理器,其特点在于体积小,功耗低,
    发表于 07-19 14:27

    32位嵌入式处理器与8位处理器应用开发有什么不同?

    于32位嵌入式处理器来说,因其过高的时钟频率(50MHZ至400MHZ以上)和复杂的封装形式(如BGA)导致ICE很难胜任开发工具的 工作。CPU厂商借助于边界扫描接口(JTAG口)来提供调试信息,供
    发表于 04-06 09:11

    嵌入式linux培训之嵌入式微处理器的选择

    影响应用软件的编制、调试工具的选择以及产品性能等。目前嵌入式操作系统非常多,而主要的几款产品,如VxWorks、Windows CE、Linux及Android等,都支持基于ARM微处理器的芯片。  4
    发表于 07-03 18:30

    如何利用SoPC设计通用在线调试器

    core)复用技术,抽象各种不同架构的嵌入式处理器接口,给出支持统一调试接口的IP core架构,那么我们该如何利用SoPC设计通用在线调试器呢?
    发表于 08-01 07:44

    32位ARM嵌入式处理器调试技术

    是由英国ARM公司开发授权给其他芯片生产商进行生产的系统级芯片。目前在嵌入式32位处理器市场中已经达到70%的份额。笔者在对三星公司的ARM7芯片技术调试的过程中,对这些高端嵌入式系统
    发表于 08-17 16:23

    嵌入式处理器简介

    嵌入式处理器简介嵌入式处理器嵌入式系统的核心,是控制、辅助系统运行的硬件单元。范围极其广阔,从最初的4位
    发表于 07-26 07:18

    嵌入式处理器是什么

      嵌入式处理器嵌入式系统的核心,是控制、辅助系统运行的硬件单元。范围极其广阔,从最初的4位处理器,目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位,64位
    发表于 10-27 07:24

    嵌入式处理器是什么

      嵌入式处理器嵌入式系统的核心,是控制、辅助系统运行的硬件单元。范围极其广阔,从最初的4位处理器,目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位,64位
    发表于 10-28 08:56

    嵌入式处理器组成

    组成嵌入式系统嵌入式处理器是系统的核心部件。代表ARM MIPS PowerPC MC68000外设存储SRAM RAM Flash通信RS232 SPI 以太网显示LCD调试
    发表于 11-08 09:12

    嵌入式处理器的分类

    1.简介. ARM 是一个CPU内核. ARM是"Advanced RISC Machine"的缩写. ARM处理器本身是32位设计,但也配备16位指令集嵌入式处理器嵌入式微处理器
    发表于 11-09 07:08

    如何调试嵌入式代码?

    、CMSIS-DAP 等硬件调试器嵌入式开发调试过程中扮演了怎样的角色呢?目标芯片内部是如何处理Debug and Trace 信号的?我们如何借助VS Code Cortex-De
    发表于 12-17 06:32

    调试嵌入式处理器常用的方法有哪些?

    调试嵌入式处理器常用的方法有哪些?
    发表于 12-24 06:08

    求一种基于ARM处理器嵌入式系统开发方案

    。确定要使用的嵌入式处理器之后,应根据系统需求确定外围设备的选型。系统外围设备的选择因素包括:电源供电系统、调试下载接口、外围时钟电路选择、是否需要外围储存扩展、是否需要通信接口的收
    发表于 04-18 10:30

    一个针对FPGA的完全可配置嵌入式32位RISC处理器

    一个针对FPGA的完全可配置嵌入式32位RISC处理器 使用嵌入式微处理器的FPGA设计不断增长。根据Dataquest的统计,一年大约启
    发表于 11-03 08:59 675次阅读
    一个<b class='flag-5'>针对</b>FPGA的完全<b class='flag-5'>可配置</b><b class='flag-5'>嵌入式</b>32位RISC<b class='flag-5'>处理器</b>

    基于可配置处理器嵌入式系统ESL设计需求

    基于可配置处理器嵌入式系统ESL设计需求 近年来,越来越多的嵌入式系统和SoC开始转向使用可配置处理
    发表于 01-14 09:41 746次阅读