2. 开发环境搭建与工具链配置
PolarFire SoC 的开发不是单一软件能完成的任务,而是由 Libero SoC、SoftConsole、FlashPro Express 以及 RISC-V GCC 工具链共同组成的一条完整工具链。理解它们各自负责什么、如何衔接,比单纯记住安装步骤更重要。本章围绕“装什么、装在哪、怎么配、如何验证”展开,最终目标是完成一个可编译、可下载的最小工程。
一、四类工具的分工
Libero SoC 是 FPGA 设计的主平台,负责器件选型、IP 配置(包括 RISC-V 子系统 MSS)、引脚约束、综合布局布线,并生成 FPGA 配置数据流(.job/.bit 等)。SoftConsole 是基于 Eclipse 的 RISC-V 嵌入式软件开发环境,负责 C/C++ 应用工程、链接脚本、调试配置,它内部调用 RISC-V GCC 完成编译。FlashPro Express 是独立的编程下载工具,用于把 Libero 生成的配置数据流烧写到目标板或外部 SPI Flash。RISC-V GCC 工具链则是 SoftConsole 背后的编译器、汇编器、链接器与调试器集合。
四者的关系可以概括为:Libero 产出“硬件平台”,SoftConsole + GCC 产出“软件镜像”,FlashPro Express 负责“把两者落到芯片上”。下图给出这条工具链的数据流与衔接点。
二、安装顺序与版本匹配
推荐按“Libero SoC → SoftConsole → FlashPro Express → 确认 GCC”的顺序安装。Libero 安装包通常已包含 FlashPro Express,若单独安装需注意版本一致。关键原则是:Libero、SoftConsole、FlashPro Express 三者应使用同一发布年份的版本,例如 Libero SoC v2024.1 对应 SoftConsole v2024.1。版本错配最典型的症状是 SoftConsole 无法识别 Libero 导出的 MSS 配置,或 FlashPro 无法加载 .job 文件。
安装时建议全部使用默认路径,避免中文或空格目录。Libero 安装完成后需通过 License 管理器加载许可证;SoftConsole 为免费工具,无需许可证。安装结束后可在命令行验证 GCC:
riscv64-unknown-elf-gcc --version
# 期望输出类似:
# riscv64-unknown-elf-gcc (Microchip GCC 12.2.0) 12.2.0
若提示找不到命令,说明 SoftConsole 自带的工具链未加入 PATH,可在 SoftConsole 安装目录下的 riscv-unknown-elf-gcc/bin 中确认可执行文件是否存在,再手动加入环境变量。
三、创建首个工程
第一个工程建议采用“Libero 建硬件 + SoftConsole 建软件”的最小组合。在 Libero 中新建工程,器件选择 MPFS250T(以官方 PolarFire SoC Icicle Kit 为例),在 SmartDesign 中例化 MSS(Microprocessor Subsystem),保留默认的 UART0 与 JTAG 调试接口,生成 HDL 顶层后执行综合与布局布线,最后导出 .job 编程文件。同时在 Libero 中通过“Export Firmware”导出 MSS 配置,供 SoftConsole 使用。
在 SoftConsole 中新建 RISC-V 工程,选择“PolarFire SoC”模板,导入上一步的 MSS 配置。工程会自动生成链接脚本与启动代码。编写一个最小 main 函数:
#include <stdio.h>
int main(void) {
printf("PolarFire SoC boot OK\r\n");
while (1) { }
return 0;
}
编译后应生成 .elf 文件。若编译报错“cannot find -lc”,通常是链接脚本路径或库搜索路径未正确指向工具链的 riscv64-unknown-elf/lib,检查工程属性中的 Libraries 与 Library Search Path 即可。
四、下载与验证
下载分两步:先用 FlashPro Express 烧写 Libero 生成的 .job,完成 FPGA 配置;再通过 SoftConsole 的调试配置将 .elf 下载到 RISC-V 核。若使用 Icicle Kit,也可将固件打包进 SPI Flash 实现上电自启动。
验证时打开串口终端,波特率设为 115200,复位目标板。若看到 “PolarFire SoC boot OK” 输出,说明工具链、硬件配置与软件编译均已打通。若串口无输出,按以下顺序排查:确认 JTAG 连接与 FlashPro 是否报告编程成功;确认 UART 引脚约束与板上丝印一致;确认 .elf 确实被下载而非仅编译;最后检查时钟与复位配置是否与 MSS 设置匹配。
五、常见问题速查
| 现象 | 可能原因 | 处理方向 |
|---|---|---|
| SoftConsole 无法导入 MSS | Libero 与 SoftConsole 版本不一致 | 统一为同一年份版本 |
| GCC 命令找不到 | 工具链未加入 PATH | 手动添加 bin 目录到环境变量 |
| 编译报 -lc 缺失 | 库搜索路径未配置 | 检查工程 Libraries 设置 |
| FlashPro 加载 .job 失败 | 编程文件与器件不匹配 | 确认器件型号与 .job 来源一致 |
| 串口无输出 | UART 约束或下载未生效 | 核对引脚约束与下载日志 |
完成本章后,你应当拥有一套版本一致、路径清晰、可编译可下载的工具环境,并能独立判断“编译失败”与“下载失败”分别属于软件链还是硬件链的问题。这是后续所有 PolarFire SoC 开发工作的起点。