【AS32系列MCU调试教程】深度解析:使用 Eclipse 调试AS32系列MCU芯片的工程搭建
引言
随着嵌入式技术的飞速发展,芯片调试作为硬件开发流程中的关键环节,其重要性不言而喻。国科安芯的AS32系列MCU芯片凭借其卓越的性能和丰富的功能,逐渐在工业控制、物联网等领域崭露头角。然而,对于许多开发人员而言,如何高效地调试AS32系列MCU芯片仍是一个亟待解决的问题。本文将深入探讨基于免费 Eclipse+GCC+JLINK 的AS32系列MCU芯片调试方法,旨在为技术开发人员提供一份详尽、实用的实践指南,助力其在AS32系列MCU芯片应用开发中实现高效调试与功能优化。
一、开发环境搭建
(一)平台资源准备
硬件设备
PC :本操作基于 Windows 10 系统,确保电脑具备充足的存储空间和稳定的电源供应,以满足 Eclipse开发工具及调试过程中的资源需求。
AS32 开发板 :作为调试的核心载体,需提前检查开发板的完整性,确认其芯片型号、引脚定义等参数与所开发项目要求相符。同时,确保开发板与电脑的连接线路无损坏,通信接口(如 JTAG/SWD 接口)能够正常工作,以保障调试数据的稳定传输。
Jlink 调试器 :选择与 AS32 芯片兼容的 Jlink 调试器型号,如 J-Link V9 或 J-Link EDU 等。在使用前,需仔细阅读调试器的用户手册,了解其工作原理、连接方式以及支持的调试协议等信息,确保调试器能够准确地与开发板上的芯片进行通信。
软件工具
Eclipse IDE :选用 Eclipse IDE 2025 - 03(4.35.0)版本。Eclipse 作为一款功能强大的集成开发环境,为嵌入式开发提供了丰富的插件和工具支持。其具备良好的跨平台特性,界面友好且易于操作,能够方便地进行代码编辑、编译、调试等一系列开发活动。在安装 Eclipse 时,需注意选择适合 Windows 10 系统的版本,并按照安装向导的提示完成安装过程。安装完成后,建议对 Eclipse 进行个性化配置,如设置代码编辑器的字体、颜色、缩进等格式,以提高代码编写效率和可读性。
ansilic_Toolchain :从国科安芯官网下载 ansilic_Toolchain,该工具链包含 GCC 工具链、OpenOCD 以及相关配置文件。GCC(GNU Compiler Collection)作为一款广泛使用的开源编译器,为 RISC - V 架构的 AS32 芯片提供了高效的代码编译和优化功能;OpenOCD(Open - On - Chip Debugger)则负责实现调试器与芯片之间的通信,是调试过程中的关键组件。下载完成后,建议将 ansilic_Toolchain 文件夹放置于 Eclipse 的安装目录下,以便在后续工程配置中能够方便地进行路径引用和工具链切换。
AS32 驱动库 :同样从国科安芯官网获取 AS32 驱动库。驱动库为开发人员提供了针对 AS32 芯片各个外设(如 GPIO、UART、SPI、I2C 等)的底层驱动函数和操作接口,使得开发人员能够更加便捷地进行芯片功能的开发和调试。在使用驱动库时,需要仔细研读其提供的文档和示例代码,了解每个驱动函数的功能、参数设置以及调用流程,以便在实际项目中正确地调用和配置。
Zadig - 2.7.exe :用于配置 Jlink 驱动。在 Windows 系统中,Zadig 能够方便地将 Jlink 的驱动程序转换为 WinUSB 格式,从而确保 Jlink 调试器与电脑之间能够建立稳定可靠的通信连接。在使用 Zadig 软件时,需先将 Jlink 调试器连接至电脑的 USB 端口,然后按照软件的操作提示,选择设备相应的并进行驱动转换。在转换过程中,软件可能会要求用户安装一些必要的系统更新或驱动组件,需确保这些安装操作顺利完成,以避免驱动配置失败导致调试无法正常进行。
(二)Jlink 驱动配置
在创建工程之前,Jlink 驱动的正确配置是确保调试顺利进行的前提。具体操作步骤如下:
将 Jlink 调试器接入电脑的 USB 端口,确保电脑能够识别到该设备。
打开 Zadig - 2.7.exe 软件,点击 “Options” 按钮,在弹出的下拉菜单中勾选 “List All Devices” 选项,使软件能够列出系统中所有连接的设备。
在 Zadig 的设备列表中,找到 Jlink 设备。此时,软件会自动显示与 Jlink 相关的驱动信息,包括当前使用的驱动程序以及可用的驱动程序列表。
选择将 Jlink 转为 WinUSB 格式。在软件界面中,找到对应的驱动程序选项(通常为 “WinUSB” 或类似名称),并点击 “Install driver” 按钮进行驱动安装。在安装过程中,系统可能会弹出安全警告提示,需用户确认并继续安装。
安装完成后,Zadig 会提示驱动转换成功。此时,可关闭 Zadig 软件,Jlink 驱动配置即告完成。通过此步骤,Jlink 调试器能够以 WinUSB 模式与电脑进行通信,为后续的调试工作奠定了基础。
二、Eclipse 工程创建与配置
(一)创建新工程
打开 Eclipse IDE,点击 “File->New”,选择新建 “C/C++ Project”。
在弹出的新建项目向导中,选择 “C Managed Build” 项目类型,该类型适用于 C 语言项目的开发和管理,能够方便地进行项目构建和调试设置。
点击 “Next” 按钮,进入下一步配置界面。在 “Project name” 文本框中输入工程名称,建议使用简洁明了且具有项目标识性的名称,如 “AS32_LED_Demo”。在 “Project types” 区域中,选择 “Empty Project” 作为项目类型,这样可以为项目提供一个干净的基础框架,便于开发人员根据实际需求自定义项目结构和配置。在 “Toolchains” 选项中,选择 “RISC - V Cross GCC”,指定该工程使用 RISC - V 架构的 GCC 工具链进行编译和链接。
再次点击 “Next” 按钮,在接下来的界面中,通常无需进行额外配置,可直接点击 “Next” 继续。
进入工具链配置界面后,在弹出的工程窗口中,找到 “Toolchain name and path” 配置项,点击路径选择按钮,定位到 ansilic_Toolchain 所在的路径,确保 Eclipse 能够正确识别并使用该工具链进行项目编译和调试。完成路径设置后,点击 “Finish” 按钮,即可成功创建一个新的 AS32 工程。
(二)目录管理
手动管理目录
右键点击工程名称,选择 “New->Folder”,创建子目录 “Peripherals”,用于存放 AS32 芯片的驱动文件。
在创建目录时,建议选择 “Create virtual folders” 选项,这样可以将驱动文件以虚拟路径的形式添加到工程中,避免将文件全部复制到工程目录下,便于后续对驱动文件的统一管理和更新。点击 “Finish” 按钮完成目录创建。
采用相同的方法,依次创建 “Core”(保存中断入口和链接文件)、“Startup”(存放启动文件)、“System”(存放开发人员自定义的延时函数和打印函数等辅助函数文件)、“User”(存放用户应用程序代码文件)等目录。创建完成后,工程的目录结构将变得更加清晰有条理,便于开发人员对不同功能模块的文件进行分类存放和管理。
接下来,需要向工程目录中导入相应的文件。右键点击相应的目录名称,选择 “Import”。
在弹出的导入向导中,选择 “General->File System”,点击 “Next” 按钮。
在新窗口中,浏览并选择之前下载的 Drivers 目录下对应的文件夹,勾选需要添加的文件。在导入文件时,通常无需勾选头文件(*.h),因为头文件主要起到代码声明和引用的作用,在实际编译过程中,编译器会根据需要自动包含相应的头文件。同时,建议勾选 “Advanced” 下的全部选项,以确保文件导入过程中的各种参数配置能够满足项目要求。
对于 “User” 目录,由于其是开发人员自己创建的目录,用于存放用户自定义的代码文件,因此可以直接右键点击该目录,选择 “New->File” 创建新的 C 源文件(.c)和头文件(.h)。在创建文件时,需为文件命名,并根据项目需求编写相应的代码逻辑。
自动创建
除手动管理目录外,还有一种更为简便的方法 —— 自动创建目录并导入文件。具体操作为:将国科安芯提供的 Driver 目录下所有子目录及其包含的文件复制到工程目录下。然后返回 Eclipse,右键点击工程名称,选择 “Refresh”,Eclipse 将自动识别并加载新添加的目录和文件,完成项目的快速搭建。这种方法适用于对项目目录结构和文件组织要求不是特别严格的场景,能够快速地将驱动文件和示例代码等资源导入到工程中,节省开发时间。
(三)项目配置
目标处理器配置
右键点击工程名称,选择 “Properties” 打开工程属性配置窗口。在左侧配置项列表中,依次展开 “C/C++ Build->Settings->Tool Settings->Target Processor” 节点,进入目标处理器配置页面。
根据 AS32 芯片的实际内核类型,选择对应的目标处理器选项。在本例中,若芯片内核为 RV32I,则在 “Target” 下拉菜单中选择 RV32I 选项。此外,还需按照项目需求对其他相关参数进行配置,如设置芯片的工作频率、内存大小等参数,以确保编译器能够根据芯片的实际硬件特性进行代码优化和编译。
编译器配置
在 “C/C++ Build->Settings->Tool Settings->GNU RISC - V Cross Assembler” 选项中,对 Cross 汇编编译选项进行配置。在 “includes->Include paths” 选项中,添加工程所需的汇编头文件路径。例如,将 “Core” 和 “Startup” 目录的路径添加到此处,以便汇编器能够在编译过程中正确地找到并包含相应的头文件。
同样地,在 “C/C++ Build->Settings->Tool Settings->GNU RISC - V Cross C Compiler” 选项中,对 Cross C 编译选项进行设置。在 “includes->Include paths” 选项中,添加工程所需的 C 语言头文件路径。通常情况下,需要添加 AS32 驱动库中 Drivers 目录下的相应子目录路径,如 Drivers/Include、Drivers/Peripherals 等,这样可以确保编译器在编译 C 源代码时能够正确解析对驱动库函数的调用和相关数据类型的定义。
链接器配置
在 “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” 选项。Newlib - nano 是一个轻量级的 C 标准库实现,相较于完整的新lib库,其占用的存储空间更小,适合在资源受限的嵌入式环境中使用。而 “Do not use syscalls” 选项则表示不使用标准的系统调用接口,这对于在裸机环境下运行的 AS32 芯片程序来说是较为常见的配置,因为在这种环境下,程序通常直接与硬件进行交互,无需依赖操作系统的系统调用功能。
生成 bin/hex 文件配置
在 “C/C++ Build->Settings->Build Steps” 选项中,可以添加自定义的构建命令,用于在编译完成后生成 bin/hex 文件。bin/hex 文件是程序的二进制或十六进制格式的可执行文件,能够直接烧录到芯片中运行。在本例中,可在构建步骤中添加如下命令:“riscv - none - embed - objcopy - O binary ”led.elf“ ”led.bin“; riscv - none - embed - objdump - D ”led.elf“ > ”led.dump“”。其中,led.elf 为编译生成的可执行文件,led.bin 和 led.dump 分别为生成的二进制文件和反汇编文件。在更换工程时,只需将命令中的目标文件名称相应修改即可。
可以看到,无报错,到此,工程搭建全部完成。