基于 RISC-V SoC 的 1024 点 FFT 设计(10-02-07)RISC-V 交叉编译的环境搭建

芯片原厂必学课程 - 第十篇章 - 基于 RISC-V SoC 的 1024 点 FFT 设计

10-02-07 RISC-V 交叉编译的环境搭建

新芯设计:专注,积累,探索,挑战

引言

  本次项目主要设计了一个基于 RISC-V 指令集架构的 SoC,这是一个具有 1024 点的时频转换功能的 FFT 系统。在理想情况下,只要指令存储器和数据存储器的容量足够大,基本上可以实现任意点的 FFT。本章《基于 RISC-V SoC 的 1024 点 FFT 设计》针对 1024 点的 FFT,首先给出了 FFT 系统的整体架构和 RISC-V 内核的硬件设计。接着,对于 RISCV 交叉编译环境的搭建进行了相关的概述。最终,针对基于 RISC-V SoC 的 FFT 设计,构造了基于软硬件协同仿真验证的 UVM 框架,证实了大点数 FFT 的 C 软件程序及其 RISC-V 硬件设计系统功能的正确性。

  NOTES:本文来自《芯片原厂必学课程 - 第十篇章 - 基于 RISC-V SoC 的 1024 点 FFT 设计》技术专栏


🌏 一、RISC-V 编译原理

  对于 RISC-V 来说,其编译原理类似于其它的指令集架构的编译方式,不同的只是编译工具和环境。C 文件经过文件预处理、程序编译、指令汇编以及系统链接四个环节的处理之后,最终转换为可载入 RISC-V 处理器的 ELF(Executable and Linkable Format,可执行和可链接格式)文件。这是一种包含了 RISC-V 二进制机器码、段加载地址、运行入口地址以及数据段等信息的可执行文件。

10-02-07-01 RISC-V 编译原理流程图

  在预处理环节中,相关的工具会对 FFT.c 和 Lib.h 文件进行分析与处理,删除不必要的注释以及添加相关的标识等等,最终生成了 FFT.i 文件。在编译环节中,RISC-V 编译器会对 FFT.i 文件进行一系列的语法分析与代码优化,从而生成 FFT.s 汇编文件。由于每一条汇编语言都与 RISC-V 指令一一对应着,于是在汇编环节中,RISC-V 汇编器就可以通过“代码翻译”的方式,来输出 FFT.o 目标文件。最终,在链接环节中,RISC-V 链接器通过链接目标文件及其必要的启动代码,生成了一个能够被 RISC-V 处理器加载的、直接运行的 FFT.elf 可执行文件。


🌏 二、RISC-V 交叉编译的环境搭建

  目前,基于 RISC-V 的 SoC 芯片主要都是应用于低功耗的轻量级嵌入式设备领域中,其宝贵的硬件资源不会浪费在 RISC-V 编译器和工具链上。大部分的情况下,其程序的开发与编译都是在 PC 主机上进行的,然后下载到基于 RISC-V 处理器的嵌入式系统平台上。类似这样的,在架构 A 中进行编译,但是架构 A 本身无法运行该程序,只能在架构 B 中进行实现的方式就称为交叉编译。

  对于能够完成 RISC-V 交叉编译流程的工具套件,统称为 RISC-V GCC 工具链。为了让 PC 主机上编写的 C、C++ 代码能够在自己设计的 RISC-V 嵌入式平台上运行,就必须搭建一个完整的 RISC-V 交叉编译环境,可以实现软硬件的协同设计与仿真验证。这就类似于基于 STM32 开发的 Keil 软件开发系统以及基于 ZYNQ 开发的 Xilinx SDK 集成开发环境。

  现如今,RISC-V 软件生态链的发展也已经较为成熟了,且交叉编译的开发环境也是多种多样的。例如,基于 RISC-V 的交叉编译环境有基于 Window 系统上的,也有基于 Linux 系统上的,有开发好的 IDE(Integrated Development Environment,集成开发环境)软件,也可以自行生成全套的 GCC 工具链。根据自己特定的软件算法及其应用场景,也有不同的编译和链接配置选项。本次的 RISC-V 交叉编译环境的搭建是基于 Linux 系统上的,面向 RV32IM 指令集组合的 RISC-V 裸机嵌入式系统。在 Ubuntu 16.04 上通过 RISC-V GNU 工具链的下载、Linux 系统上工程环境的配置、自动化配置和编译的依赖工具的安装、以及编译工具的生成等一系列步骤,最终完成了基于 Linux 平台下的 RISC-V 交叉编译环境的搭建。

10-02-07-02 最终生成的部分 RISC-V 编译工具示意图

  在 Linux 系统下安装了全套的 RISC-V GCC 工具链之后,就可以运行 RISC-V 编译相关的 Linux 脚本命令,从而调用相关的编译工具来处理 C 软件程序。例如,通过 riscv-none-embed-gcc 编译工具,然后根据自己的需求,结合特定的编译选项,即可实现从 C、C++ 等高级语言到可运行于自定制 RISC-V 处理器的二进制机器代码的转变,生成对应的 ELF 可执行文件。这里给出了具体的编译选项及其说明,更多的编译选项及其相关说明,可以通过 GCC 网站的在线文档,点击“RISC-V-Options”的网页目录进行在线阅读。

10-02-07-03 RISC-V 交叉编译选项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新芯设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值