hps soc引导指南 - cyclone v soc开发工具 - intel · 更多关于boot room 根据csel...

30
HPS SoC - Cyclone V SoC 2016.01.27 AN-709 本文档介绍: 综述 Cyclone ® V 中的引导选项 有助减短引导时间的建议,包括 Cyclone V 开发套件中引导进程的测量。 有助于调试引导进程的建议 Cyclone V SoC 开发套件中可运行的裸机引导实例。 注意: 本文档虽针对 Cyclone V 来介绍,但同样适用于 Arria ® V。因为这两个系列的 HPS 部分相 同。 运行本引导指南介绍的实例需满足的条件如下: Altera ® Cyclone V Development KitRev D 主机 PC 运行 Windows 7 或以上版本 (1) 已安装 Altera SoC Embedded Design Suite (SoC EDS), v14.1 Altera Complete Design Suite (ACDS) v14.1 (2) 注意: 本文档假定用户已具备 Altera SoC EDSACDSPreloader Support Package Generator (SoC EDS 部分) ARM DS-5 AE 的基本知识。 相关链接 Cyclone V 开发套件和 SoC 嵌入式设计套件 更多关于 Cyclone V SoC 开发板的信息 SoC EDS 下载 更多关于 SoC EDS 最新下载及下载方式信息。 ACDS 下载 更多关于 ACDS 最新下载及下载方式信息。 Altera SoC 嵌入式设计套件用户指南 (1) 也可使用具有相似命令的 Linux 操作系统。 (2) FPGA 引导的实例才需要。 Intel Corporation. All rights reserved. Intel, the Intel logo, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus and Stratix words and logos are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries. Intel warrants performance of its FPGA and semiconductor products to current specifications in accordance with Intel's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Intel assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. *Other names and brands may be claimed as the property of others. ISO 9001:2008 Registered www.altera.com 101 Innovation Drive, San Jose, CA 95134

Upload: others

Post on 08-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

HPS SoC 引导指南 - Cyclone V SoC 开发套件2016.01.27

AN-709 订阅 反馈

引言

本文档介绍:

• 综述 Cyclone® V 中的引导选项• 有助减短引导时间的建议,包括 Cyclone V开发套件中引导进程的测量。• 有助于调试引导进程的建议

• Cyclone V SoC开发套件中可运行的裸机引导实例。

注意: 本文档虽针对 Cyclone V来介绍,但同样适用于 Arria® V。因为这两个系列的 HPS部分相同。

必要条件

运行本引导指南介绍的实例需满足的条件如下:

• Altera® Cyclone V Development Kit,Rev D• 主机 PC运行Windows 7或以上版本(1)

• 已安装 Altera SoC Embedded Design Suite (SoC EDS), v14.1• Altera Complete Design Suite (ACDS) v14.1(2)

注意: 本文档假定用户已具备 Altera SoC EDS,ACDS,Preloader Support Package Generator (SoCEDS部分) 和 ARM DS-5 AE的基本知识。

相关链接

• Cyclone V开发套件和 SoC嵌入式设计套件更多关于 Cyclone V SoC开发板的信息

• SoC EDS下载更多关于 SoC EDS最新下载及下载方式信息。

• ACDS下载更多关于 ACDS最新下载及下载方式信息。

• Altera SoC嵌入式设计套件用户指南

(1) 也可使用具有相似命令的 Linux操作系统。(2) 从 FPGA引导的实例才需要。

Intel Corporation. All rights reserved. Intel, the Intel logo, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus and Stratix words and logos are trademarks ofIntel Corporation or its subsidiaries in the U.S. and/or other countries. Intel warrants performance of its FPGA and semiconductor products to currentspecifications in accordance with Intel's standard warranty, but reserves the right to make changes to any products and services at any time without notice.Intel assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expresslyagreed to in writing by Intel. Intel customers are advised to obtain the latest version of device specifications before relying on any published informationand before placing orders for products or services.*Other names and brands may be claimed as the property of others.

ISO9001:2008Registered

www.altera.com101 Innovation Drive, San Jose, CA 95134

Page 2: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

引导概述

本章节概述适用于 Cyclone V的不同引导选项及性能。

引导流程

下图描述了典型的引导流程:

图 1: 典型引导流程

可能出现的其他引导流程,如下图所示:

图 2: 其他引导流程

由上图可见,Boot ROM总是存在,然后根据系统设计,会出现或多或少的阶段。

Boot ROM

当处理器从复位释放,HPS引导过程开始,并跳转到位于 Boot ROM的地址空间的复位矢量地址。

通常,Boot ROM的主要职责是:

• 检测所选引导源• 执行最少量的 HPS初始化• 从 Flash加载下一引导阶段(通常是 Preloader)到 OCRAM,并跳转到 OCRAM。

Boot ROM行为受 BSEL和 CSEL选项影响,也会如后文中将介绍的受到 Sytem Manager(针对RAM引导)中寄存器的影响。

2 引导概述AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 3: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

由于对于下一引导阶段储存在 Flash中的情况,Boot Rom可以读取多达四种不同映像:

• 冷复位时,Boot ROM一般从第一映像开始,并检查 CRC。 如果 CRC正常,那么 Boot ROM将控制权传递 CRC。如果 CRC不正常,Boot ROM尝试下一映象,以此类推。在映像控制传递前,Boot ROM更新寄存器 sysmgr.romcodegrp.initswlastld 的映像索引。

• 热复位时,Boot ROM 在寄存器 sysmgr.romcodegrp.initswstate 中查找特殊值(Magic value)0x49535756。如有该值,说明之前的预加载器执行正常,并再次加载和执行。 如果没有,说明之前预加载不正常,Boot ROM将前进至下一映像并增加 sysmgr.romcodegrp.initswlastld。

• 如果全部映像加载失败,Boot ROM将尝试返回 FPGA映像。Watchdog继续复位 Boot ROM,但 Boot ROM将不再从 Falsh引导直至下一次冷复位。

注意: BootROM 需要 Flash在映像开端加载一个特殊头(header)。同时,该头包含一个用来确认映像的校验和。 可以使用 SoC EDS中的 mkpimage 工具为映像附加该头。

预加载器

通常,预加载器的主要职责是:

• 执行附加 HPS初始化• 启动 SDRAM• 从 Flash加载下一引导阶段至 SDRAM并跳转至 SDRAM

目前,有两个不同预加载器选项:

• SPL- U-Boot的一部分。由 SoC EDS提供,需要 GPL(开源)许可证。• MPL- 由 SoC EDS提供,作为使用 HWLibs(Altera bare-metal libraries)的实例。 需要 BSD许可证。

注意: 预加载器需要下一阶段引导映像开端有一个特殊的头(header)。同时,该头包含一个CRC值用以确认映像。可以使用 SoC EDS中的 mkimage工具为映像附加该头。

引导加载器

引导加载器的典型职责和预加载器相似,只是它并不需要启动 SDRAM。

因为引导加载器处于 SDRAM中,不被 OCRAM的大小限制。 因此,它可以有很多功能,比如网络堆栈支持。

引导源

根据 BSEL管脚的选择,HPS可从以下其中一个源引导:

• SD/MMC• QSPI• NAND• FPGA

AN-7092016.01.27 预加载器 3

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 4: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

下表介绍了可能出现的 BSEL选项,及其在 Cyclone V Development kit,Rev D中实际的跳线设置:

BSEL 说明Cyclone V Dev Kit Switches(开关切换)

J28:BSEL0 J28:BSEL0 J28:BSEL0

0 保留 右侧 右侧 右侧

1 FPGA 左侧 右侧 右侧

2 1.8 V NAND - - -3 3.3 V NAND - - -4 1.8 V SD/MMC 闪存控制器 - - -5 3.3 V SD/MMC 闪存控制器 左侧 右侧 左侧

6 1.8 V SPI 或 quad SPI - - -7 3.3 V SPI 或 quad SPI 左侧 左侧 左侧

有四个引导选项:

• 间接运行- 从闪存(SD/MMC/QSPI/NAND)引导时:

1. Boot ROM把代码从闪存加载到 OCRAM。2. 在此处运行代码。

• 直接执行- 从 FPGA引导时,Boot ROM直接跳转到 FPGA地址空间中的一个地址。• FPGA后备引导- 如果被选择的引导模式失败,Boot ROM将尝试跳转到 FPGA中的一个后备映像,(如果存在)。

• RAM引导- 如果是一个Warm Boot,可设置系统管理器,因此 Boot ROM 直接跳转到 OCRAM中的一个位置。

从 SD/MMC 引导

当从 SD/MMC引导时,有两个不同选项:

• 原始模式(raw mode)- 预加载器的映像被加载到卡上地址 0。• 分区模式(partition mode)- 预加载器映像被加载到卡上 ID=A2自定义分区偏移 0。

4 从 SD/MMC 引导AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 5: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 3: Raw 模式和分区模式选项

MBR为 512字节代码结构,位于地址 0,描述 SD/MMC卡中的分区。

Raw不允许将卡分区,因为预加载器位于地址 0,而MBR代码结构需置于此。

当使用分区模式时,预加载器位于一个自定义分区,不与 SD/MMC卡上的其他分区关联。因而其他分区可以包含,例如Windows FAT,或 Linux EXT2 或 EXT3文件系统,为整个系统设计提供更多灵活性。

相关链接

引导和配置更多关于 Boot Room根据 CSEL管脚选择 SD/MMC 时钟选项的信息,请参看 Cyclone V技术参考手册的引导和配置章节。

从 QSPI 引导

从 QSPI引导时,4个预加载器映像通常位于 QSPI 地址空间的开端,共占 256KB。

AN-7092016.01.27 从 QSPI 引导 5

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 6: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 4: QSPI 地址空间

相关链接

引导和配置更多关于 Boot ROM根据 CSEL选择 QSPI命令及时钟选项的信息,请参看 Cyclone V 技术参考手册的引导和配置章节。

从 NAND 引导

从 NAND引导时,预加载器映像位于闪存开端。 每一映像开始于 NAND闪存模块边界。

图 5: NAND Flash 模块

注意: Cyclone V 开发套件中不提供从 NAND引导。

6 从 NAND 引导AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 7: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

相关链接

引导和配置更多关于 Boot ROM根据 CSEL选择 NAND时钟选项的信息,请参阅 Cyclone V 技术参考手册的引导和配置章节。

从 FPGA 引导

从 FPGA引导时,Boot ROM 执行以下操作:

• 等待配置 FPGA并处入用户模式• 确认 FPGA架构中已使能从 FPGA引导• 跳转到地址 0xC0000000,对应于 HPS-2-FPGA桥接上偏移 0地址

注意: FPGA侧设置需要使能信号通知 HPS有一个引导映像(f2h_boot_from_fpga_ready)

注意: 不执行其他检查, 如映像的 CRC。也不执行时钟设置,以及忽略 CSEL值。

FPGA 后备引导

当 Boot ROM 没有成功加载任何映像,就尝试从一个 FPGA后备映像引导:

• 查看是否已配置 FPGA并处入用户模式• 确认 FPGA架构中已使能后备映像• 跳转到地址 0xC0000000,相应的在 HPS-2-FPGA桥接偏移 0地址

注意: FPGA侧设置需要使能信号通知 HPS有一个 FPGA后备映像(f2h_boot_from_fpga_on_failure)。

热复位中从 RAM 引导

此情形仅适用于热复位。指示 Boot RAM直接跳转至 OCRAM中一个已加载的映像,并选择性查看该映像的 CRC。

以下位于 sysmgr (romcodegrp and warmramgrp) 的寄存器用于在热复位中设置从 RAM引导:

• enable- 设置 位 0 以使能热复位中从 RAM引导。• datastart-OCRAM里字节偏移以得到 CRC验证区域。需要 4位对齐。• length- CRC验证 OCRAM区域大小,占 4位字。 设置到 0以禁用 CRC验证。• execution- 跳转至 OCRAM位偏移。• crc- OCRAM区域的 CRC值就是 CRC验证。

注意: 从 RAM引导时,Boot ROM没有任何初始化,包括时钟和因此而忽略的 CSEL管脚。

引导时钟

Cyclone V的电路板有不同时钟需求:

• OSC1输入时钟可以有各种数值• 闪存可以有各种时钟要求• 电路板布局也可能影响最快闪存速度

为满足以上需要,可以指示 Boot ROM通过 CSEL管脚使用不同时钟选项。下表介绍了 Cyclone V中的 CSEL选项,以及在 Cyclone V Development kit, Rev D中实际的跳线设置:

AN-7092016.01.27 从 FPGA 引导 7

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 8: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

表 1: 可用的 CSEL 选项

CSELCyclone V Dev Kit 开关切换

J26:CSEL0 J26:CSEL1

0 右侧 右侧

1 左侧 右侧

2 右侧 左侧

3 左侧 左侧

注意: 以下情形中 Boot ROM 完全不接触时钟:

• CSEL=0• 从 FPGA引导• 从 FPGA后备引导• 热复位中 RAM引导

相关链接

引导和配置更多关于各 CSEL值对 BSEL各选项意义的信息,请参阅 Cyclone V 技术参考手册的引导和配置章节

引导的持续时间

在一些应用中, 引导过程的持续时间非常关键,需满足一个确切约束。

这部分介绍了优化引导时间时的一些注意事项,及 Cyclone V Development Kit中随各种选项而采用的一些测量。

下图描述了典型 Linux系统中组成引导时间的各单元:

图 6: Linux 系统中的引导时间阶段

下图描述典型裸机应用的引导时间:

8 引导的持续时间AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 9: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 7: 一个裸机应用的引导时间阶段

注意: 上图未按比例绘制—每个阶段都以同样大小描述。

优化引导持续时间

推荐的优化引导时间的方法包含:

• 测量引导时间的总时长。例如,用一个范围或逻辑分析器监控在应用之初翻转的复位信号和自定义信号。

• 测量尽可能多的单独步骤的用时,以了解哪里用时最多。• 如有可能,优化耗时最长的步骤。通常上层级别所花时间长于低层级别。

以下部分说明了影响 Boot ROM持续时间的一些因素:

硬件上电顺序这是影响引导时间的最小因素,也无需优化。 实际上它受 OSC1输入时钟频率影响,但因为太小,所以它的持续时间不一定改变 OSC1 值。

Boot ROM

影响 Boot ROM持续时间的原因如下:

• OSC1时钟频率(对于设置 PLLs以前或当使用 CSEL=00时的部分)• 时钟选项(由 CSEL管脚选择)• 引导源(SD/MMC,QSPI,NAND或 FPGA – 由 BSEL管脚选择)• 外部闪存器件的性能• 预加载器映像大小

可调整以上参数以优化 Boot ROM的持续时间。例如,应该选择 OSC1和 CSEL,因而MPU和外部闪存都可使用时钟最大值。

另举一例- 调整预加载器使其变小。预加载器越小,Boot ROM从内存加载它所消耗的时间越少。

从 FPGA选项引导时预加载器的加载时间被减少到零。但先要设置 FPGA才能实现,而设置也需要消耗时间。

相关链接

引导和配置

AN-7092016.01.27 优化引导持续时间 9

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 10: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

预加载器

影响预加载器持续时间的要素如下:

• 下一引导阶段的位置• 下一引导阶段映像的大小• SDRAM的速度 (因为预加载器把映像从闪存加载到 SDRAM)• 闪存的速度• 多种预加载器选项:

• SDRAM擦拭• 硬件诊断• 查看下一引导阶段映像的 CRC• 串行日志记录• 编程 FPGA

为了减短预加载器持续时间,可以调整以上参数。例如,

• 减小下个引导阶段的大小(例如从 U-Boot移除不需要的网络支持)• 使用更快的闪存 (这将需要改变预加载器源代码—Preloader Generator中没有该选项)• 禁用已使能的硬件诊断 (取消 Preloader Generator中的 HARDWARE_DIAGNOSTIC)• 禁用串行控制台输出- (取消 Preloader Generator中的 SERIAL_SUPPORT)• 禁用下一引导阶段映像的 CRC(取消 Preloader Generator中的 CHECKSUM_NEXT_IMAGE )

如果在 Preloader里选择了 FPGA Programming,则以下因素也会影响持续时间:

• FPGA 映像的位置(QSPI或 SD卡 FAT分区)• FPGA映像的大小(压缩可显著缩短持续时间)

引导加载器

影响引导加载器持续时间的因素如下:

• 下一个被加载阶段的大小(以 Linux内核为例)• 下一个阶段的位置(闪存, 网络, 等)• 是否使能网络,并且它是否被配置为静态或动态(DHCP)• 是否 FPGA编程也被执行• SDRAM的速度• 倒计时计数器(3) (U-Boot 中默认为 5秒– 可因生产系统被禁用)

Linux 内核可以加快 Linux内核开启,且 Linux community中有大量关于如何实现这一目标的材料。例如,移除调试性能及各种不必要的驱动器和特性。

Init 脚本可以通过减少 init 脚本中完成的工作量来优化引导时间。如有可能,既可移除不必要的功能性,又或者将其滞后,如有可能。

(3) 可以调整它以实现更快引导

10 预加载器AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 11: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

引导持续时间的测量

本节介绍 Cyclone V Development Kit中引导时间的多种测量。 仅测量 Boot ROM和预加载器。

通过以下设置完成测量:

• SoC EDS 14.1b182: 为 GHRD & 预加载器• Altera Cyclone V Development Kit,Rev D• Kingston 4GB Class10 SD卡• 512 MB Micron QSPI• 预加载器 大小= 38,548字节• U-boot 大小= 238,316字节

注意: 全部持续时间以毫秒计。

表 2: CSEL 选项的 Boot ROM 持续时间

下表格介绍不同 CSEL选项的 Boot ROM持续时间,包括 SD/MMC和 QSPI。源 CSEL=00 CSEL=01 CSEL=10 CSEL=11

SD/MMC 168.86 N/A 72.43 103.06

QSPI 110.44 28.09 24.56 13.9

表 3: SD/MMC 和 QSPI 预加载器持续时间

本表格介绍了预加载器的标准持续时间,包括 SD/MMC和 QSPI。源 CSEL=00 CSEL=01 CSEL=10 CSEL=11

SD/MMC 142.88 N/A 136.67 137.17

QSPI 136.4 130.94 130.84 130.27

注意: CSEL也影响预加载器的持续时间,但少于 Boot ROM。

表 4: 移除串行支持后,预加载器的持续时间

本表介绍了串行支持被移除后,预加载器的持续时间为:源 CSEL=00 CSEL=01 CSEL=10 CSEL=11

SD/MMC 93.58 N/A 87.26 87.81

QSPI 79.08 73.27 73.08 72.53

表 5: 移除串行支持和 CRC 之后的预加载器持续时间

本表介绍了串行支持和下个阶段的 CRC皆被移除后,预加载器的持续时间。源 CSEL=00 CSEL=01 CSEL=10 CSEL=11

SD/MMC 71.25 N/A 65.04 65.48

QSPI 56.44 50.61 50.82 50.25

AN-7092016.01.27 引导持续时间的测量 11

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 12: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

表 6: 当在下一个阶段使用有一个 FAT 分区的 SD/MMC 卡时,Boot ROM 和预加载器的持续时间

本表介绍了为下个引导阶段而使用了一个 FAT分区的 SD/MMC卡时,Boot ROM和预加载器的持续时间

注意: 新的预加载器大小为 42,268字节。

源 CSEL=00 CSEL=01 CSEL=10 CSEL=11

BootROM 183.85 N/A 78.23 113.80

预加载器: SD +FAT

78.56 N/A 75.65 75.93

注意: 串行支持和下个映像区域的 CRC皆被移除

表 7: FPGA 编程持续时间

本表介绍了从被预加载器执行时,FPGA编程的持续时间。未被压缩的 FPGA映像为 7,007,248字节,而被压缩的 FPGA映像为 2,335,334字节。

FPGA 映像源 未压缩映像 已被压缩的映像

QSPI 1,374 473

SD-FAT 563 223

表 8: 预加载器两个可选操作的持续时间

活动 持续时间

硬件诊断(存储器测试) 2,640

SDRAM擦拭 (16 MB) 25

引导调试

本节介绍了一些有助于调试引导过程的技巧,包括 Boot ROM和预加载器方面。引导流程的其余部分是通用的,可采用通用技巧调试。

Boot ROM

因为 Boot ROM是第一引导阶段,所以最常见的引导失败症兆是什么都没发生。例如,系统没有引导,预加载器(如已使能)中 UART没有活动。

出现引导问题时,首先查看冷引导。热引导比较多样,但取决于软件如何配置芯片,失败方式可能各有不同。 按下冷复位按钮(如有)或者通过电路班板电源循环和器件均可开始冷引导。

以下情况可能导致热引导失败,但不影响冷引导:

12 引导调试AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 13: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

• 应用软件错误地使能热 RAM Boot• 应用软件没有根据使用情况相应改变热复位选项• 作为引导源的 QSPI,热复位时没有复位。但 Boot ROM需要闪存大于 16MB 的 QSPI器件复位。

另外要查看 HPS是否工作。通过连接一个调试器来完成(如果电路板上有 JTAG连接)。 如果调试器连接可靠,那么 HPS正常。

如果调试器连接可用,可通过连接调试器和电路板,然后从 Boot ROM和预加载器维护的寄存器获得更多信息,以此断定发生了什么。寄存器都在 sysmgr.romcodegrp中,包括如下:

• initswstate- 紧临跳转至下个有效引导阶段前,预加载器写入特殊值 ‘0x49535756’。没有该值则说明预加载器没有跳转至下个引导阶段。

• initswlastld- 包含上一次预加载器软件映像索引,该索引由引导器件中的预加载器加载。总共有 4个预加载器映像。

• bootromswstate- 有关 BootROM状态的信息,包括:

• Bit 0: 如果设置,说明 BootROM尝试了全部映像但都不工作。• Bit 1: 如果设置,说明预加载器曾被开启(不然则是它可能已经开启失败)。• Bits 11:8: 哪个内存引导源被使用过:

• NAND: 0• SD/MMC: 1• QSPI: 2

注意: 关于 bootromswstate的内容在 BootROM未来的版本中可能会有改动。

如果没有调试器连接,但又被要求从闪存引导,那么只要电路板上可观察到闪存信号,就能监控到它们的活动。如果闪存线上有活动,那么 HPS很可能正常。

如仍不清楚 HPS是否正常,则可以验证电源,时钟和复位信号。检查电源供应的电压是否正确,是否存在过大噪声,上电时序如何。使用示波器查看输入时钟的振幅,频率和过多振动。查看复位信号以确保他们正确。

如果 HPS正常但 Boot ROM 似乎不能成功加载预加载器,则可能是以下原因之一:

• 预加载器映像在闪存中被损坏,Boot ROM无法加载。• 闪存中预加载器的映像正确,但与闪存通信失败。• 预加载器被正确加载,但未按要求工作,或因软件缺陷而崩溃。

为减低与闪存通信发生问题的可能性,如果电路板上可以配置,就将 CSEL 设置到 00。这就阻止了 Boot ROM重新编程 PLLs,同时也迫使 Boot ROM用尽可能的最慢速与闪存器件通信。

闪光线(如有)可用示波器和/或逻辑分析器检测,以找寻类似信息:

• 通信多久?Boot ROM是否快速放弃通信,还是有很多通信?如果它轻易放弃通信,这可能说明问题非常显著。

• 信号电平看起来是否正确?查看电压水平振铃,上升和下降时间。• 如果使用逻辑分析器,且选项可用,则尝试解码 HPS和闪存器件之间的通信,从而知道通信是否失败或如何失败。

如果以上步骤不足以诊断问题所在,但有可用的调试器连接,则 OCRAM上层 4KB内容可从调试程序倒出,Altera可以拿来分析,于是得到诸如“Boot ROM初始化 SD卡失败”的信息。大多数时候,可以通过观察外在行为和上述提及的寄存器得到相同信息。

AN-7092016.01.27 Boot ROM 13

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 14: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

预加载器

因为全部源代码都可用,所以预加载器比 Boot ROM容易调试得多。

可使用以下通用技巧:

• 有 JTAG连接的系统中,可使用调试器调试预加载器。• 另外,可修改代码并通过串行连接(如有),或通过翻转 LED和多种其他信号以输出更多调试信息。

当 Preloader Support Package Generator生成预加载器时,也自动创建文件 preloader.ds。开发人员可以凭此文件通过 JTAG连接使用 ARM DS-5 AE调试预加载器。

注意: 因为 ELF格式是可执行文件,所以可使用任何兼容的调试器。

从 ARM DS-5 AE 调试预加载器

以下是从 ARM DS-5 Ae调试预加载器的必要步骤:

1. 编译硬件设计来得到交付文件。2. 从 Preloader Support Package Generator生成预加载器,预加载器文件夹中创建 preloader.ds和

uboot.ds文件 。3. 编译预加载器获得可执行文件。4. 用 USB串行接口连接电路板和主机 PC(以便看到预加载器串行输出)。5. 使用 USB Blaster或者 ARM DSTREAM把电路板连接到 PC。6. 开始 ARM DS-5 AE,并选择您的工作区(如有询问)。7. 在 DS-5 AE中,前往 Run > Debug Configurations,打开 Debug Configurations窗口。8. 创建一个新的调试配置,右键单击左边仪表板中的 DS-5调试器,选择 New。9. 编辑 Name域,重命名调试预加载器中新的调试配置。10.在 Debug Configuration窗口的“Connection”标签中选择目标为 Altera > Cyclone V SoC (Dual

Core) > Bare Metal Debug > Debug Cortex A9_0。11.选择目标连接为 USB-Blaster或 DSTREAM。12.点击"Connections”组中 Browse按钮,选择所需要的连接,然后点击 Select。13.在 Debug Configurations窗口的“Debugger”标签中,选择"Run Control”下的 Connect Only选项。

14.在同一个标签中,查看选项 Run调试初始化调试器脚本,然后点击 File System …按钮,浏览预加载器生成器创建的 preloader.ds文件。

15.点击 Debug按钮。 随之 Debug Configurations窗口将关闭,并开始一个调试会话。然后使用常用调试技巧。

相关链接ARM DS-5 Altera Edition关于 ARM DS-5 的更多信息,包括导入和构建项目, 请参阅 SoC EDS用户指南。

U-Boot调试 U-boot与调试预加载器非常相似。 可使用相同技巧。

14 预加载器AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 15: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

Preloader Support Package Generator在预加载器文件夹中创建文件 uboot.ds,这样便可在 ARMDS-5 Ae中调试 U-Boot。 因为 ELF格式是可执行文件,所以可使用任何兼容的调试器。

引导实例

本章节介绍多个可在 Cyclone V SoC 开发套件中运行的引导实例。

• 从 SD/MMC引导- 使用 raw和 FAT分区• 从 QSPI引导• 从 FPGA引导

全部实例中,都用预加载器加载和运行一个简单的裸机应用。引导流程描述如下图:

图 8: 引导流程

存档文件内容

本文档有一个附带的存档文件,该文件包括了本章节中复制实例时所需要的全部源代码,以及不用构建即可运行实例所需的全部二进制文件。

此存档文件名为 cv_boot_guide.zip并包含以下内容:

AN-7092016.01.27 引导实例 15

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 16: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

• prebuilt

• application

• hello-mkimage.bin

• fpga

• soc_system.sof

• preloaders

• sd_custom_partition

• preloader-mkpimage.bin

• sd_fat_partition

• preloader-mkpimage.bin

• qspi

• preloader-mkpimage.bin

• fpga

• preloader-mkpimage.bin

• sources

• cv_soc_devkit_boot_fpga_rd

• Altera-SoCFPGA-HardwareLib-Unhosted-CV-GNU.tar.gz

相关链接cv_boot_guide.zip

裸机应用所有实例中使用的裸机应用都是通过 UART仅显示 Hello World的消息。

此应用作为一个可导入的工程(称作 Altera-SoCFPGA-HardwareLib-Unhosted-CV-GNU.tar.gz)包含在内。它也可从 SoC实例设计网页中下载。

导入 ARM DS-5 AE 中的项目存档文件并构建它。随之创建文件 hello-mkimage.bin, 它将是被预加载器加载的映像。

相关链接

• ARM DS-5 Altera Edition关于 ARM DS-5 的更多信息,包括导入和构建项目, 请参阅 SoC EDS用户指南。

• SoC设计实例网页更多信息请浏览 SoC设计实例网页。

从 SD/MMC 引导 –自定义分区本实例演示了,把裸机映像与预加载器存储在同一个 SD卡自定义分区时,如何从 SD卡引导。

开始之前

为避免出现"Device Open Failed!"错误信息,请您务必在以下用户模式中操作:

16 裸机应用AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 17: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

• Windows — "Administrator mode user"• Linux — "sudo mode"

运行该情形所需要的步骤是:

1. 构建裸机应用样本,或直接使用已提供的 hello-mkimage.bin文件。2. 以 SoC EDS中的 GHRD为基础生成一个预加载器。请务必选择如下选项:

• 查看选项 spl.boot.BOOT_FROM_SDMMC• 取消查看其他引导选项 (spl.boot.BOOT_FROM_RAM, spl.boot.BOOT_FROM_QSPI,

spl.boot.BOOT_FROM_NAND)

注意: spl.boot.SDMMC_NEXT_BOOT_IMAGE = 0x40000. 存储裸机应用映像需要存储在这里。• 查看选项 spl.boot.SDRAM_SCRUBBING 和 spl.boot.SDRAM_SCRUB_REMAIN_REGION。SDRAM将因此而归零,以避免在裸机程序执行时出现任何 ECC错误。

• 取消选项 spl.boot.WATCHDOG_ENABLE。因为将不在裸机应用里喂狗(kicking thewatchdog)。

3. 编译预加载器。从而创建 文件 preloader-mkpimage.bin文件。4. 使用 fdisk,或使用 SoC EDS中的 SD卡映像实例,在 SD卡中手动创建一个 id=A2自定义分区:

• 使用 Embedded Command Shell中的 ‘tar -xzf<filename>’ 命令解压缩<SoCEDS

installation folder>:\embedded\embeddedsw\socfpga\prebuilt_images\sd_

card_linux_boot_image.tar.gz中的 SD卡映像。同时将创建 文件sd_card_linux_boot_image.img。

• 使用空闲的Win32DiskImager工具把文件 sd_card_linux_boot_image.img写入 SD卡。5. 利用 SoC EDS中的 SD卡引导工具只写入预加载器映像到 SD卡自定义分区:

• 开启一个 Embedded Command Shell。• 运行命令 “alt-boot-disk-util -a write -p preloader-mkpimage.bin -b

hello-mkimage.bin -d <sd_card_drive_letter>”6. 要设置电路板从 SD卡引导,需为 BOOTSEL跳线作如下配置:

• BOOTSEL0 (J28): 左• BOOTSEL1 (J29): 右• BOOTSEL2 (J30): 左

7. 使用 USB串行把电路板连接到 PC,并使用 115,200-8-N-1在 PC上开启一个串行终端设备。

8. 将 SD卡插入电路板插槽并上电电路板或者按下冷复位钮(S7)复位 HPS。

电路板引导,出现预加载器信息,裸机应用将显示“Hello World”。

AN-7092016.01.27 从 SD/MMC 引导 –自定义分区 17

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 18: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 9: 自定义分区

相关链接

• Altera SoC EDS Embedded Design Suite User Guider更多关于 SoC EDS,ARM DS-5,Preloader Generator和 SD Card Boot Utility信息, 请参阅 SoCEDS User Guider。

• Win32 Disk Imager

从 SD/MMC 引导 – FAT 分区本实例演示当裸机映像存储在 SD卡的 FAT分区时,如何从 SD卡引导。

注意: 预加载器仍然存储在自定义分区。

开始之前

为避免出现"Device Open Failed!"错误信息,请您务必在以下用户模式中操作:

• Windows — "Administrator mode user"• Linux — "sudo mode"

18 从 SD/MMC 引导 – FAT 分区AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 19: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

运行该情形所需要的步骤是:

1. 构建裸机应用样本,或只是直接使用已提供的 hello-mkimage.bin文件。2. 以 SoC EDS提供的 GHRD 为基础生成一个预加载器。请务必选择以下选项:

• 查看选项 spl.boot.BOOT_FROM_SDMMC• 取消查看其他引导选项(spl.boot.BOOT_FROM_RAM, spl.boot.BOOT_FROM_QSPI,

spl.boot.BOOT_FROM_NAND)。

• 查看选项 spl.boot.FAT_SUPPORT。从而告知预加载器从 FAT分区加载裸机应用。• 编辑域 spl.boot.FAT_LOAD_PAYLOAD_NAME 以包含裸机映像的名称: hello-mkimage.bin。• 查看选项 spl.boot.SDRAM_SCRUBBING 和 spl.boot.SDRAM_SCRUB_REMAIN_REGION。SDRAM将因此归零,以防止执行裸机程序时出现任何 ECC错误。

• 取消查看选项 spl.boot.WATCHDOG_ENABLE。因为将不在裸机应用中喂狗(kicking thewatchdog)。

3. 编译预加载器。从而创建文件 preloader-mkpimage.bin文件。4. 使用 fdisk,或 SoC EDS中的 SD卡映像实例,在 SD卡中手动创建一个 id=A2自定义分区:

• 使用 Embedded Command Shell中的 ‘tar -xzf<filename>’ 命令解压缩<SoCEDS

installation folder>:\embedded\embeddedsw\socfpga\prebuilt_images\sd_

card_linux_boot_image.tar.gz中的 SD卡映像。同时将创建 文件sd_card_linux_boot_image.img。

• 使用空闲的Win32DiskImager工具把文件 sd_card_linux_boot_image.img写入 SD卡。5. 利用 SoC EDS中的 SD卡引导工具把预加载器映像和裸机应用映像都写入 SD卡自定义分区中:

• 启动 Embedded Command Shell。• 运行命令“alt-boot-disk-util -a write -p preloader-mkpimage.bin -d

<sd_card_drive_letter”。6. 为了从Windows Explorer中拖曳和丢弃实例,写裸机应用映像到 SD卡的 FAT分区。7. 要设置电路板从 SD卡引导,需为 BOOTSEL 跳线作如下配置:

• BOOTSEL0 (J28): 左• BOOTSEL1 (J29): 右• BOOTSEL2 (J30): 左

8. 使用 USB串行连接把电路板连接到 PC,并使用 115,200-8-N-1在 PC上开启一个串行终端设备。

9. 把 SD卡插入电路板插槽,并上电电路板或按下冷复位钮(S7)复位 HPS。

电路板引导,出现预加载器信息,裸机应用将显示“Hello World”。

AN-7092016.01.27 从 SD/MMC 引导 – FAT 分区 19

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 20: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 10: FAT 分区

相关链接

• Altera SoC EDS Embedded Design Suite User Guider更多关于 SoC EDS,ARM DS-5,Preloader Generator和 SD Card Boot Utility信息, 请参阅 SoCEDS User Guider。

• Win32 Disk Imager

从 QSPI 闪存引导本实例演示如何从 QSPI 闪存引导。预加载器和裸机应用都存储在 QSPI 闪存中。

运行该情形所需要的步骤是:

1. 构建裸机应用样本,或直接使用已提供的 hello-mkimage.bin文件。2. 以 SoC EDS中的 GHRD 为基础生成一个预加载器。请务必选择以下选项:

20 从 QSPI 闪存引导AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 21: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

• 查看选项 spl.boot.BOOT_FROM_SDMMC。• 取消查看其他引导选项(spl.boot.BOOT_FROM_RAM, spl.boot.BOOT_FROM_SDMMC,

spl.boot.BOOT_FROM_NAND)。

注意: spl.boot.QSPI_NEXT_BOOT_IMAGE = 0x60000。裸机应用映像将需要存储在这里。• 查看选项 spl.boot.SDRAM_SCRUBBING 和 spl.boot.SDRAM_SCRUB_REMAIN_REGION。SDRAM将因此归零,以防止执行裸机程序时出现任何 ECC错误。

• 取消查看选项 spl.boot.WATCHDOG_ENABLE。 因为将不在裸机应用里“喂狗”(kicking thewatchdog)。

3. 编译预加载器。从而创建 文件 preloader-mkpimage.bin。4. 要设置电路板从 SD卡引导,需为 BOOTSEL跳线作如下配置:

• BOOTSEL0 (J28): 左• BOOTSEL1 (J29): 左• BOOTSEL2 (J30): 左

5. 把电路板中的 USB Blaster USB cable连接到主 PC。HPS Flash Programmer需要在下一个步骤时使用它。

6. 开启 Embedded Command Shell 写预加载器和应用映像到 QSPI闪存中,然后运行以下命令:

• quartus_hps -c 1 -o PV preloader-mkpimage.bin

• quartus_hps -c 1 -o PV preloader-mkpimage.bin

7. 上电电路板或者按下冷复位钮(S7)复位 HPS。

电路板引导,出现预加载器信息,裸机应用将显示“Hello World”。

AN-7092016.01.27 从 QSPI 闪存引导 21

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 22: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 11: 从 QSPI 闪存引导

相关链接Altera SoC EDS Embedded Design Suite User Guider更多关于 SoC EDS,ARM DS-5,Preloader Generator和 SD Card Boot Utility信息, 请参阅 SoC EDSUser Guider。

从 FPGA 引导本节完整介绍了一个如何从 FPGA引导的实例。

被指令从 FPGA引导时,Boot ROM 执行以下操作:

1. 等待 FPGA架构被设置2. 等待 FPGA处入用户模式3. 打开 HPS-to-FPGA桥接4. 跳转至地址 0xC0000000 (从 HPS-to-FPGA桥接偏移 0)

概述

本实例中,我们在 FPGA中运行预加载器,但随后它将加载 SD/MMC自定义分区中的裸机映像。如需要,也可设置预加载器跳转一个绝对地址,并且也可能被放置到 FPGA 架构地址空间中。

本实例引导流程描述如下:

22 从 FPGA 引导AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 23: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 12: 引导流程

要实现从 FPGA引导,需满足以下要求:

• BSEL 需要设置到 0x1—从 FPGA引导。• FPGA映像需要在 HPS2FPGA桥接后的偏移 0x0例化和映射一个片上存储器。 该存储器需要用预加载器可执行的二进制加载。

• FPGA映像需要为 HPS驱动以下两个信号的值,因为 Boot ROM需要它们:

• f2h_boot_from_fpga_ready—如果 BSEL = 0x1,说明 Boot ROM 可以从 FPGA引导。• f2h_boot_from_fpga_on_failure—如果它在所选的 BSEL 中引导失败,说明 Boot ROM可以从后备 FPGA引导。

• 预加载器可执行(.text) 部分需要链接到地址 0xC0000000 (等同于 HPS2FPGA桥接后偏移 0x0)• 预加载器可执行(.data) 部分需要链接到地址 0xFFFF0000 (the HPS OCRAM)

完整流程描述如下图:

图 13: 完整流程

注意: 需要编译设计一次以获得交付文件夹,用来生成预加载器。一旦获得 Preloader hex文件,将再次编译设计以得到用 hex文件内容初始化的 FPGA存储器。

AN-7092016.01.27 概述 23

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 24: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

硬件设计本节介绍了本实例中曾使用过的一个非常简单的硬件设计。 您需要在主 PC安装 ACDS才能复制该实例。

注意: 本指南中已有此设计。用户无需再创建。但如果预加载器 hex文件被变动,则需要再次编译此设计。

设计以 Altera GHRD为基础,其中部件数有所减少:

• HPS- 硬处理器实例• SysID- 系统 ID• HPS Boot Memory- 用作存储预加载器二进制的 FPGA存储器• Clk- 时钟和复位源

24 硬件设计AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 26: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 15: 使能 FPGA 信号引导

HPS引导存储器需要设置成 8位数据宽度,并且被包含预加载器映像的 hex文件初始化。以下截屏列出了本实例已使用的储存器设置。

注意: 预加载器映像存储在名为 software/spl_bsp/preloader.hex的文件中。

26 硬件设计AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 28: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

注意: • 双击导出栏中相应单元格导出 HPS总线 f2h_boot_from_fpga 。• HPS引导存储器是连接到 h2f AXI总线的。• HPS引导存储器被设置到 0x0000000基址。• f2h_boot_from_fpga 信号需要与高层级别中的合适值绑定。在此实例中,它们被绑定到文件:rd_top.v:

// SoC sub-system modulesoc_system soc_inst ( ... .hps_0_f2h_boot_from_fpga_boot_from_fpga_ready (1'b1), .hps_0_f2h_boot_from_fpga_boot_from_fpga_on_failure (1'b0));

构建和运行实例本节介绍了构件和运行从 FPGA 引导的实例所需步骤。

注意: 本文档附带存档文件中有全部二进制。

开始之前

为避免出现"Device Open Failed!"错误信息,请务必在以下用户模式中操作:

• Windows — "Administrator mode user"• Linux — "sudo mode"

1. 构建裸机应用样本,或直接使用已提供的 hello-mkimage.bin文件。2. 编译 Quartus® Prime中提供的从 FPGHA 硬件引导的设计,以创建交付信息。3. 在编译过的硬件项目基础上生成预加载器。选择如下选项:

• 查看选项 spl.boot.BOOT_FROM_SDMMC 。• 取消查看其他引导选项 (spl.boot.BOOT_FROM_RAM, spl.boot.BOOT_FROM_QSPI,

spl.boot.BOOT_FROM_NAND)。• 取消查看选项 spl.boot.FAT_SUPPORT. 从而告知预加载器加载自定义分区中的裸机应用。

注意: spl.boot.SDMMC_NEXT_BOOT_IMAGE = 0x40000。裸机应用映像需要存放在这里。• 查看选项 spl.boot.SDRAM_SCRUBBING 和 spl.boot.SDRAM_SCRUB_REMAIN_REGION。 SDRAM将因此归零,以避免执行裸机程序时出现任何 ECC错误。

• 取消查看选项 spl.boot.WATCHDOG_ENABLE。因为将不在裸机应用里“喂狗”(kicking thewatchdog)。

• 查看选项 spl.boot.EXE_ON_FPGA。4. 编译预加载器,从而将创建预加载器可执行文件。5. 使用预加载器文件夹中的命令把预加载器可执行转换成 hex文件: arm-altera-eabi-objcopy

-O ihex --adjust-vma -0xc0000000 uboot-socfpga/spl/u-boot-spl preloader.hex

6. 再次编译硬件设计,把新创建的 hex文件加入考虑之中。

注意: hex文件需要位于<hardware_design_folder>/software/spl_bsp/preloader.hex中。以此创建文件<hardware_design_folder>/output_files/soc_system.sof。

7. 使用 fdisk, 或 SoC EDS中的 SD卡映像实例,在 SD卡中手动创建一个 id=A2自定义分区:

28 构建和运行实例AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈

Page 29: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

• 使用 Embedded Command Shell中的 ‘tar -xzf<filename>’ 命令解压缩<SoCEDS

installation folder>:\embedded\embeddedsw\socfpga\prebuilt_images\sd_

card_linux_boot_image.tar.gz中的 SD卡映像。以此创建文件sd_card_linux_boot_image.img。

• 使用空闲的Win32DiskImager工具写入文件 sd_card_linux_boot_image.img到 SD卡。8. 利用 SoC EDS中的 SD卡引导工具写入裸机应用映像到 SD卡自定义分区:

• 启动一个 Embedded Command Shell。• 运行命令 “alt-boot-disk-util -a write -b hello-mkimage.bin -d

<sd_card_drive_letter>”9. 配置 Cyclone V电路板从 FPGA引导,需为 BOOTSEL跳线作如下配置:

• BOOTSEL0 (J28): 左• BOOTSEL1 (J29): 右• BOOTSEL2 (J30): 右

10.使用 USB串行连接把电板连接到 PC,并使用 115,200-8-N-1在 PC上开启一个串行终端设备。

11.SD卡插入电路板。12.上电电路板。串行终端的电路板上无反应,因为没有配置 FPGA,所以 Boot ROM不会跳转到 FPGA。

13.用 Quartus PrimeProgrammer以及(.sof)文件配置 FPGA。

注意: (.sof)文件已包含在本卷附带的存档文件中。14.按下 HPS冷复位钮(S7)。15.串行控制台将显示预加载器正在 FPGA中运行,同时裸机应用正在 SD卡中运行。

AN-7092016.01.27 构建和运行实例 29

HPS SoC 引导指南 - Cyclone V SoC 开发套件 Altera 公司

反馈

Page 30: HPS SoC引导指南 - Cyclone V SoC开发工具 - Intel · 更多关于Boot Room 根据CSEL 管脚选择 SD/MMC 时钟选项的信息,请参看Cyclone V 技术参考 手册的引导和配置章节。

图 17: FPGA 中运行的预加载器的串行控制台

相关链接Win32 Disk Imager

文档修订历史

表 9: 文档修订历史

日期 版本 修订内容

2016年 1月 2016.01.27 添加了注释以提示用户要在 administrator或 sudo模式中使用 alt-boot-disk-util

2015 年 4 月 2015.04.27 • 更新了 SD卡引导工具命令• 修订了"BootROM"的错误拼写

2015 年 3 月 2015.03.26 修复了损坏的链接。

2014 年 12 月 2014.12.15 添加了引导时间优化和引导调试的信息。

30 文档修订历史AN-709

2016.01.27

Altera 公司 HPS SoC 引导指南 - Cyclone V SoC 开发套件

反馈