翻译原文来自:https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide

 

本指南将一路带着您完成从Altera SoC的自定义设计到新的嵌入式Linux设备的设计。

 

不管您当前的SOC FPGA 的技能水平如何(哪怕是对Intel SoC的linux嵌入式一点不熟悉,或是对一般的linux嵌入式也不熟悉),都可以参考我们这个指南,因为我们在描述每个步骤时都有给出详细的解释,对于那些需要额外说明的部分,我们也给出了可跳转的link供您拓展相关知识。

 

先决条件

  • 本指南将使用 DE0-Nano-Soc (又名Atlas)开发板。其实我们这个指南的大部分流程也可适用于任何Intel SoC产品。开发板之间的主要区别在于 GHRD工程(LED 数量、引脚分配等)和设备树。当您设计这些部分时,需要对其进行修改(其实有些开发板制造商比如友晶科技TERASIC会随板提供设计好的可以直接参考的自定义 GHRD 和设备树及 XML 文件等)。

 

  • 要有Quartus/Qsys 的基本使用经验以及知道如何使用 Linux系统。

 

  • 一张空白的 microSD 卡和 microSD 卡 的USB接口读卡器(或支持 microSD 卡的笔记本电脑)。

 

  • 一台Linux PC,要具有两个 USB 端口,且sudo下支持这些功能(支持这些命令mount、umount、fdisk、losetup、partprobe 和 dd)。

 

  • 所需的 Intel 软件(Quartus 和SoC EDS)。您不需要安装 DS-5:我们将手动编写我们的 makefile。本指南使用软件 v15.0 完成。

 

 

  • 一个终端模拟器程序

 

指南内容


1. 硬件(Quartus/Qsys)设计概述

 

2. 核心概念和启动流程

 

3. 生成preloader

 

4. 配置和编译 U-Boot

 

5. 生成并编译设备树

 

6.先创建一张 SD 卡并测试设计

 

7. 配置和编译 Linux 内核

 

8. 生成根文件系统

 

9. 测试最终的硬件系统

 

10. 创建用户空间软件应用程序

 

11. 创建内核空间设备驱动程序

 

如果您一时还不能理解上面所用到的像设备树、U-Boot等这些名词也不要担心,因为后面在用到的时候我们都会给予解释。

 

在 DE0-Nano-SOC Board 上设置 MSEL 开关

 

这个很重要!如果您没有正确设置这些,FPGA 将不会被配置!

 

为了能够让处理器(它其实就是普通的嵌入式linux系统在SoC上运行)顺利配置FPGA,MSEL 开关需要全部置于“ON”(也称为 0)位置。这将告诉处理器以“FPP x16”模式对 FPGA 进行配置,如 DE0-Nano-SOC用户手册(第 13 页)中所述,这与生成 .rbf 文件时的模式相同(在下一章节末尾会描述相关内容)。.rbf 文件是用于配置 FPGA 的原始二进制比特流文件。

 

 

 

如果MSEL的模式与生成rbf时选择的模式不匹配,引导加载程序bootloader 将报错误,然后继续引导 Linux(这很可能会一直引导下去,以至于到了后面用户可能会忘记他们的 FPGA 从未被配置这件事)。如果您创建一个压缩的 .rbf 文件(比如使用从 GHRD工程提供给您的文件,这些文件通常是压缩的),您需要将 MSEL 开关更改为“ON-OFF-ON-OFF-ON-ON”。