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

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

3天内不再提示

AS32系列MCU调试教程 性能优化:Eclipse环境下AS32芯片调试效率提升

安芯 来源:jf_29981791 作者:jf_29981791 2025-06-16 18:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

摘要:嵌入式系统开发领域,MCU微控制器)的应用日益广泛,其性能优化对于提高整个系统效率至关重要。厦门国科安芯科技有限公司推出的AS32系列芯片,凭借卓越的性能和丰富的功能,获得了市场的高度认可。本文将深入探讨在Eclipse环境下,通过优化调试流程来提升AS32芯片的调试效率,旨在为技术开发人员提供专业、实用的指导,助力企业在激烈的市场竞争中保持优势。

一、引言

AS32系列芯片支持多种工具链,其中IAR工具链以其出色的编译优化能力而著称,但高昂的价格让许多企业望而却步。相比之下,基于Eclipse+GCC+JLINK的免费调试方案为开发人员提供了一种性价比极高的选择。Eclipse作为一款广受欢迎的集成开发环境,凭借其强大的功能和良好的可扩展性,在嵌入式开发领域得到了广泛应用。GCC工具链以其开放源码、跨平台等优势,为开发者提供了灵活的编译解决方案。而JLINK调试器则是 SEGGER 公司推出的一款高性能调试工具,广泛应用于嵌入式系统开发。三者的结合,为企业提供了一种高效、免费的调试方案,具有重要的实际应用价值。本文将对这一调试方案进行详细阐述,从环境搭建、工程配置到调试过程优化,全方位提升AS32芯片的调试效率。

二、开发环境搭建

(一)平台资源准备

硬件设备

PC :鉴于操作系统的稳定性和兼容性,推荐使用 Windows 10 操作系统。

AS32 开发板 :作为调试的目标硬件平台,需确保其与 JLINK 调试器兼容。

JLINK 调试器 :选择适合 AS32 芯片的 JLINK 调试器型号,确保其驱动程序与操作系统匹配。

软件资源

Eclipse IDE :选用 Eclipse IDE 2025 - 03(4.35.0)版本,该版本在功能和兼容性方面表现出色,能够为开发人员提供良好的开发体验。

ansilic_Toolchain :从国科安芯官网下载 ansilic_Toolchain,该工具链包含 GCC 编译工具链、OpenOCD 以及相关配置文件,是实现免费调试的关键组件。

AS32 驱动库 :同样在国科安芯官网下载,驱动库为开发板上的硬件设备提供了必要的驱动程序,确保芯片能够正常工作。

Zadig - 2.7.exe :用于配置 JLINK 驱动,将其转成 WinUSB 格式,以实现调试器与 PC 的稳定通信

(二)JLINK 驱动配置

在开始工程创建之前,对 JLINK 驱动进行正确配置至关重要。将 JLINK 调试器接入电脑的 USB 端口后,打开 Zadig - 2.7.exe 软件。在软件界面中,选择 “Options” 选项,勾选 “List All Devices” 以列出所有设备。此时,界面中会出现 JLINK 设备。接下来,将 JLINK 转成 WinUSB 格式,完成驱动配置。这一过程确保了调试器与 PC 之间的数据传输稳定可靠,为后续的调试工作奠定了坚实的基础。

三、工具链介绍

(一)GCC 编译工具链

GCC(GNU Compiler Collection)是一款广泛应用于嵌入式开发的编译工具链。在 AS32 芯片的调试过程中,GCC 编译器负责将开发人员编写的源代码编译成芯片能够执行的机器代码。其优势在于开放源码,开发人员可以根据项目需求对其进行定制化修改;具备良好的跨平台特性,能够在多种操作系统上运行;同时,GCC 编译器提供了丰富的优化选项,能够有效提高代码的执行效率。例如,通过调整优化等级(-O1、-O2、-O3 等),开发人员可以在代码大小和执行速度之间取得平衡,以满足不同应用场景的需求。

(二)OpenOCD

OpenOCD(Open - Source On - Chip Debugger)是一款开源的芯片调试工具,它在 Eclipse 与 JLINK 调试器之间起到了桥梁的作用。OpenOCD 负责与 JLINK 调试器进行通信,实现对芯片的控制和数据读取。在调试过程中,OpenOCD 通过 JTAG 或 SWD 接口与芯片相连,将调试指令发送到芯片,并将芯片的响应反馈给 Eclipse。其强大的调试功能使得开发人员能够实时监测芯片的运行状态,包括寄存器值、内存内容等,为故障排查和性能优化提供了有力支持。

(三)工具链目录结构

为了方便管理和使用,建议将 ansilic_Toolchain 文件夹放置在 Eclipse 的安装目录下。这种目录结构安排使得在更换工程时,工具链的配置更加便捷。开发人员可以根据项目需求,灵活地在不同工程之间切换,提高开发效率。

四、工程配置

(一)创建工程

打开 Eclipse 后,点击 “File->New”,选择新建 C/C++ Project。在弹出的窗口中,选择 “C Managed Build”,然后点击 “Next”。在下一步界面中,输入项目名称,配置工程类型。将工程放置在指定目录下,项目类型选择 “Empty Project”,编译链选择 “RISC - V Cross GCC”。继续点击 “Next”,在下一步工程界面无需配置,直接点击 “Next” 即可。在弹出的工程窗口中选择工具链名称,路径选择 ansilic_Toolchain 所在路径,点击 “Finish”,完成新工程的创建。这一过程为后续的代码编写和调试提供了基本的工程框架。

(二)目录管理

手动管理目录

右键工程名称,选择 “New->Folder”,创建子目录 “Peripherals”,用于存放驱动文件。建议选择创建虚拟文件夹,这样不会将全部文件复制到目录下,便于后续管理。以同样的方式创建 “Core”(保存中断入口和链接文件)、“Startup”(存放启动文件)、“System”(存放开发人员自己编写的延时函数和打印函数)、“User”(存放用户文件)等目录。

接下来需要向工程目录中导入文件。右键目录名,选择 “Import”。在弹出的窗口中选择 “General->File System”,点击 “Next”。在新窗口中,选择之前下载的 Drivers 目录下对应的文件夹,勾选需要添加的文件,无需勾选 h 头文件,注意勾选 Advanced 下的全部选项。依次添加对应目录文件夹即可。对于 User 目录,直接右键 “New->File” 创建即可。

自动创建

另一种更加简便的方法是将国科安芯提供的 Driver 目录下所有子目录复制到工程目录下。然后返回 Eclipse,右键工程名,选择 “Refresh”,即可完成快捷导入。这种方法适用于希望快速搭建工程目录结构的开发人员,能够节省大量的时间和精力。

(三)项目配置

右键工程名,选择 “Properties” 工程属性。在 “C/C++ Build->Settings->Tool Settings->Target Processor” 下,根据目标芯片的内核,选择 Target。在本例中,选择 RV32I,其他参数按照推荐配置进行设置。点击 “Optimization”,调整优化等级,开发人员可根据项目需求自行决定是否进行优化调整。

在 “C/C++ Build->Settings->Tool Settings->GNU RISC - V Cross Assembler” 选项中,配置 Cross 汇编编译选项。在 “includes->Include paths” 选项中添加工程所需的 Assembler 头文件路径,如 Core 和 Startup 目录。同样,在 “C/C++ Build->Settings->Tool Settings->GNU RISC - V Cross C Compiler” 选项中,添加 C 语言头文件路径,例如 Drivers 驱动下的相应目录。

在 “C/C++ Build->Settings->Tool Settings->GNU RISC - V Cross C Linker” 配置 Cross C 链接选项。在 “General->Script files” 选项中添加 link.lds 文件,并勾选 “Do not use standard start files” 以及 “Remove unused sections”。在 “Miscellaneous” 选项下勾选 “Use newlib - nano” 及 “Do not use syscalls”。

此外,在 “C/C++ Build->Settings->Build Steps” 中,可添加命令生成 bin/hex 文件。例如,本例程命令是:riscv - none - embed - objcopy - O binary “led.elf” “led.bin”;riscv - none - embed - objdump - D “led.elf” > “led.dump”。更换工程时只需修改目标名称即可。完成以上配置后,点击 “Apply and Close”,即可开始编写主函数,如实现一个简单的流水灯功能,并在 User 目录下新增 led.c 和 led.h 文件用于驱动 led 灯。

五、工程调试

(一)JLINK + OpenOCD 配置

在 Eclipse 菜单栏中,点击 “Run->Debug Configurations”,进入 Debug 配置界面。使用 J - Link GDBServerCL 作为 GDB Server,使用 GCC 工具链中的 GDB 工具作为 GDB Client。双击 “GDB SEGGER J - Link Debugging”,新建一套 J - Link 的配置选项。

Main 选项卡配置

在 “Main” 选项卡中,需要指定调试器的路径和调试的可执行文件。调试器路径应指向 J - Link GDBServerCL 的安装位置,而调试的可执行文件则是编译生成的 elf 文件。正确的配置能够确保调试器与目标芯片建立连接,并加载相应的调试信息。

Debugger 选项卡配置

在 “Debugger” 选项卡中,需要设置 GDB 的路径和调试器的参数。GDB 路径指向 GCC 工具链中的 GDB 工具,调试器参数则根据 JLINK 调试器的型号和芯片的配置进行调整。这些参数包括调试器的端口号、连接速度等,合理的配置能够提高调试效率。

Startup 选项卡配置

“Startup” 选项卡主要配置调试器启动时执行的命令序列。这些命令包括设置芯片的工作模式、加载调试符号、初始化寄存器等。通过合理的命令序列配置,开发人员可以快速进入调试状态,减少调试准备时间。

接下来配置 OpenOCD。双击 “GDB OpenOCD Debugging”,新建配置项。

Main 选项卡配置

在 “Main” 选项卡中,指定 OpenOCD 的配置文件路径和调试目标。配置文件包含了与 JLINK 调试器和 AS32 芯片相关的配置信息,如调试接口、芯片型号等。正确选择配置文件能够确保 OpenOCD 与硬件设备的兼容性。

Debugger 选项卡配置

“Debugger” 选项卡中,设置 GDB 与 OpenOCD 之间的通信参数。这些参数包括 GDB 的端口号、通信协议等。确保 GDB 与 OpenOCD 之间的通信畅通,是实现高效调试的关键。

Startup 选项卡配置

在 “Startup” 选项卡中,配置 OpenOCD 启动时的初始化命令。这些命令用于设置芯片的运行环境,如时钟频率、内存映射等。合理的初始化配置能够提高芯片的运行效率,为调试工作提供良好的硬件基础。

(二)调试过程

完成上述配置后,点击 “Debug” 按钮即可进入调试模式。第一次配置完成后,之后可以直接点击工具栏上的小虫子图标进行调试,等待烧录完成。在调试过程中,开发人员可以利用 Eclipse 提供的调试工具栏和调试窗口,对程序进行详细的分析和优化。

调试工具栏

断点设置 :双击可在对应代码行加或者删除断点。断点是调试过程中不可或缺的工具,它允许开发人员在程序执行到特定位置时暂停,以便检查程序状态。

全速运行 :使程序以全速运行,用于观察程序的整体运行情况。

暂停运行 :暂停程序的执行,便于开发人员在某一时刻对程序进行详细检查。

退出调试 :结束调试会话,退出调试模式。

复位调试 :对芯片进行复位操作,重新开始调试过程。

单步进入 :逐条执行程序指令,深入到函数内部,用于详细检查函数的执行过程。

单步完成 :执行完当前函数后暂停,用于观察函数的返回值和对程序状态的影响。

进入调试模式 :快速进入调试状态,方便开发人员随时开始调试工作。

调试窗口

反汇编窗口 :通过点击相应图标打开工程的反汇编窗口,开发人员可以查看程序的汇编代码,分析程序的执行流程和指令执行情况。这对于理解程序在硬件层面的运行机制非常有帮助,尤其在排查低级错误和优化代码性能方面具有重要作用。

观察变量窗口 :选中需要监测的变量,右键选择 “Add Watch Expressions”,可将变量放入观察窗口,动态观察变量的运行状态。通过观察变量的变化,开发人员可以及时发现程序中的潜在问题,如变量值异常、数据溢出等。

Memory 窗口 :可以查看总线地址上的数据,帮助开发人员观察寄存器或者内存操作是否正确。这对于调试硬件相关的程序问题非常有效,如内存映射错误、寄存器配置不当等。

Register 窗口 :是 RISC - V 通用寄存器的窗口,配合反汇编窗口,熟悉这些寄存器之后可以有效帮助分析代码运行状态。虽然使用难度较大,但对于深入理解程序执行过程和硬件交互具有重要意义。

六、性能优化策略

(一)代码优化

算法优化

选择高效的算法是提高程序性能的关键。在嵌入式开发中,算法的效率直接影响到芯片的资源利用率和响应速度。例如,在数据处理任务中,采用快速排序算法代替冒泡排序算法,可以显著减少排序时间,提高程序的整体性能。

减少不必要的计算

仔细审查代码,消除重复计算和冗余操作。例如,将循环中的不变表达式移出循环,避免重复计算;合理利用变量存储中间结果,减少函数调用次数等。这些细节优化能够有效降低芯片的计算负担,提高程序的执行效率。

代码结构优化

采用模块化设计原则,将代码划分为多个功能模块,每个模块具有单一的职责。这种设计方式不仅提高了代码的可读性和可维护性,还有助于编译器进行优化。同时,合理使用内联函数和宏定义,减少函数调用开销,提高代码的执行速度。

(二)编译优化

优化选项选择

GCC 编译器提供了多种优化选项,如 -O1、-O2、-O3 等。开发人员应根据项目需求合理选择优化等级。例如,-O1 优化级别在代码大小和执行速度之间取得较好平衡;-O2 优化级别则更注重执行速度,但可能会增加代码大小;-O3 优化级别提供了更高的优化程度,但可能导致代码可读性下降和调试困难。在实际开发中,开发人员可以通过对比不同优化等级下生成的代码性能和大小,选择最适合的优化选项。

编译器指令使用

合理使用编译器指令(如#pragma)可以指导编译器进行特定的优化操作。例如,使用#pragma pack 可以改变结构体的对齐方式,减少内存占用;使用#pragma inline 可以强制将函数内联,提高函数调用效率。但需要注意的是,过度使用编译器指令可能会降低代码的可移植性,因此应谨慎使用。

(三)调试优化

智能断点设置

精准设置断点,避免在不必要的位置设置断点导致调试过程频繁中断。例如,利用条件断点(仅当满足特定条件时才暂停程序执行)可以快速定位到程序的关键执行点,减少调试时间。

利用观察窗口高效监测变量

合理选择需要监测的变量,避免过多变量放入观察窗口导致调试信息混乱。开发人员应重点关注与程序关键逻辑相关的变量,通过观察其变化及时发现潜在问题。

优化调试流程

在调试过程中,先进行高层次的功能测试,排查明显的逻辑错误;然后再逐步深入到代码细节,进行底层硬件相关的调试。这种由粗到细的调试流程能够有效提高调试效率,避免盲目调试。

七、结论与展望

在 Eclipse 环境下,通过优化调试流程,能够显著提升 AS32 芯片的调试效率。从开发环境搭建、工程配置到调试过程优化,每一个环节都蕴含着提高调试效率的潜力。通过合理选择和配置工具链、精心组织工程目录结构、深入挖掘调试工具的功能以及实施有效的性能优化策略,开发人员可以充分发挥 AS32 芯片的性能优势,同时降低开发成本。

然而,随着嵌入式技术的不断发展,对 MCU 调试技术的要求也在不断提高。未来,随着人工智能、大数据等前沿技术在嵌入式领域的应用,MCU 的复杂性和性能要求将进一步提升。预计调试工具将更加智能化和自动化,能够自动识别和分析代码中的潜在问题,为开发人员提供更精准的调试建议。同时,调试工具与硬件设备的融合将更加紧密,实现硬件级的性能优化和故障诊断。对于 AS32 芯片的调试技术而言,将进一步探索与新兴技术的结合,如利用机器学习算法对调试数据进行分析,以实现更高效的调试策略。这将为开发人员提供更强大的技术支持,推动嵌入式系统开发向更高层次迈进。

审核编辑 黄宇

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

    关注

    462

    文章

    53581

    浏览量

    459538
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18640

    浏览量

    387829
  • Eclipse
    +关注

    关注

    1

    文章

    119

    浏览量

    22422
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32 MCU在高频率运行的系统稳定性的提升方案

    问题,并提出一系列应对措施,包括硬件设计改进和软件优化策略,以确保系统在高频工作环境中的可靠性和持续稳定运行。 具体内容包括: 高频运行对MCU的影响分析: 探讨CW32
    发表于 12-04 08:04

    AS32系列MCU芯片中CRC计算模块的应用介绍

    、执行器动作异常甚至整个控制系统宕机。循环冗余校验(CRC)作为一种高效的错误检测技术,如同数据传输与存储过程中的"安全校验屏障",持续保障MCU与外部设备交互数据的准确性。本文将系统阐述国科安芯推出的AS32系列
    的头像 发表于 11-21 15:20 1121次阅读
    <b class='flag-5'>AS32</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b><b class='flag-5'>芯片</b>中CRC计算模块的应用介绍

    FreeRTOS 在 AS32系列RISC-V 架构MCU电机驱动中的应用实践与优化

    一、AS32系列 RISC-V MCU与 FreeRTOS 融合的电机驱动架构解析 1.1 硬件层: AS32系列 架构的优势 在电机驱动系
    的头像 发表于 11-13 23:33 548次阅读

    windows无法调试怎么解决?

    求助在eclipse能够下载,但是无法调试。 在vscode platformIO平台下无法下载,显示超时
    发表于 11-07 06:36

    如何实现Infineon TRAVEO T2G系列MCU的安全调试

    。Infineon TRAVEO T2G系列MCU在满足高性能需求的同时,集成了完整的硬件安全特性,包括生命周期管理、安全启动(Secure Boot)、硬件加密引擎以及调试端口访问控
    的头像 发表于 09-05 09:37 2779次阅读
    如何实现Infineon TRAVEO T2G<b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的安全<b class='flag-5'>调试</b>

    AS32X601系列MCU硬件最小系统设计与调试方案探析

    在嵌入式系统领域,MCU(微控制单元)作为核心部件,其硬件最小系统设计的合理性与调试的有效性直接决定了整个系统的稳定性与可靠性。凭借其卓越的性能和丰富的功能,广泛应用于各类电子设备中。本文以国科安芯
    的头像 发表于 07-22 13:46 419次阅读

    基于 ASP3605 电源芯片性能优化与 ITH 调试策略

    的 ITH 管脚调试,深入探讨其对电源性能的多方面影响,并通过严谨的实验验证和理论分析,提出一套系统性的优化策略,旨在确保电源转换器在不同工作条件均能达到稳定、高效的
    的头像 发表于 07-14 10:13 458次阅读
    基于 ASP3605 电源<b class='flag-5'>芯片</b>的<b class='flag-5'>性能</b><b class='flag-5'>优化</b>与 ITH <b class='flag-5'>调试</b>策略

    调试工具:Eclipse调试工具栏与窗口的深入分析

    科技有限公司自研AS32 系列 MCU 芯片调试应用为研究背景,通过详细阐述 Eclipse
    的头像 发表于 07-07 11:32 643次阅读
    <b class='flag-5'>调试</b>工具:<b class='flag-5'>Eclipse</b><b class='flag-5'>调试</b>工具栏与窗口的深入分析

    AS32系列MCU调试教程 SPI调试的常见问题解析

    协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU
    的头像 发表于 06-27 18:10 563次阅读
    <b class='flag-5'>AS32</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b><b class='flag-5'>调试教</b>程 SPI<b class='flag-5'>调试</b>的常见问题解析

    AS32系列MCU芯片I2C模块性能解析与调试

    国科安芯推出的AS32X601内置的I2C模块提供了符合工业标准的两线串行制接口,可用于MCU和外部IIC设备的通讯。IIC总线使用两条串行线:串行数据线SDA和串行时钟线SCL。 IIC接口模块
    的头像 发表于 06-20 16:31 784次阅读
    <b class='flag-5'>AS32</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b><b class='flag-5'>芯片</b>I2C模块<b class='flag-5'>性能</b>解析与<b class='flag-5'>调试</b>

    硬件调试:JLink 驱动配置与调试技巧

    摘要: 本文深入探讨了 JLink 调试器在嵌入式系统硬件调试中的应用,详细阐述了 JLink 驱动配置的方法以及硬件调试技巧。本文以国科安芯的AS32
    的头像 发表于 06-12 23:20 1295次阅读
    硬件<b class='flag-5'>调试</b>:JLink 驱动配置与<b class='flag-5'>调试</b>技巧

    泰克MSO46B示波器触摸屏如何提升高速信号调试效率

    、精准的调试需求。泰克MSO46B示波器凭借创新的触摸屏界面,结合高性能硬件和智能分析功能,为高速信号调试带来了革命性的效率提升。本文将深入
    的头像 发表于 06-12 16:49 546次阅读
    泰克MSO46B示波器触摸屏如何<b class='flag-5'>提升</b>高速信号<b class='flag-5'>调试</b><b class='flag-5'>效率</b>

    RISC-V JTAG:开启MCU 芯片调试之旅

    在当今电子科技飞速发展的时代, MCU 芯片成为众多企业追求技术突破与创新的关键领域。而芯片调试过程则是确保其性能与可靠性的重要环节。本文
    的头像 发表于 05-07 17:57 2365次阅读
    RISC-V JTAG:开启<b class='flag-5'>MCU</b> <b class='flag-5'>芯片</b><b class='flag-5'>调试</b>之旅

    TASKING调试器全面支持芯驰科技车规MCU芯片E3650

    近日,TASKING与芯驰科技共同宣布,TASKING BlueBox调试器工具已全面支持芯驰新一代旗舰智控MCU——E3650,双方联合助力用户提升产品开发效率,提供更优质的产品和服
    的头像 发表于 04-21 14:10 1308次阅读

    单片机Debug工具性能对比 单片机调试常用命令

    单片机(Microcontroller Unit, MCU调试是嵌入式开发中的一个重要环节,它帮助开发者发现和修复代码中的错误,优化程序性能。不同的单片机和开发
    的头像 发表于 12-19 09:56 2188次阅读