复旦微 FMQL Linux SDK实验(一)

目录

·实验前提:

1.vivado2018.3下:

2.IAR8.2下:


·实验前提:

1.vivado2018.3下:

1.1 Linux 系统的启动过程

如图所示,通过 FMQL 启动 Linux 系统的过程可分为三个阶段:

(1)第一阶段是 bootrom。开发板上电后首先执行片内的 bootrom 代码,bootrom会判断启动方式(QSPI/ NAND/ SD/ JTAG),并从相应的设备加载 FSBL 到 RAM, 最后将执行权交付给 FSBL。
(2)第二阶段是 bootloader。首先执行 FSBL(First Stage Bootloader):初始化CPU,PS 的一些控制器(如 MIO/ PLL/ CLK/ DDR)等,判断启动方式,初始化对 应的设备并加载设备中的应用程序(u-boot),最后跳转到该程序。然后执行 u-boot, 在 FMQL 中,u-boot 主要用于引导 Linux 操作系统。
(3)第三阶段进入 Linux 内核并挂载根文件系统。

1.2编译和启动 u-boot

u-boot 是德国 DENX 小组开发的用于多种嵌入式 CPU 的 bootloader 程序。当前,u-boot 不仅支持嵌入式 Linux 系统的引导,它还支持 NetBSD、VxWorks、QNX、RTEMS、ARTOS、LynxOS 嵌入式操作系统。u-boot 除了支持 ARM 系列的处理器 外,还支持 MIPS、x86、PowerPC 等诸多常用系列处理器。本章内容中,u-boot 用 于引导 Linux 操作系统。 Linux SDK 提供的 u-boot 源码位于“ u-boot-2018.07-fmsh”目录下,其中的文件 如下图所示。

打开其中 Makefile 文件,可以查看 u-boot 的版本信息。

1.2.1 创建 Procise 工程

(1)使用 Procise 新建一个工程。然后双击 Block Design 中的 processing_system7, 打开 FMQL 配置界面,如下图所示,在 MIO Configuration 中勾选 SD 0,使用MIO[40:45],勾选 CD(Card Detect)使用 MIO[47],WP 使用 MIO[48],对于高速卡 将 speed 设置为“fast”,并设置 Bank 1 电压为 LVCOMS1.8V。

(2)勾选 UART 0,使用 MIO[8:9],并采用默认配置。

(3)设置完毕后保存所有文件,然后如下图所示,右键选择 system.bd 文件, 选择 Generate Output Products...

(4)点击 Procise 菜单栏 PSOC,选择 Repositories。如下图所示,正确安装 Procise后会存在一个默认的 repo,如果需要替换 repo,可以通过 Remove 和 New 按钮操作。 注意:只能有一个仓库,否则导出硬件会报错。

(5)导出硬件。方法是右键选择 system.bd 文件,选择 Export Hardware...,然后勾选 FSBL 和 DeviceTree。

1.2.2 制作设备树文件

u-boot 的启动依赖设备树文件提供的硬件信息。设备树,即 Device Tree,是一 种描述硬件配置的树形数据结构,由一系列被命名的结点(node)及其属性(property) 组成,且结点又可以包含子结点。它包含了有关 CPU、物理内存、总线、串口、PHY以及其他外围设备信息等。操作系统能够对此结构进行语法分析,以此配置内核, 加载相应的驱动。硬件的配置信息在 dts(Device Tree Source)文件中编辑。经过 dtc(Device Tree Compiler)工具的编译,将由 dts 生成 dtb(Device Tree Blob)文件。

设备树文件的制作方法为:

(1)在 Procise 工程文件夹的“....../SDK/system_platform/”目录下找到生成的DeviceTree 文件夹。

(2)将 DeviceTree 文件夹复制到 Linux 虚拟机的任意目录下,例如下图,复制 到的目录为“/project/FMQL/”。

3)在 Linux 虚拟机中,进入“FMQL-Linux-SDK”目录,打开命令行窗口, 输入命令“source env.sh”,设定所需环境变量。

        1>将FMQL-Linux-SDK复制到虚拟机下;
        2>使用git checkout -- .;
        3>source env.sh;
        4>./build.sh --hw /home/{username}/project/FMQL/DeviceTree/ --nofpga dtb;

注意:如果没有配置 PL 部分,务必加上“--nofpga”,因为默认状态是配置 PL部分的。

1.2.3 编译 u-boot

下边介绍编译 u-boot 的方法(注意命令中的空格):
(1)在“FMQL-Linux-SDK/”目录下,打开命令行窗口,输入命令“source env.sh”, 设定环境变量。
注意:在每个打开的命令行窗口中需且只需执行一次“source env.sh”。例如, 如果在上文编译 dtb 时已经执行过“source env.sh”,而此时又仍在同一个打开的窗 口中编译 u-boot,则此时不需要再执行“source env.sh”了。下文编译 Linux 内核和 根文件系统时也是如此。
(2)然后进入“FMQL-Linux-SDK/ u-boot-2018.07-fmsh”目录,打开命令行窗 口,输入命令“make fmql_common_defconfig”,生成.config 配置文件(隐藏文件)。
(3)输入命令“make EXT_DTB=../images/system-top.dtb -j20”,执行编译。其 中数字“20”表示使用 4 个 CPU 核心进行编译,用户可以根据自己使用的电脑配置 调整该数字,更多的核心可以加快编译速度; “EXT_DTB=../images/system-top.dtb” 表示定位到之前制作的设备树文件。

( 4 ) 当 u-boot 编 译 成 功 后 , 如 下 图 所 示 , “ FMQL-Linux-SDK/ u-boot-2018.07-fmsh”目录下将生成 u-boot(一个 elf 可执行文件)、u-boot.bin和u-boot.srec 文件等。其中,u-boot 文件可用于之后制作 BOOT.bin。

2.IAR8.2下:
2.1.1 生成 FSBL 可执行文件
(1)在 Procise 硬件导出后,启动 IAR。方法是选择菜单栏 Project->Launch IAR。

(2)在 IAR 中通过 ps_init.c 可以查看各项配置信息,确认无误后编译该工程。

(3)编译完成后,将在工程文件夹内的“....../SDK/system_platform/FSBL/ Debug/Exe”目录下生成可执行文件 FSBL.out,用于之后制作 BOOT.bin。

2.1.2 制作 BOOT.bin

启动镜像 BOOT.bin 通常由以下三个文件构成,分别是:

(1)FSBL.out,第一级启动引导程序。

(2)user.bit,用于实现用户自定义功能的位流文件,当使用到 PL 端的资源时 将需要该文件,而本节只使用 PS 资源,因此不需要。

(3)u-boot.elf(将 2.2.4 节生成的 u-boot 文件重命名为 u-boot.elf),用于引导

Linux 操作系统。 BOOT.bin 的制作方法为:

        (1)打开 Procise 软件,在菜单栏中选择 PSOC->Create Boot Image。

(2)如下图所示,点击 Browse 选择生成文件的存放路径,该路径同时也是BOOT.bin 的存放路径。

(3)点击 Boot image partitions 中的 Add 按钮,然后在弹出的 Add Partition 对话 框中,点击 Browse 找到之前生成的 FSBL 可执行文件 FSBL.out。这里 Partition type选bootloaderDestination CPU 选择 APU x32。最后点击 OK,完成 FSBL 的添加。

(4)方法同上,添加引导程序文件 u-boot.elf,Partition type 是 datafile。添加前 需要从 Linux 虚拟机中把 u-boot 复制出来。两个文件添加后如下图所示:

(5)点击 Create Image 按钮,生成 BOOT.bin。

未完待续...

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值