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

仿真平台在帮助提升研发效率、加快产品面市时间上的作用已得到诸多验证,通过对处理器进行仿真来支持嵌入式系统及软件的虚拟化开发、测试和验证成为目前应用较为广泛的方法。天目全数字实时仿真软件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的启动:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

24 小时经营,15 秒出饮,这台无人饮品机横空出世

随着科技的不断进步,无人饮品机应运而生,它以其 24 小时经营、15 秒出饮的特点,迅速成为人们关注的焦点。 D咖无人饮品机的外观设计简洁大方,体积小巧,操作界面简单易懂,消费者可以通过触屏选择自己喜欢的饮…

Stability AI发布全新代码模型Stable Code 3B

Stable Code 3B: Coding on the Edge 要点: Stable Code 3B 是一个包含 30 亿个参数的大型语言模型 (LLM),可实现准确且响应灵敏的代码补全,其水平与大 2.5 倍的 CodeLLaMA 7b 等模型相当。即使在 MacBook Air 等普通笔记本电脑上没有 GPU&…

C++ 设计模式之 中介者模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是中介者模式 (第16种模式) 中介者模式(Medi…

TCO-AF488,AF488-反式环辛烯,一种明亮的绿色荧光染料

文章关键词:AF488 TCO,Alexa Fluor TCO,TCO AF488,AF488 反式环辛烯 一、基本信息 产品简介:AF488 TCO,这是一款独特的荧光染料,以其鲜明的绿色光华吸引了众人的目光。在成像和流式细胞术中&a…

云HIS为连锁医院机构提供统一医院管理解决方案

云HIS重建统一的信息架构体系,重构管理服务流程,重造病人服务环境,向不同类型的医疗机构提供SaaS化HIS服务解决方案。 云HIS优势 1、云端数据优势 在传统的HIS模式里,数据存于医院本身的服务器机组,一旦发生故障&…

docker-compose安装mongodb

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 早上醒来的第一件事情就是摸了一下手机,看了一下微信相关的技术推文,给我推荐了一篇…

SpringBoot Redis入门(四)——Redis单机、哨兵、集群模式

单机模式:单台缓存服务器,开发、测试环境下使用;哨兵模式:主-从模式,提高缓存服务器的高可用和安全性。所有缓存的数据在每个节点上都一致。每个节点添加监听器,不断监听节点可用状态,一旦主节点…

three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera</title><script src"ThreeJS/three.js"></script><script src&qu…

服务器数据恢复—OceanStor存储raid5热备盘同步数据失败的数据恢复案例

服务器数据恢复环境&#xff1a; 华为OceanStor某型号存储&#xff0c;存储内有一组由24块硬盘组建的raid5阵列&#xff0c;配置1块热备盘。 服务器故障&#xff1a; 该存储raid5阵列中有一块硬盘离线&#xff0c;热备盘自动激活并开始同步数据&#xff0c;在热备盘同步数据的…

【北亚企安数据恢复】RAIDZ多块磁盘离线导致服务器崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; ORACLE SUN ZFS某型号存储&#xff0c;共40块磁盘组建存储池&#xff0c;其中的36块磁盘分为三组&#xff0c;每组12块&#xff0c;单个组使用ZFS特有的RAIDZ管理所有磁盘&#xff0c;RAIDZ级别为2&#xff1b;另外的4块磁盘作为全局热备。存储…

关于 overflow 滚动条(滑动条)配置,简单使用的案例和案例代码

运行环境&#xff1a; Google Chrome 浏览器 前言&#xff1a; 滚动条的样式在CSS中属于伪元素&#xff08;pseudo-element&#xff09;&#xff0c;滚动条的样式则需要通过使用::-webkit-scrollbar 伪元素来定义。 滚动条(滑动条)的区域内包含三个基本部分&#xff0c;轨道…

视频智能识别周界入侵检测AI智能分析网关V4如何配置ONVIF摄像机接入

AI边缘计算智能分析网关V4性能高、功耗低、检测速度快&#xff0c;易安装、易维护&#xff0c;硬件内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。算法可按需组合、按…

K8S Informer机制原理解读 | 架构设计

在Kubernetes系统中&#xff0c;组件之间通过HTTP协议进行通信&#xff0c;在不依赖任何中间件的情况下需要保证消息的实时性、可靠性、顺序性等。那么Kubernetes是如何做到的呢&#xff1f;答案就是Informer机制。Kubernetes的其他组件都是通过client-go的Informer机制与Kuber…

12- OpenCV:算子(Sobel和Laplance) 和Canny边缘检测 详解

目录 一、Sobel算子 1、卷积应用-图像边缘提取 2、Sobel算子&#xff08;索贝尔算子&#xff09; 3、相关的API&#xff08;代码例子&#xff09; 二、Laplance算子 1、理论 2、API使用&#xff08;代码例子&#xff09; 三、Canny边缘检测 1、Canny算法介绍 2、API使…

每周一算法:数独游戏

题目链接 数独游戏 题目描述 数独是根据 9 9 9 \times 9 99 盘面上的已知数字&#xff0c;推理出所有剩余空格的数字&#xff0c;并满足每一行、每一列、每一个粗线宫内的数字均含 1 − 9 1 - 9 1−9 &#xff0c;不重复。每一道合格的数独谜题都有且仅有唯一答案&#x…

基于网络爬虫的天气数据分析

二、网络爬虫设计 网络爬虫原理 网络爬虫是一种自动化程序&#xff0c;用于从互联网上获取数据。其工作原理可以分为以下几个步骤&#xff1a; 定义起始点&#xff1a;网络爬虫首先需要定义一个或多个起始点&#xff08;URL&#xff09;&#xff0c;从这些起始点开始抓取数据…

中国IT产经新闻:AI人工智对就业产生影响但既是挑战也是机遇

近日国际权威人士表示&#xff0c;人工智能AI将影响全球近40%的就业岗位&#xff0c;其中相对新兴市场和低收入国家而言&#xff0c;发达经济体可能受到的冲击更大&#xff01;此言一出迅速应发了关于人工智能将对就业产生影响的大讨论&#xff01; 我们都知道随着科技的飞速发…

美摄视频SDK的HDR格式编辑方案

在当今的视觉媒体时代&#xff0c;高动态范围&#xff08;HDR&#xff09;技术已成为高质量视频内容的标配。为了满足企业对高效、高质量视频处理的需求&#xff0c;美摄科技推出了业界领先的视频SDK&#xff0c;全面支持多种HDR标准的图像视频进行处理。 一、核心优势 HDR全…

微信内测“听一听” 音乐音频业务提至一级入口;美团 AI 平台视觉中心负责人魏晓林离职;腾讯视频生成模型 VideoCrafter2;广州房价连跌12个月

今日精选 • 微信内测“听一听” 音乐音频业务提至一级入口• 美团 AI 平台视觉中心负责人魏晓林离职• 腾讯推出视频生成模型 VideoCrafter2&#xff0c;• 广州房价连跌12个月 投融资与企业动态 • TikTok 越南推出 Thu Duc Market 在线销售渠道• 亚马逊将在五年内在日本…