基于SkyEye仿真飞腾处理器:运行U-Boot并加载Phytium-FreeRTOS

news2024/11/18 8:20:47

仿真平台在帮助提升研发效率、加快产品面市时间上的作用已得到诸多验证,通过对处理器进行仿真来支持嵌入式系统及软件的虚拟化开发、测试和验证成为目前应用较为广泛的方法。天目全数字实时仿真软件SkyEye是一款基于可视化建模的硬件行为级仿真平台,在众多仿真工具中有着国产自主可控、所支持的处理器种类更为全面等优点。

本文主要关于如何基于SkyEye实现飞腾处理器的仿真,以及如何在飞腾仿真处理器上运行U-Boot并通过网络加载Phytium-FreeRTOS。

01.U-Boot

U-Boot(Universal Bootloader)是一个用于嵌入式系统与设备的轻量级引导加载程序,主要用于在启动时初始化硬件并加载操作系统。作为一个开源项目,U-Boot支持用户查看、修改和分发源代码,符合自由软件的原则。

具体来说,U-Boot负责初始化嵌入式系统的硬件,包括处理器、内存、外设等,其加载引导的操作系统可以是Linux、Android等嵌入式操作系统;同时提供一个命令行界面,用户可以通过该界面执行各种命令,例如烧写Flash、通过网络启动操作系统等。生态方面,U-Boot广泛支持多种处理器架构,包括ARM、MIPS、PowerPC、RISC-V等,并且具备很强的可移植性,可以轻松地移植到不同的硬件平台上。

02.编译U-Boot

在编译使用环境的选择上,推荐使用Ubuntu系统(本文演示中使用的是Ubuntu22.04系统)。在下载源码编译之前,需要做以下准备:

  1. 安装git

  2. 安装gcc-aarch64-linux-gnu交叉编译工具链

  3. 安装make

在shell中使用以下命令安装git、make以及gcc-aarch64-linux-gnu:

sudo apt install git make gcc-aarch-linux-gnu

2.1 下载飞腾官方移植好的U-Boot源码

源码可以通过飞腾在gitee上的仓库下载,在shell环境中执行下面的命令:

git clone https://gitee.com/PhytiumISJL/u-boot.git

使用上述git命令后,git将会从代码仓库中下载飞腾官方U-Boot源码,如下图所示。u-boot目录即为下载得到的飞腾官方U-Boot源码。

2.2 编译U-Boot

2.2.1 设置环境变量

开始编译前,出于U-Boot支持多种目标架构的原因,需要根据目标平台以及所用的交叉编译工具链设置ARCH和CROSS_COMPILE两个环境变量。

编辑~/路径下的.bashrc文件,在文件末尾加入两行脚本:

export ARCH=armexport CROSS_COMPILE=aarch64-linux-gnu-

设置后需要重新启动终端,或者使用【source ~/.bashrc】命令让配置在当前终端立即生效。

2.2.2 编译

对U-Boot的编译可通过执行下列命令来完成。编译完成后将会得到可以在FT2000处理器中运行的U-Boot二进制可执行文件。

make D2000_defconfig && make

下图是编译过程中最后一部分输出信息以及编译后的目录结构,从中可以看到编译生成了u-boot-nodtb.bin文件,该文件即为将要被加载到FT2000处理器中运行的U-Boot。

在后续加载u-boot-dtb.bin文件至基于SkyEye仿真的FT2000处理器上运行的过程中,需要配置程序的入口地址。该地址可以通过readelf命令查看u-boot得到,u-boot为elf格式的可执行文件,查看信息如下:

u-boot-dtb.bin文件是使用aarch64-linux-gnu-objcopy命令将u-boot转换为bin文件格式所得到的,因此其入口地址是一致的。从上图可知其入口地址为0x180000。

03.编译Phytium-FreeRTOS

FreeRTOS(Real-Time Operating System)是一个开源的、实时的嵌入式操作系统内核,专为小型嵌入式系统设计。Phytium-FreeRTOS是由Phytium官方专为FT2000-4、D2000等处理器定制的FreeRTOS移植版本,可以在Windows、Linux系统上搭建环境编译得到Phytium-FreeRTOS镜像,本文将以Windows系统为例。

3.1 Phytium-FreeRTOS-SDK开发环境

Phytium官方提供了一个FreeRTOS的开发环境,可供快速构建和开发Phytium-FreeRTOS的程序镜像,具体可通过以下网址获取开发环境:

https://gitee.com/phytium_embedded/phytium-free-rtos-sdk

Phytium-FreeRTOS-SDK开发环境集成了MSYS2、arm-none-eabi-gcc、aarch64-none-elf-gcc、tftpd64等工具。

  • MSYS2

Msys2 portable环境, 主要提供Windows上的shell命令行开发环境,包括Cygwin(POSIX兼容性层)和MinGW-w64。

  • arm-none-eabi-gcc、aarch64-none-elf-gcc

基于MinGW-w64构建的专门用于ARM架构的交叉编译工具链。

  • tftpd64

提供tftp服务,用于通过网络下载二进制镜像文件,主要功能包括安装tftp32服务和配置tftp目录。

3.2 配置环境变量

添加Windows环境变量【PHYTIUM_DEV_PATH】(环境变量名不能自定义),例如指向目录【D:\Software\phytium-dev-windows-nt】(Phytium-FreeRTOS-SDK开发环境的存放路径可以自定义)。

3.3 进入Phytium-FreeRTOS-SDK编译环境

Phytium-FreeRTOS-SDK编译环境基于MSYS2构建,所以编译过程在MSYS2提供的shell中进行。双击【run_msys2.cmd】进入开发环境,如下图所示:

进入开发环境后,执行当前目录下的setup_dev.py以初始化开发环境。该Python脚本会解压并安装Phytium-FreeRTOS-SDK开发环境自带的交叉编译工具链,安装完成后重启系统或者执行下述命令,可以使编译工具链的环境生效:

source /etc/profile.d/phytium_dev.sh

以上过程如下图所示:

3.4 拉取Phytium-FreeRTOS-SDK源码

上述章节的步骤完成后,可以在phytium-dev-windows-nt目录下使用下述git命令实现Phytium-FreeRTOS-SDK源码的拉取。

git clone https://gitee.com/phytium_embedded/phytium-free-rtos-sdk.git ./phytium-free-rtos-sdk

进入拉取到的源码路径下,执行该路径下的install.py脚本,将会安装Standalone SDK和设置环境变量,安装完成后重启系统或者执行下述命令可使编译环境立即生效:

source /etc/profile.d/phytium_dev.sh

以上执行过程如下图所示:

3.5 编译

完成上述步骤后,进入到【/phytium-free-rtos-sdk/example/template】目录,使用make -j8命令编译,编译过程如下图所示:

编译完成后,使用ls查看当前目录下的文件,可以看到freertos.elf可执行文件已经生成。

后续将会使用U-Boot从tftp服务器上下载Phytium-FreeRTOS的程序镜像到目标板卡上运行,此处以下载freertos.bin文件为例。

通过readelf工具可以查看到freertos.elf可执行文件为AArch64架构,程序入口地址为0x80100000,后续在SkyEye中加载该可执行文件将会用到这个地址,详细信息如下图所示:

04.SkyEye仿真FT2000运行U-Boot

4.1 SkyEye仿真FT2000

SkyEye支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。使用SkyEye仿真的FT2000处理器可视化模型如下图所示:

4.2 配置SkyEye脚本

处理器仿真模型搭建完成后,需要配置SkyEye脚本来加载镜像启动。该脚本的工作主要是解析json文件并示例化模型对象、将镜像加载到指定地址、设置PC寄存器、最后开始执行。

define-conf D2000.jsonload-file ftc663_core_0 binary/u-boot-dtb.bin 0x180000set-pc ftc663_core_0 0x180000init-ok

4.3 运行U-boot

在SkyEye中加载U-boot,运行结果如下图所示:

从上图的串口输出信息中可知,U-Boot已经成功启动并进入命令行,接下来只需搭建好TFTP服务器,便可通过TFTP服务器下载freertos.bin运行。

05.U-Boot加载Phytium-FreeRTOS运行

U-Boot可以通过tftboot命令从tftp服务器上下载镜像至目标板卡的指定地址处,并使用go命令启动镜像。

5.1 tftp服务器搭建

本文选择使用TFTPD64来实现tftp服务器的搭建。TFTPD64是一个基于Windows平台、简单易用的TFTP服务器搭建软件,可供快速搭建TFTP服务器。软件安装后如下图所示,需要根据实际的freertos.bin文件存放路径以及本机网卡的IP地址来设置Current Directory和Server interface。

5.2 tftpboot命令下载镜像启动

tftp服务器搭建完成后,使用tftpboot命令从服务器下载镜像到0x80100000地址处,该地址为freertos.bin的程序入口地址。下载镜像到对应地址后,使用go命令启动镜像。如下图所示,红框中为用U-Boot加载镜像和启动镜像执行的命令,U-Boot已经成功实现Phytium-FreeRTOS的启动:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1396461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

找免费PPT素材、模板,就上这6个网站。

这6个PPT模板网站,免费下载,可商用,赶紧来下载。 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYxMjky 菜鸟图库是一个设计、办公、媒体等素材非常齐全的网站,站内有几百万的庞大素材库,其中PP…

Python 异源mesh裁剪融合实现与优化

Python 异源mesh裁剪融合实现与优化 一、项目需求二、解决方案1. 代码2. 结果3. 耗时 三、优化探索0. 分析1. 在体素边界处进行裁剪2. 用mesh分块进行裁剪3. 用缓冲区的思路裁剪 一、项目需求 对mesh进行裁剪,但发现若非mesh是致密的,那么裁剪边会出现锯…

用通俗易懂的方式讲解:使用Llama-2、PgVector和LlamaIndex,构建大模型 RAG 全流程

近年来,大型语言模型(LLM)取得了显著的进步,然而大模型缺点之一是幻觉问题,即“一本正经的胡说八道”。其中RAG(Retrieval Augmented Generation,检索增强生成)是解决幻觉比较有效的…

Linux网络引导自动安装centos7

目录 一、部署PXE远程安装服务 1. 系统装机的三种引导方式 2. pxe概述 3. 实现过程 4. 搭建过程中服务介绍 4.1 TFTP服务 4.2 vsftp:安装系统镜像文件获取方式 4.3 syslinux 4.4 DHCP服务 5. 操作过程 二、实现Kickstart无人值守安装 1. 安装Kickstart图…

vue项目执行依赖安装(npm i或npm install )报ls-remote -h -t异常

从git拉取的vue项目执行依赖安装时一直报错, 报错如下图:首先,查看了node版本、npm配置的镜像地址均没找到解决办法。 在命令行中直接输入git发现提示于是从网上搜到了一个博文https://blog.csdn.net/weixin_49159364/article/details/118198…

ycsb压测mongodb

下载解压 https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-mongodb-binding-0.17.0.tar.gz tar -zxvf ycsb-mongodb-binding-0.17.0.tar.gzycsb提前已经在workload文件夹下准备好了几个压测场景分别对应workload[a:f] workloads/workloada 样例 …

【Linux】Linux系统编程——pwd命令

文章目录 1.命令概述2.命令格式3.常用选项4.相关描述5.参考示例 1.命令概述 pwd(Print Working Directory)命令用于显示用户当前工作目录的完整路径。这是一个常用的命令,帮助用户确定他们目前所在的目录位置。 2.命令格式 基本的 pwd 命令…

CVer从0入门NLP(二)———LSTM、ELMO、Transformer模型

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊专栏推荐:深度学习网络原理与实战 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、…

恒创科技:云存储和网盘怎么区分出来?

随着互联网的发展,数据存储已成为人们日常生活中不可或缺的一部分。云存储和网盘是经常被人们提及的两种存储方式,均通过网络进行数据存储和访问的服务。但,它们在技术实现、数据安全性、访问方式和数据容量等方面存在一定的差异。要区分&…

DAY04_Spring—Aop案例引入代理机制

目录 1 AOP1.1 AOP案例引入1.1.1 数据库事务说明 1.2 Spring实现事务控制1.2.1 代码结构如下1.2.2 编辑User1.2.3 编辑UserMapper/UserMapperImpl1.2.4 编辑UserService/UserServiceImpl1.2.5 编辑配置类1.2.6 编辑测试类 1.3 代码问题分析1.4 代理模式1.4.1 生活中代理案例1.4…

赋能客户不停歇,卓翼飞思职业院校无人智能装备师资培训圆满落幕

1月10日-15日,卓翼飞思在北京研发中心成功举办职业院校无人智能装备高级师资培训。来自湖南汽车工程职业学院(以下简称:湖南汽车职院)的10名师生&技术人员参与此次培训,针对无人智能集群应用开发进行系统性的培训及…

图卷积GCN实战基于网络结构图的网络表示学习实战

下面的是数据: from,to,cost 73,5,352.6 5,154,347.2 154,263,392.9 263,56,440.8 56,96,374.6 96,42,378.1 42,58,364.6 58,95,476.8 95,72,480.1 72,271,419.5 271,68,251.1 134,107,344.0 107,130,862.1 130,129,482.5 227,167,1425.7 167,298,415.7 298,209,42…

(vue)键值对结构数据展示

(vue)键值对结构数据展示 效果: 数据结构: this.formInline.algorithmText [{algorithmParameters: {参数名1: "111",参数名2: "121,122",},algorithmName: "算法1",algorithmId: 9,},{algorithmParameters: {参数名1:…

Android安卓读写低频EM4469卡源码

本示例使用的发卡器&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.…

Qt通用属性工具:随心定义,随时可见(三)

传送门: 《Qt通用属性工具:随心定义,随时可见(一)》 《Qt通用属性工具:随心定义,随时可见(二)》 《Qt通用属性工具:随心定义,随时可见(三)》 一、效果展示 本文将展示的是一个源于Qt但是却有些年头的Qt属性浏览工具。支持交互式编辑和查阅对象属性。 这可不就是妥…

机器学习--人工智能概述

人工智能概述 入门人工智能&#xff0c;了解人工智能是什么。为啥发展起来&#xff0c;用途是什么&#xff0c;是最重要也是最关键的事情。大致有以下思路。 人工智能发展历程机器学习定义以及应用场景监督学习&#xff0c;无监督学习监督学习中的分类、回归特点知道机器学习…

产品经理学习-产品运营《用户运营策略》

⽤户画像与⽤户运营策略 什么是用户画像 对产品运营而言&#xff0c;用户画像就是对用户的各种特征贴上标签通过这些标签将用户分成不同的用户群体 为用户提供有针对性的服务。 制作用户画像是为了专注和精准 使产品的服务对象更加聚焦&#xff0c;更加专注&#xff1b;根据产…

NIFI 2.0.0版本HTTPS访问部署

1. 相关环境 服务器&#xff1a;centos JDK&#xff1a;jdk21 NIFI: nifi-2.0.0-M1 2. 下载NIFI 下载NIFI https://nifi.apache.org/download/ 将文件上传至服务器指定目录&#xff0c;解压缩 修改 bin 目录下的脚本文件 ​ 注意: nifi 2.0.0 版本需要jdk21&#xff0c;所…

C++ 二叉树OJ题

目录 1、606. 根据二叉树创建字符串 2、102. 二叉树的层序遍历 3、107. 二叉树的层序遍历 II 4、236. 二叉树的最近公共祖先 5、JZ36 二叉搜索树与双向链表 6、105. 从前序与中序遍历序列构造二叉树 7、106. 从中序与后序遍历序列构造二叉树 8、144. 二叉树的前序遍历…

pdf怎么查看?6个不能错过的软件!

PDF&#xff0c;作为一种常用的文件格式&#xff0c;已经成为了我们工作、学习中的必备工具。然而&#xff0c;对于许多新手来说&#xff0c;如何查看和编辑PDF文件却是一个不小的挑战。今天&#xff0c;我们就来为大家详细介绍一下如何查看和编辑PDF文件&#xff0c;以及一些必…