百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

手把手教你搭建国产嵌入式模拟器SkyEye开发环境

liuian 2024-12-09 15:21 42 浏览


SkyEye介绍


SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式计算机系统(这里假定"仿真"和"模拟"的意思基本相同);可在SkyEye上运行μCLinux以及μC/OS-II等多种嵌入式操作系统和各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。

关于开源版本的更多介绍:点击我跳转

目前开源版本停留在1.3.5版本,后期版本由浙江迪捷软件科技有限公司开发和维护,点击我查看SkyEye的最新介绍。

访问这个地址:https://gitee.com/open-skyeye/build,下载相关的安装包和工具包。

build教程

环境说明

本文介绍在操作系统 Ubuntu 16.04 中编译安装硬件仿真软件 SkyEye 1.3.5 的方法。

镜像版本:ubuntu-16.04.6-desktop-i386.iso 为了保证顺利安装,可以选择与本文相同的Ubuntu来操作。同时你需要下载本仓库,release/skyeye-1.3.5中包含了我们需要的安装包和一些软件包。

安装依赖

由于SkyEye1.3.5引用了llvm3.0底层虚拟机、x11底层界面库等一些软件。如果是新安装的Ubuntu系统,这些软件可能就没有,因此在安装SkyEye之前需要把它们一起安装到机器上。

首先执行:

sudo apt-get update

然后执行以下命令:

sudo apt-get install git-core make automake autoconf libtool g++ python-dev libxft-dev libx11-dev libxpm-dev libncurses5-dev texi2html xterm texinfo x11proto-xext-dev libxext-dev python-numpy python-faulthandler python-wxtools libjson0-dev putty

主要涉及的库有:

名称 说明 git-core - make - automake - autoconf - libtool 动态库加载工具 g++ - python-dev - libxft-dev - libx11-dev 界面底层库依赖包 libxpm-dev - libncurses5-dev - texi2html - xterm 终端模拟器 texinfo 文档系统 x11proto-xext-dev 界面底层库 libxext-dev - python-numpy - python-faulthandler - python-wxtools - libjson0-dev - putty 终端工具

接着,我们还需要更新或安装一些依赖库,这些库ubuntu自带,但是保险起见,我们需要手动再安装一遍。

sudo apt-get install libgtk2.0-dev pkg-config libatk1.0-dev 
sudo apt-get install libpango1.0-dev libfreetype6-dev libglib2.0-dev libx11-dev binutils-dev 
sudo apt-get install libncurses5-dev libxpm-dev libltdl-dev
sudo apt-get install binutils-de

编译SkyEye

这里我在根目录新建一个文件夹

mkdir work 

进入这个文件夹,从release/skyeye-1.3.5中拷贝安装包和软件包到这里,并对其解压。

cd work
unzip libiconv-1.12.zip
tar -zxvf llvm-3.0.tar.gz
tar -jxvf Python-2.7.tar.bz2
tar -jxvf skyeye-1.3.5_rc1.tar.bz2

简单介绍一下这些软件包的作用:

名称 说明 libiconv-1.14 字符编码转换库 llvm-3.0 汇编虚拟机 Python-2.7 程序设计语言 kyeye-1.3.5 嵌入式系统仿真器

依次进入libiconv-1.12、Python-2.7文件夹,先安装libiconv:

./configure
make
sudo make install

期间make install若出现问题,make clean后重新make(不要使用sudo make),然后sudo make install

再安装python-2.7:

./configure --enable-shared  --enable-unicode=ucs4
sudo make
sudo make install

以上步骤确认没有问题后进行SkyEye的编译安装,进入SkyEye源码目录,输入以下命令:

./configure 
sudo make lib

若出现如下问题:

/home/tym/work/1.clone/skyeye-1.3.5_rc1/third-party/opcodes/cgen-ops.h:423: 

multiple definition of `SUBWORDTFSI'

请按照下图指示操作:

<>

接下来输入以下命令,完成编译和安装:

sudo make
sudo make install_lib
sudo make install

skyeye的安装路径在opt/skyeye,我们将它加入环境变量,就可以快捷操作:

先打开当前用户的全局设置:

vim ~/.bashrc

输入代码:

#skyeye 1.3.5
export PATH=/opt/skyeye/bin:$PATH

之后保存退出,输入命令更新设置:

source .bashrc

输入命令,看看能否启动skyeye:

skyeye

如果这个时候报错:

说明这个库不存在,我们需要拷贝一个系统的库到这里,并重新命名:

 sudo cp //usr/lib/i386-linux-gnu/libbfd-2.26-system.so /usr/lib/libbfd-2.18.50.20070907.so

如果编译还出现类似错误,操作相同,直接找到系统下有的库,复制过来重命名即可。

现在我们进入skyeye根目录,利用提供的测试demo,验证skyeye是否正常工作:

cd //opt/skyeye/testsuite/arm_hello
skyeye -e arm_hello

出现上图所示,代表启动正常,现在我们输入两条命令,启动这个demo:

start
run

至此,我们的skyeye安装成功!

相关推荐

Optional是个好东西,如果用错了就太可惜了

原文出处:https://xie.infoq.cn/article/e3d1f0f4f095397c44812a5be我们都知道,在Java8新增了一个类-Optional,主要是用来解决程...

IDEA建议:不要在字段上使用@Autowire了!

在使用IDEA写Spring相关的项目的时候,在字段上使用@Autowired注解时,总是会有一个波浪线提示:Fieldinjectionisnotrecommended.纳尼?我天天用,咋...

Spring源码|Spring实例Bean的方法

Spring实例Bean的方法,在AbstractAutowireCapableBeanFactory中的protectedBeanWrappercreateBeanInstance(String...

Spring技巧:深入研究Java 14和SpringBoot

在本期文章中,我们将介绍Java14中的新特性及其在构建基于SpringBoot的应用程序中的应用。开始,我们需要使用Java的最新版本,也是最棒的版本,Java14,它现在还没有发布。预计将于2...

Java开发200+个学习知识路线-史上最全(框架篇)

1.Spring框架深入SpringIOC容器:BeanFactory与ApplicationContextBean生命周期:实例化、属性填充、初始化、销毁依赖注入方式:构造器注入、Setter注...

年末将至,Java 开发者必须了解的 15 个Java 顶级开源项目

专注于Java领域优质技术,欢迎关注作者:SnailClimbStar的数量统计于2019-12-29。1.JavaGuideGuide哥大三开始维护的,目前算是纯Java类型项目中Sta...

字节跨平台框架 Lynx 开源:一个 Web 开发者的原生体验

最近各大厂都在开源自己的跨平台框架,前脚腾讯刚宣布计划四月开源基于Kotlin的跨平台框架「Kuikly」,后脚字节跳动旧开源了他们的跨平台框架「Lynx」,如果说Kuikly是一个面向...

我要狠狠的反驳“公司禁止使用Lombok”的观点

经常在其它各个地方在说公司禁止使用Lombok,我一直不明白为什么不让用,今天看到一篇文章列举了一下“缺点”,这里我只想狠狠地反驳,看到列举的理由我竟无言以对。原文如下:下面,结合我自己使用Lomb...

SpringBoot Lombok使用详解:从入门到精通(注解最全)

一、Lombok概述与基础使用1.1Lombok是什么Lombok是一个Java库,它通过注解的方式自动生成Java代码(如getter、setter、toString等),从而减少样板代码的编写,...

Java 8之后的那些新特性(六):记录类 Record Class

Java是一门面向对象的语言,而对于面向对象的语言中,一个众所周知的概念就是,对象是包含属性与行为的。比如HR系统中都会有雇员的概念,那雇员会有姓名,ID身份,性别等,这些我们称之为属性;而雇员同时肯...

为什么大厂要求安卓开发者掌握Kotlin和Jetpack?优雅草卓伊凡

为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡一、Kotlin:Android开发的现代语言选择1.1Kotlin是什么?Kotlin是由...

Kotlin这5招太绝了!码农秒变优雅艺术家!

Kotlin因其简洁性、空安全性和与Java的无缝互操作性而备受喜爱。虽然许多开发者熟悉协程、扩展函数和数据类等特性,但还有一些鲜为人知的特性可以让你的代码从仅仅能用变得真正优雅且异常简洁。让我们来看...

自行部署一款免费高颜值的IT资产管理系统-咖啡壶chemex

在运维时,ICT资产太多怎么办,还是用excel表格来管理?效率太低,也不好多人使用。在几个IT资产管理系统中选择比较中,最终在Snipe-IT和chemex间选择了chemex咖啡壶。Snip...

PHP对接百度语音识别技术(php对接百度语音识别技术实验报告)

引言在目前的各种应用场景中,语音识别技术已经越来越常用,并且其应用场景正在不断扩大。百度提供的语音识别服务允许用户通过简单的接口调用,将语音内容转换为文本。本文将通过PHP语言集成百度的语音识别服务,...

知识付费系统功能全解析(知识付费项目怎么样)

开发知识付费系统需包含核心功能模块,确保内容变现、用户体验及运营管理需求。以下是完整功能架构:一、用户端功能注册登录:手机号/邮箱注册,第三方登录(微信、QQ)内容浏览:分类展示课程、文章、音频等付费...