eMMC 启动完整操作手册 V2
角色分工概览HPS 工程师 FPGA 工程师 ────────────────────────── ────────────────────────── 编译 Yocto生成软件镜像 接收 HPS 文件生成 JIC 交付文件 生成文件 ├── u-boot-spl-dtb.hex ──────────→ helper.jic初次写 eMMC 用 ├── u-boot.itb ──────────→ full.jic 最终正式使用 └── gsrd-console-image.wic split 后放 TFTPPHASE 1HPS 工程师操作1.1 确认 Yocto 编译输出文件bashCopycd ~/013b_sd_build/agilex5_soc_devkit_ghrd/software/yocto_linux/build/tmp-glibc/deploy/images/agilex5e_013b/ # 确认以下关键文件存在 ls -lh u-boot-spl-dtb.hex \ u-boot.itb \ gsrd-console-image-agilex5e_013b.rootfs.wic1.2 准备 TFTP 文件bashCopy# 切割 wic 镜像为 1GB 分块U-Boot TFTP 单次传输限制 split --bytes1G gsrd-console-image-agilex5e_013b.rootfs.wic # 生成 xaa第一块、xab第二块若镜像 1GB # 拷贝到 TFTP 目录 sudo cp xaa /tftpboot/ sudo cp xab /tftpboot/ # 若存在 # 确认 TFTP 服务运行 systemctl status tftpd-hpa # 确认 Host PC IP后续 U-Boot 中填写 ip addr show # 示例得到192.168.1.1001.3 交付给 FPGA 工程师 HPS 工程师 → FPGA 工程师 ├── u-boot-spl-dtb.hex SPL即 FSBL └── u-boot.itb U-Boot Proper ATF bl31PHASE 2FPGA 工程师操作收到u-boot-spl-dtb.hex和u-boot.itb后执行。2.1 准备环境bashCopyexport QUARTUS_ROOTDIR~/altera_pro/25.3.1/quartus/ export PATH$QUARTUS_ROOTDIR/bin:$QUARTUS_ROOTDIR/linux64:$PATH2.2 生成 helper.jic用途初次写 eMMC 时使用包含完整 U-Boot烧写后可进入 U-Boot 命令行bashCopymkdir helper_jic cd helper_jic # 下载官方 pfg 模板定义 QSPI Flash 分区布局 wget https://releases.rocketboards.org/2026.01/emmc/agilex5_dk_a5e065bb32aes1_emmc/uboot-only.pfg # 修改 pfg 中的 sof 文件名适配自己的设计 sed -i s/ghrd_a5ed065bb32ae6sr0\.sof/legacy_baseline.sof/g uboot-only.pfg # 准备 u-boot.itb改名为 .bin填充到 2MBquartus_pfg 格式要求 cp ../u-boot.itb u-boot.bin uboot_size$(wc -c u-boot.bin) uboot_pad$((2*1024*1024 - uboot_size)) truncate -s ${uboot_pad} u-boot.bin # 建立文件链接 ln -s ../u-boot-spl-dtb.hex . ln -s ../legacy_baseline.sof . # 生成 helper JIC quartus_pfg -c uboot-only.pfghelper.jic 内容QSPI Flash 布局 ├── FPGA 配置数据 ← legacy_baseline.sof ├── U-Boot SPL (FSBL) ← u-boot-spl-dtb.hex └── U-Boot Proper ← u-boot.bin必须包含否则无法进命令行生成文件 生成 └── agilex_flash_image.hps.jic 即 helper.jic2.3 生成 full.jic用途最终正式使用包含完整 FPGA 配置 完整 U-BootbashCopycd .. quartus_pfg \ -c baseline.sof full.jic \ -o deviceMT25QU128 \ -o flash_loaderA5ED065BB32AE6SR0 \ -o hps_pathu-boot-spl-dtb.hex \ -o modeASX4 \ -o hps1注意此命令生成的 full.jic 只包含 SPL不含 U-Boot Proper。 若需要 full.jic 也包含 U-Boot Proper推荐保证 eMMC 损坏时可恢复 同样使用 pfg 文件方式生成参考 helper.jic 的做法替换为完整的 baseline.sof。full.jic 内容QSPI Flash 布局 ├── FPGA 配置数据完整 ← baseline.sof ├── U-Boot SPL (FSBL) ← u-boot-spl-dtb.hex └── U-Boot Proper ← u-boot.itb推荐包含生成文件 生成 └── full.jic2.4 交付给联调 / HPS 工程师 FPGA 工程师 → 联调工程师 ├── agilex_flash_image.hps.jic helper.jic第一步用 └── full.jic 正式 JIC第三步用PHASE 3烧写与启动操作Step 1烧写 helper.jic 到 QSPI目的让板子能进入 U-Boot 命令行以便写 eMMC硬件操作 ① 断电 ② SW3 → ONHPS NAND Board 使能 eMMC ③ SW27 → JTAG 模式OFF-OFF-OFF-OFF ④ 接好 micro USB JTAG 线 ⑤ 上电bashCopy# Host PC 执行 jtagconfig --setparam 1 JtagClock 16M quartus_pgm -c 1 -m jtag -o pvi;agilex_flash_image.hps.jic # 出现 100% 表示烧写成功Step 2通过 U-Boot 将镜像写入 eMMC目的通过 TFTP 把 .wic 镜像写到 eMMC硬件操作 ① 断电 ② SW27 → QSPI 模式OFF-ON-ON-OFF ③ 接好 mini USB 串口线HPS Daughtercard 上 ④ 打开串口终端115200, 8N1, 无流控 ⑤ 上电 ⑥ 看到 U-Boot 倒计时时立即按任意键在U-Boot 命令行执行bashCopy# 获取网络 setenv autoload no dhcp # 输出示例DHCP client bound to address 192.168.1.153 # 设置 TFTP 服务器 IPHost PC 的 IP setenv serverip 192.168.1.100 # 写入第一块 tftp ${loadaddr} xaa setexpr blkcnt1 ${filesize} / 0x200 mmc write ${loadaddr} 0 ${blkcnt1} # 写入第二块若镜像 1GB 才有 xab tftp ${loadaddr} xab setexpr blkcnt2 ${filesize} / 0x200 mmc write ${loadaddr} ${blkcnt1} ${blkcnt2}Step 3烧写 full.jic 到 QSPI目的用含完整 FPGA 配置的正式 JIC 替换 helper.jic硬件操作 ① 断电 ② SW27 → JTAG 模式OFF-OFF-OFF-OFF ③ 上电bashCopy# Host PC 执行 jtagconfig --setparam 1 JtagClock 16M quartus_pgm -c 1 -m jtag -o pvi;full.jicStep 4从 eMMC 启动 Linux硬件操作 ① 断电 ② SW27 → QSPI 模式OFF-ON-ON-OFF ③ 上电 ④ 等待 Linux 启动约 30 秒 ⑤ 串口登录用户名 root无密码后续更新镜像无需重烧 JIC日常迭代开发时只要打断 U-Boot 重写 eMMC 即可。① SW27 保持 QSPI 模式OFF-ON-ON-OFF不需要改 ② 上电串口看到倒计时时按任意键 ③ 执行与 Step 2 相同的 U-Boot 命令 ④ reset 重启验证全流程文件流转总图HPS 工程师 FPGA 工程师 板子硬件 ───────────────────────── ────────────────────── ───────────── [Yocto 编译输出] u-boot-spl-dtb.hex ─────────→ [生成 JIC] u-boot.itb ─────────→ │ ├─→ helper.jic ───────→ QSPI (Step1) └─→ full.jic ───────→ QSPI (Step3) gsrd-console-image.wic └─ split ──→ xaa/xab ───→ TFTP 服务器 │ └────────────────────→ eMMC (Step2)最终存储布局QSPI Flashfull.jic 烧入后 ├── FPGA 配置完整 ├── U-Boot SPL └── U-Boot Proper eMMCwic 写入后 ├── FAT32 分区 │ ├── u-boot.itb ← U-Boot Proper ATF │ ├── kernel.itb ← Linux Kernel DTB core.rbf │ ├── boot.scr.uimg ← 启动脚本 │ └── uboot.env ← U-Boot 环境变量 └── EXT4 分区 └── rootfs最终启动链上电QSPI 模式 │ ▼ QSPI → U-Boot SPLFSBL │ 初始化 DDR、时钟 │ 搜索 U-Boot ProperSD Card无→ eMMC找到 ▼ eMMC FAT32 → u-boot.itbU-Boot Proper ATF bl31 │ 解析 boot.scr.uimg ▼ eMMC FAT32 → kernel.itb │ ├── Linux Kernel │ ├── Device Tree │ └── core.rbf → 配置 FPGA FabricPhase 2 ▼ eMMC EXT4 → Root Filesystem │ ▼ Linux 启动完成需要重烧 JIC vs 只需重写 eMMC更新内容操作Linux 内核 / DTB / rootfs / 应用打断 U-Boot → 重写 eMMCU-Boot Proper打断 U-Boot → 重写 eMMCFPGA Phase 2 配置core.rbf打断 U-Boot → 重写 eMMCU-Boot SPLFSBL重新生成 JIC → 重烧 QSPIFPGA 顶层设计.sof重新生成 JIC → 重烧 QSPISPL 如何知道从哪里加载 U-Boot ProperSPL 的加载来源是编译时配置决定的不是运行时动态判断的。编译时配置在 Yocto 构建时U-Boot 的defconfig文件中定义了 SPL 的启动介质CONFIG_SPL_MMCy # 启用从 MMC/eMMC 加载 CONFIG_SPL_FS_FATy # 启用 FAT 文件系统支持 CONFIG_SPL_LOAD_FITy # 加载 FIT 镜像即 .itb 格式以及加载的文件名CONFIG_SPL_FS_LOAD_PAYLOAD_NAMEu-boot.itb这些配置在编译时就固化进了 SPL 的二进制文件中。SPL 运行时的查找逻辑SPL 启动 ↓ 按优先级依次尝试启动介质编译时定义的顺序 1. eMMC分区1 FAT32 → 找 u-boot.itb → 找到则加载 2. SD Card → 找 u-boot.itb 3. QSPI若配置了 fallback→ 直接读取内嵌的 u-boot.itb ↓ 找到则执行找不到则报错停止当emmc为空哪个所有help.jic有U-boot可以实现启动从QSPI的U-boot启动。当emmc已经有镜像有U-bootSPL启动emmc的U-boot。实际上 Agilex 5 GSRD 的情况可能是helper.jic 和 full.jic 用的是同一个 SPL区别只在于 FPGA 配置内容.sof不同SPL 的 fallback 行为是固定编译进去的两者都有只是 full.jic 使用时 eMMC 已经有内容所以 fallback 从未被触发

相关新闻

WebView2轻量化封装方案:替代Electron的Windows应用开发

WebView2轻量化封装方案:替代Electron的Windows应用开发

1. 项目概述:WebView2 轻量化封装方案去年给某博物馆做数字展厅项目时,客户突然要求把Web全景展示系统打包成离线EXE。当我用Electron打完包看到180MB的安装体积时,甲方技术负责人那句"你们这安装包比展品视频还大"让我至今难忘。这…

2026/7/22 5:10:37阅读更多 →
WTConv:小波变换与CNN融合的创新图像处理技术

WTConv:小波变换与CNN融合的创新图像处理技术

1. WTConv:小波变换与卷积神经网络的创新融合最近在ECCV 2024上看到一篇关于WTConv的论文,这个将小波变换与传统卷积操作结合的新思路让我眼前一亮。作为在图像处理领域摸爬滚打多年的从业者,我深知传统CNN的局限性——随着网络加深&#xff…

2026/7/22 5:10:37阅读更多 →
安全第一:个人微信 API 频次控制与防封号风控系统设计

安全第一:个人微信 API 频次控制与防封号风控系统设计

使用个人微信 API 最核心的红线就是防封号。腾讯的风控系统对异地登录、高频操作、非人类行为有着严密的监控。在编写业务代码时,必须内置一套1. 漏桶算法(Leaky Bucket)限制发送频次严禁使用 for 循环连续调用发送接口。必须将所有发送任务塞…

2026/7/22 5:10:37阅读更多 →
半参数化随机框架在交通流建模中的Python实现与应用

半参数化随机框架在交通流建模中的Python实现与应用

在交通流建模领域,基础图(Fundamental Diagram)作为描述交通流量、密度和速度之间关系的核心模型,一直是研究热点。传统参数化方法虽然结构清晰但灵活性不足,而非参数化方法又缺乏可解释性。半参数化随机框架的提出&am…

2026/7/22 5:58:58阅读更多 →
C++通讯录管理系统:面向对象编程与STL实战指南

C++通讯录管理系统:面向对象编程与STL实战指南

1. 项目概述与核心价值又到了期末大作业扎堆的时候,不少学C的同学开始为“通讯录管理系统”这个经典题目挠头。这项目听起来简单,不就是增删改查嘛,但真要做成一个结构清晰、代码健壮、能体现面向对象思想的程序,里头的门道可不少…

2026/7/22 5:58:58阅读更多 →
计算机毕业设计之医疗废弃物管理系统

计算机毕业设计之医疗废弃物管理系统

随着社会的发展,系统的管理形势越来越严峻。越来越多的用户利用互联网获得信息,但各种信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得医疗废弃物管理信息,因此,设计一种安全高效的医疗废弃物管理系统极为重要…

2026/7/22 5:58:58阅读更多 →
C++17核心特性深度解析:从optional到if constexpr的工程实践

C++17核心特性深度解析:从optional到if constexpr的工程实践

1. 项目概述:从“新特性”到“新思维”每次C标准更新,都像给这门古老而强大的语言注入了一剂强心针。C17,作为C11/14之后的一个重要中期版本,它带来的远不止是几个语法糖或库函数那么简单。很多开发者,包括我自己&…

2026/7/22 5:58:58阅读更多 →
7月上海WAIC具身智能展馆:机器人场景增多,技术应用现新趋势,“卖铲人”先寻商机!

7月上海WAIC具身智能展馆:机器人场景增多,技术应用现新趋势,“卖铲人”先寻商机!

从围观转向交易7月18日至20日,上海世博展览馆的WAIC具身智能展馆热闹非凡,人数约是其他展馆的两三倍。与过去单纯围观不同,如今很多人带着商业合作任务来。有人调侃“社恐来这一天就治好了”,现场交换名片、谈业务的场景随处可见。…

2026/7/22 5:58:58阅读更多 →
C#上位机轮询通信:工业数据采集的稳定基石与实现详解

C#上位机轮询通信:工业数据采集的稳定基石与实现详解

1. 轮询:上位机通信的“笨”办法与“稳”基石做上位机开发,尤其是和PLC、单片机、仪表这些下位机打交道,通信是绕不开的核心。新手朋友在接触串口、网口通信时,往往会遇到一个高频词:轮询。乍一听,这词儿有…

2026/7/22 5:56:57阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →