基于 Intel Cyclone IV EPCS/EPCQ 配置芯片的 Nios II 固化脚本与烧录流程(SOF + ELF → HEX → .POF 完整指南)】 第一步准备阶段硬件与软件环境在开始烧录前请确保以下准备工作已经完成硬件连接使用 USB-Blaster 下载器连接电脑和开发板的AS 接口。确保开发板供电正常且MSEL[ ]引脚跳线设置为AS 模式通常为 3.3V 或接地组合具体参考开发板原理图。确认软件环境打开Quartus II Programmer(Tools - Programmer)检查是否能够识别到你的 USB-Blaster。如果看不到请检查驱动或硬件连接。检查BSP配置这是一个关键的软件设置。你需要确认BSP (Board Support Package)中的Reset Vector复位向量指向了EPCS 控制器。这告诉 CPU 上电后从 EPCS 芯片启动。这个配置通常在 Qsys/Platform Designer 中完成。第二步执行脚本生成烧录文件这是核心的转换步骤脚本会在你的工程目录下生成最终的.hex文件。如果你的脚本文件名为flash.sh请在 Nios II Command Shell 中执行它。# 在 Nios II Command Shell 中执行脚本 ./flash.sh脚本的执行过程如下sof2flash --epcs --input$sof --outputsof.flash --quiet将硬件配置文件.sof转换为 EPCS 芯片能识别的.flash格式。elf2flash --epcs --aftersof.flash --input$elf --outputelf.flash将软件程序.elf转换为.flash格式并使用--after参数确保它被放置在硬件镜像之后形成一个连续的整体。elf2flash还会自动插入一个“启动拷贝程序”Boot Copier。cp sof.flash sof_elf.flash与cat elf.flash sof_elf.flash将前面两步生成的硬件和软件.flash文件合并成一个完整的镜像sof_elf.flash。nios2-elf-objcopy --input-target srec --output-target ihex sof_elf.flash sof_elf.hex将合并后的.flash文件S-Record 格式转换为 Quartus II 可以识别的.hex文件。flash.sh# # Nios II EPCS/EPCQ 固化脚本适用于 Altera 专用配置芯片--- # 功能将 FPGA 硬件配置 (.sof) 和 Nios II 软件程序 (.elf) # 合并成一个 HEX 文件用于烧录到 EPCS/EPCQ 配置芯片。 # 使用方法 # 1. 将本脚本与 .sof、.elf 文件放在同一目录下。 # 2. 在 Nios II Command Shell 中执行./固化脚本.sh # 3. 生成的 sof_elf.hex 文件即为最终烧录文件。 # 注意事项 # - 确保 EPCS/EPCQ 芯片容量足够存放 .sof .elf 的总大小。 # - 若使用普通 CFI Flash需修改参数见下方注释。 # # ----- 1. 定义输入文件 ----- # 硬件配置文件由 Quartus 编译生成 sofxxxx.sof # 软件可执行文件由 Nios II SBT 编译生成 elfxxxx.elf # ----- 2. 将 .sof 转换为 Flash 格式 ----- # --epcs : 指定目标为 EPCS/EPCQ 配置芯片 # --input : 输入文件 # --output : 输出文件临时 # --quiet : 减少输出信息可选 echo sofflash ... sof2flash --epcs --input$sof --outputsof.flash --quiet # ----- 3. 将 .elf 转换为 Flash 格式并附加到 .sof 之后 ----- # --epcs : 目标为 EPCS/EPCQ # --after : 将 .elf 放置在 sof.flash 之后地址连续 # --input : 输入 .elf 文件 # --output : 输出文件包含硬件 软件 echo elfflash ... elf2flash --epcs --aftersof.flash --input$elf --outputelf.flash # ----- 4. 合并硬件和软件镜像生成单个合并文件 ----- # 先复制 sof.flash 作为基础 cp sof.flash sof_elf.flash # 将 elf.flash 追加到其后形成完整镜像 cat elf.flash sof_elf.flash # ----- 5. 将合并后的 Flash 文件转换为 HEX 格式 ----- # nios2-elf-objcopy : 目标文件格式转换工具 # --input-target srec : 输入为 SREC 格式.flash 本质是 SREC # --output-target ihex : 输出为 Intel HEX 格式 # sof_elf.flash : 输入文件 # sof_elf.hex : 输出文件最终烧录文件 echo flashhex ... nios2-elf-objcopy --input-target srec --output-target ihex sof_elf.flash sof_elf.hex # ----- 6. 清理临时文件可选 ----- # 删除所有 .flash 中间文件只保留 .hex echo del flash ... rm -f *.flash # # 其他说明 # - 生成的 sof_elf.hex 可通过 Quartus II Programmer 烧录到 EPCS/EPCQ。 # - 若使用普通 CFI Flash需将上述 --epcs 参数替换为 # sof2flash --pfl ... # elf2flash --baseFlash基地址 --end结束地址 --reset复位向量 --boot... # 并移除合并步骤硬件和软件分别烧录。 # 三步烧录阶段固化到 EPCS使用 Quartus II Programmer推荐这是最常用、最可靠的方法。打开转换工具在 Quartus II 菜单栏点击File-Convert Programming Files...。设置输出文件在Programming file type下拉框中选择Progammer Object File (.pof)。在Configuration device下拉框中选择你板上的 EPCS 芯片型号如 EPCS64。添加输入文件点击Add Hex Data选择Add Hex Data在弹出的窗口中选择Relative addressing然后添加脚本生成的sof_elf.hex文件。生成并烧录点击Generate生成.pof文件。然后关闭该窗口在 Quartus II Programmer 中添加并烧录这个新生成的.pof文件。验证与问题排查烧录完成后可以按以下步骤验证断开 AS拔掉 USB-Blaster 下载线。重新上电给开发板断电再重新上电。观察行为检查程序是否按预期自动运行。如果程序未能启动可能的原因有Reset Vector 配置错误这是最常见的原因。请再次确认 BSP 中的复位向量指向了 EPCS 控制器。EPCS 芯片不兼容如果使用非 Altera 原厂的 SPI Flash可能需要修改nios2-flash-override.txt文件来匹配芯片 ID 和扇区大小。脚本生成问题检查脚本执行过程中是否有报错信息。如果提示空间不足可以在 Quartus 中对.sof文件启用压缩。硬件连接问题确认 JTAG 连接稳定且开发板供电充足。