没有合适的资源?快使用搜索试试~ 我知道了~
第5章嵌入式系统的仿真软件Skyeye(排版)[归纳].pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 153 浏览量
2021-10-12
05:40:25
上传
评论
收藏 850KB PDF 举报
温馨提示
试读
21页
第5章嵌入式系统的仿真软件Skyeye(排版)[归纳].pdf
资源推荐
资源详情
资源评论
第 5 章 嵌入式系统的仿真软件 SKYEYE
众多的电子电路应用设计都在标准的 PC 机上寻求廉价的解决方案, 那就是要尽量节省
硬件上的投资,尝试在 PC 机上用软件的方式构建一系列数据模型,来仿真具体的电子电路
的运行过程, 甚至还能提供虚拟的仪器仪表, 以图形化方式使用户能实时地观察系统运行的
中间参数。
事实上,很多这样的尝试都已经获得了成功,甚至已经得到认可,成为了行业的标准,
比如设计模拟电路与数字电路时可以用 Multisim 软件仿真,开发单片机系统时可以用 Proteus
软件仿真,评估数字信号处理的算法时可以用 Matlab 仿真,建立通信系统前可以用 Agilent
ADS 软件仿真, CPLD 与 FPGA 器件可以直接用 Quartus 软件仿真,一时间,似乎电路的相
关应用与开发都可以在标准 PC 机上进行仿真实现。
目前,嵌入式系统的仿真软件主要有 SKYEYE 与 QEMU ,这里选用 SKYEYE 软件来
仿真嵌入式系统中的软硬件系统。
学习目标:
掌握 SKYEYE 的安装
了解 SKYEYE 的配置文件
掌握 SKYEYE 程序的启动方法
了解 SKYEYE 的编译过程
5.1 SKYEYE硬件模拟平台
5.1.1 SKYEYE介绍
1.SKYEYE简介
SKYEYE 是一个面向完整 PC 系统的开源仿真器。除了仿真处理器外, SKYEYE 还允
许仿真所有必要的子系统, 如连网硬件和图形硬件。 它还允许实现高级概念上的仿真, 比如,
仿真其它的处理器架构(如 ARM 、MIPS 和 PowerPC 等)。这里说的仿真,也就是通过模拟
出一个完整的硬件环境来使用户虚拟化地操作硬件平台, 后面可能不再区别仿真与模拟的概
念。 SKYEYE 可以实现嵌入式系统的仿真,给用户提供一个虚拟的硬件操作平台。
2.SKYEYE的目标与意义
SKYEYE 是一个指令级仿真器, 可以模拟多种嵌入式开发板, 可支持多种 CPU 指令集,
在 SKYEYE 上运行操作系统与在一个真实的硬件环境中运行是一样的, 看不出其中的差别,
并且开发人员还可以通过 SKYEYE 调试操作系统和系统软件。 由于 SKYEYE 的目标不是验
证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上 SKYEYE 与真实的硬件
环境相比还是有一定差别的,它并不能取代开发板等硬件的功能,比如 SKYEYE 在时钟节
拍的时序上不保证与硬件完全相同, 对与软件不相关的一些硬件仿真进行了一定的简化。 这
样带来的好处是 SKYEYE 的执行效率更高。 SKYEYE 的应出具有下面三方面的优势:
通过 SKYEYE 仿真集成环境可以很方便地进入到嵌入式系统软件学习和开发领域。尤
其对于缺少嵌入式硬件开发环境和软件开发环境的用户来说, 它将是一个非常有效的学
习工具和开发手段, 因为 SKYEYE 的整个软件系统都是基于 GPL 协议(uC/OS-II 除外)
的开源软件。因此,在学习 Liunx 操作系统或者进行嵌入式系统开发时,如果还在苦于
没有硬件支持的话,使用 SKYEYE 仿真环境软件是个不错的选择。
如果研究与具体硬件无关的系统软件(如 TCP/IP 协议栈等),采用 SKYEYE 可以有效
地提高工作效率,可以直接在 uC/OS-II 和 uClinux for SKYEYE 上进行开发和调试,而
与具体硬件打交道的各种驱动已经存在, 且有源码级调试环境, 只需关心高层的逻辑设
计和实现就可以了。
SKYEYE 本身作为一个开放式的项目体系,可以划分为多个独立的子项目系统。通过
参与 SKYEYE 的各个子项目,开发人员共同交流、协作,有助于进一步学习、分析、
精通 Linux 内核,掌握 ARM 嵌入式 CPU 编程。
3.SKYEYE的应用层面
SKYEYE 可以从低层到高层支持三个层级的用户应用。
(1)对于嵌入式操作系统的初学者而言, 在已经掌握一些有关操作系统和嵌入式操作系
统方面知识的基础上,比如了解与 uC/OS、Minix 、uClinux 、Linux 相关的理论与开发技术
等,可以考虑在 SKYEYE 上开发一些简单的应用程序例子(如进程间通信、进程优先级、
死锁情况,网络应用等) ,对某些操作系统功能(如进程调度、内存管理、网络子系统、文
件子系统等)进行简单的修改和扩展,并通过 SKYEYE 进行运行和调试,记录观察到的运
行情况。这可以算是一般级别的应用。
(2)对于有一定经验的软件工程师而言,可以在 SKYEYE 上完成一定的应用系统原型
开发,比如移植或开发一个文件子系统或网络子系统到一个特定的操作系统中, 相信比在一
个真实的开发板上开发要容易一些。在 SKYEYE 上进行一些操作系统级的移植和开发,比
如移植 RTLinux 、RTAI 等其它操作系统到 SKYEYE 上。这可以算是中等级别的应用。
(3)对于硬件工程师而言,对 SKYEYE 进行扩充,设计新的硬件仿真(如 USB、IDE
硬盘等),使得 SKYEYE 的硬件仿真功能更加强大,支持更多功能的软件。这可以算是对
SKYEYE 高等级别的应用了。
5.1.2 SKYEYE系统的原理
SKYEYE 是一个支持多架构、多核,并且可扩展的硬件仿真平台,当前主要由核心库
libcommon.so 和基于核心库的一系列插件组成, 通过模拟嵌入式微处理器的内核、 片内外设
的接口、 外围配置电路以及嵌入式微处理器内外部的存储器, 给用户提供一个虚拟的硬件平
台环境, 虽然硬件环境是虚拟出来的, 但是还是要让用户能够将真实硬件平台上的开发方法
在该虚拟环境中顺利应用。因此, SKYEYE 系统实现的原理就是去尽量地模拟嵌入式系统
各部分的功能,使开发人员从软件上执行出整个硬件系统才能做的事情。
虽然现在 SKYEYE 模拟了大量的硬件, 这里仅对其 CPU 内核、 存储器管理单元与缓存
单元、网络芯片及 LCD 与 Touch Screen 等 4 个主要内容的功能原理做出说明,这分别对应
了系统的微处理器、存储器、接口及人机交互等系统主要的 4 个方面。
1.CPU内核
虚拟的 CPU 内核模型需要支持数学逻辑运算、寄存器操作、移位操作、存储器寻址等
CPU 内核的最基本操作。 SKYEYE 可以模拟的 CPU 主要是基于 ARM 内核的微处理器,这
一类型的器件型号较多,但是按照是否支持 MMU 可以分为两大类: (1)ARM 微处理器的
基本核。它们不支持 MMU/Cache 和一些扩展指令,比如 ARM7/9/10TDMI 核心就是 ARM
系列微处理器的基本核心部分。 (2)ARM 微处理器的扩展核。一些嵌入式微处理器的核心
是在基本核的基础上扩展了 MMU/Cache 和其他功能得到的, 这些微处理器能支持高级的实
时嵌入式操作系统运行, 比如 Linux 、WinCE .net 等,这些操作系统要求 CPU 有 MMU 部件。
目前, SKYEYE 的最高版本是 skyeye-1.3.3 ,其支持的 CPU 内核如表 5-1 所示。
表 5-1 SKYEYE 支持的内核一览表
处理器 内核 架构 1.3.3 版本状态 运行的操作系统
S3C4510 ARM7TDMI ARM stable uClinux
S3C44B0 ARM7TDMI ARM stable uClinux
AT91 ARM7TDMI ARM stable uClinux
S3C3410 ARM7TDMI ARM stable uClinux
LPC2210 ARM7TDMI ARM not finished uClinux
EP7312 ATM720T ARM stable linux
Ep9312 ARM9 ARM stable linux
AT91RM9200 ARM9 ARM stable linux
S3C2410 ARM9 ARM stable linux
S3C2440 ARM9 ARM stable linux
CS89712 ARM9 ARM stable linux
OMAP5912 ARM9 ARM not finished linux
SA1100 StrongArm ARM stable linux
PXA25x XSCALE ARM stable linux
PXA27x XSCALE ARM stable linux
S3C6410 ARM11 ARM stable linux
bf533 bf53x Blackfin testing uClinux
bf537 bf53x Blackfin testing uClinux
CF5249 Coldfire stable uClinux
CF5272 Coldfire testing uClinux
Au1100 R4K MIPS testing linux
Godson R4K MIPS testing linux
MPC8560 E500 PowerPC stable linux
MPC8572 E500 PowerPC testing linux
MPC8641D E600 PowerPC testing linux
leon2 Sparc v8 Sparc testing RTEMS
2.存储器管理单元与缓存单元
除了支持仿真不带 MMU 的 ARM7TDMI CPU 内核和基于 ARM7TDMI 的 Atmel91X40
CPU 外,目前 SKYEYE 也支持仿真带 MMU 的ARM720TCPU 。MMU (Memory Management
Unit ),即存储器管理单元,是用来管理虚拟内存系统的器件。 MMU 通常是 CPU的一部分,
本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作 TLB(translation
lookaside buffers) 。TLB 表中保存的是虚址及其对应的物理地址,权限,域和映射类型。如
果没有查到,则进行查找 translation table,称为 translation table walk (ttw)。经过 ttw后将查
到的信息保存到 TLB 。然后根据 TLB 表项的物理地址进行读写。所有数据请求都送往 MMU ,
由MMU 决定数据是在 RAM 内还是在大容量存储器设备内。 如果数据不在存储空间内, MMU
将产生页面错误中断。
MMU 的两个主要功能是:
将虚地址转换成物理地址。
控制存储器存取允许。 MMU 关掉时,虚地址直接输出到物理地址总线。
MMU/cache的仿真主要是仿真控制 MMU/cache的寄存器结构、 TLB结构、 cache结构、
translation table walk 的控制逻辑以及在此基础上内存的读取操作。 MMU/cache的仿真主
要是依据 ARM720T处理器的体系结构进行的,而且 MMU/cache的仿真与 ARM Linux的移植是分
不开的,所以仿真的过程中需要参照 ARM Linux 和ARM720T对SKYEYE ARM仿真的部分进行相应
的修改。
3.网络芯片
目前网络在嵌入式系统中应用越来越广泛, 通过为 SKYEYE增加虚拟以太网芯片设备, 使
SKYEYE支持ethernet 网络接口模拟。 这样在 SKYEYE硬件模拟平台上运行的操作系统能够与本
地Linux 主机进行网络通信, 当然通过 ipchains/iptables 等包转发机制可以进一步支持直接
跟Internet 通信。
目前嵌入式设备中广泛使用了 NE2K 10Base-T兼容网络芯片, 其中RTL8019AS又是比较有
代表性的一种,购买也比较方便, SKYEYE模拟实现了该器件。设计方案完全基于真实的
RTL8019AS(NE2000兼容,简称 8019AS),但做了部份简化。
在目前的 SKYEYE-1.3.3_rc1版本中提供了 CS8900a与RTL8019器件的模拟仿真模型。
4.LCD与 Touch Screen
作为嵌入式系统重要的输出设备, LCD 屏幕用的非常广泛。 因此有必要为 SKYEYE 加入
LCD 控制器设备仿真,并使用 GTK+ 图形函数库在 Xwindow 中模拟出一个 LCD 屏幕,这样
SKYEYE 上运行的 OS中, LCD 驱动程序就会像驱动真正的 LCD 控制器一样发送控制命令,
而SKYEYE 解释这些控制命令,并相应地在 GTK+ 绘出的窗口中画不同灰度或颜色的点。这
里对 GTK+ 的使用仅限于绘制窗口和画点,因为这是 LCD 屏幕的最基本动作,其它所有的工
作如画图, GUI 的实现都应该由应用程序利用画点的功能去实现,与 SKYEYE 本身无关。
LCD的buffer ram是映射到内存 ram中的, LCD屏幕的每个点对应了内存中的一位或几位,
各个点所对应的内存按行序连续存放。 LCD上显示什么内容, 完全由这块内存决定。 LCD控制
器会根据这块内存去刷新屏幕显示,刷新频率等参数要根据具体使用的 LCD屏幕来决定。 OS
中的LCD驱动程序要往 LCD屏幕上写东西,就是写这块内存。
5.1.3 SKYEYE的设计实现
从结构上分析, SKYEYE 的设计实现分为 4 个层次:
(1)用户接口模块:包括命令行用户界面和图形用户界面,完成处理用户的输入命令,
并把相关调试数据输出给用户的任务。这一部分基本上直接利用了 GDB 的用户接口模块,
并在此基础上有一定的扩充。
(2)符号处理模块:主要处理执行文件的头信息,解释执行文件中内嵌的调试信息,对
符号表的管理,对源代码表达式的解析,定位源代码中的语句位置和机器码的位置关系等。
这一部分也是直接利用了 GDB 的符号处理模块, 也这是有了这个模块支持, SKYEYE 可以
支持源码级调试。
(3)目标控制模块:主要完成执行控制(如中断程序的执行,设置中断条件等) ,程序
栈结构分析,对具体目标硬件的控制(如本地调试、远程调试和模拟调试的控制) 。这一部
分完成对 SKYEYE 上运行的软件的控制,提供了多种调试手段。
(4)目标模拟模块:这一部分是 SKYEYE 的核心。它的功能是模仿计算机系统中的主
要硬件(包括 CPU、内存、 I/O 寄存器和 LCD , TouchScreen 等各种硬件外设)的执行,对
执行文件的机器指令进行解释,并模拟执行每一条机器指令,产生相应的硬件响应等。
4 个可实现的设计模块的结构如图 5-1 所示。 SKYEYE 起源于 GDB/ARMulator ,并进
行了全面的改进和扩展。 SKYEYE 建立在 GNU GDB 的底层,可以模仿多种完整的嵌入式
计算机系统,目前模拟的硬件包括 CPU 、内存、 I/O 寄存器、时钟、 UART 、网络芯片、
MMU 、CACHE 等。
图 5-1 SKYEYE 的设计模块
LCD 和 TouchScreen 已经成为嵌入式系统普遍使用的人机交互设备,在 SKYEYE 模拟
器中加入 LCD 和 TouchScreen 模拟模块,一方面可以使 SKYEYE 完整地模拟带有 LCD 和
TouchScreen 的开发板,例如基于 Cirrus Logic EP7312 CPU 的嵌入式开发板,基于 Intel
PXA250/255 CPU 的 Lubbock 开发板等;另一方面可以提供一个嵌入式 GUI 系统的研究开
发与测试的平台,这对于嵌入式系统的学习研究无疑是一个积极的促进和推动。
5.2 SKYEYE的使用
5.2.1 SKYEYE的安装
1.二进制的 rpm 包安装
对于普通用户来说,可以下载 SKYEYE的二进制的 rpm 包进行安装。 SKYEYE默认的安装
路径为 /opt/skyeye 。从 SKYEYE官方网站( http://sourceforge.net/projects/skyeye/ )
下载 rpm 包,然后进行安装。
目前可以下载的 rpm 包有 skyeye-1.3.1-rc1.i386.rpm ,skyeye-1.2.9-rc1.i386.rpm 。
安装的命令如下,需要用超级用户的权限。
rpm -ivh skyeye-1.3.1-rc1.i386.rpm
2.源代码安装
首先从 sourceforge 网站上下载 SKYEYE的的源代码, 然后解压 SKYEYE源代码压缩文件,
例如
tar xzvf skyeye-1.3.2_rc1.tar.gz
不同版本的 SKYEYE软件的源代码安装方式会存在不同,需要说明的是, skyeye-1.2.9
及以上版本按下列过程进行安装。
上述解压缩源代码压缩文件后得到了 SKYEYE安装包, 进行其所在的目录中, 运行如下命
令进行编译
剩余20页未读,继续阅读
资源评论
czq131452007
- 粉丝: 2
- 资源: 12万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功