SkyEye 介绍
Embedded Operating Systems2 主要内容 SkyEye 简介 SkyEye 的安装和使用
Operating Systems3 SkyEye 简介 SkyEye 是一个开源软件项目, 中文名字是 “ 天目 ” 。 SkyEye 的起源和发展 陈渝: 做一个用软件实现的嵌入式开发硬件模拟器,可以 在模拟器上运行各种操作系统,这样就可以在没有 开发板的情况下学习和研究操作系统
Operating Systems4 SkyEye 的目标: 在通用的 Linux 和 Windows 平台上实现一个纯 软件集成开发环境,模拟多种主流的嵌入式计 算机系统。 目前可在 SkyEye 上运行的系统有: 1 )多种嵌入式操作系统,如 ARM Linux 、 μClinux 、 μC/OS-II 、 elastos 2 )各种系统软件,如嵌入 式 TCP/IP 协议栈- lwIP , 图形子系统- MiniGUI 等 可对上述软件系统进行源码级的分析、调试和测试。
Operating Systems5 SkyEye 模拟硬件介绍 目前, SkyEye 模拟了大量的硬件,包括 CPU 内核、存储器、存储器管理单元、缓存单 元、串口、网络芯片、时钟等 CPU 和开发板系列: 目前 SkyEye 可以模拟的 CPU 主要是基于 ARM 内核的 CPU ,包括 ARM7TDMI , ARM720T , ARM9TDMI , ARM9xx , ARM10xx , StrongARM , XScale 等
Operating Systems6 目前 SkyEye 模拟的开发板包括 基于 Atmel 91X40/AT91RM92 CPU 的开发板, 基于 Crirus Logic ep7312 的开发板、 基于 StrongARM CPU 的 ADSBITSY 开发板, 基于 XScale PXA250 CPU 的 LUBBOCK 开发板、 基于 SAMSUNG S3C4510B/S3C44B0 CPU 的开发板、 基于 SHARP LH7A400 CPU 的开发板、 基于 Philip LPC22xx CPU 的开发板等。 主要模拟了对应各个开发板的串口、时钟、 RAM 、 ROM 、 LCD 、网络芯片等硬件外设。
Operating Systems7 存储器管理单元和缓存单元 MMU Memory Management Unit ,存储器管理单元, 是用来管理虚拟内存系统的硬件。 MMU 的两个主要功能是: 1 )将虚地址转换成物理地址; 2 )控制存储器的存取权限。 MMU 关掉时,虚地址直接输出到物理地址总线
Operating Systems8 TLB , Translation Lookaside Buffers 在 MMU 中,存放从虚拟地址到物理地址的匹配表 保存的内容包括: 虚址及其对应的物理地址,权限,域和映射类型。 当 CPU 对一虚拟地址进行存取时, 首先搜索 TLB 表以查找对应的物理 地址等信息, 如果没有查到,则进行查找 translation table ,称为 Translation Table Walk (简称 TTW )。经过 TTW 过程后, 将查到的信息保存到 TLB 。然后根据 TLB 表项的物理地址 进行读写。
Operating Systems9 CACHE ,缓存单元 主要用于缓存内存 中的数据,其读写速度远快 于内存的读写速度,所以可以提高 CPU 的内存 数据的访问效率。 write/read buffer 硬件单元 write/read buffer 硬件单元的作用与 CACHE 的 作用类似。
Operating Systems10 MMU 、 CACHE 、 write/read buffer 一般是高性 能 CPU 的重要组成部分,且不同类型 CPU 的 MMU 、 CACHE 、 write/read buffer 的逻辑行为 也有一定的差异。为了支持模拟多种类型 CPU 的 MMU/CACHE , SkyEye 包含了一个通用的 MMU/CACHE 模拟实现。通 过对一些参数的 调整可以支持模拟多种类型的 MMU/CACHE 物 理结构和逻辑行为。
Operating Systems11 网络芯片 目前 SkyEye 模拟了网络芯片 8019AS , 其特点是: NE2000 兼容,内建 16KRAM 缓冲区, 10MB 传输速率。 虽然目前模拟的开发板上不一定有网络芯片 8019AS , 但可以在模拟的开发板上加上网络芯片 8019AS 的模 拟。
Operating Systems12 SkyEye 的安装 Linux 操作系统 Windows+MingW 或 cygwin
Operating Systems13 在 Kubuntu 上安装 SkyEye 演示使用的 Linux 的版本 uname 命令用于打印系统信息 使用 uname --help 可以看到 uname 命令 的使用说明
Operating Systems14 在 Kubuntu 上安装 SkyEye 有两种安装方法 下载源代码,编译并安装 直接安装二进制代码
Operating Systems15 在 Kubuntu 上 直接安装二进制代码 下载编译好的 SkyEye 的二进制包 到 上找到最合适的版本 例如最新的是 在合适的目录下解压缩 /usr/local/ 或者 /opt/ bz2 格式使用 “tar -xjvf 压缩文件名 ”
Operating Systems16 在 Kubuntu 上直接安装二进制代 码 skyeye 在解压缩得到的目录中的 bin 子目录下 将 skyeye 的路径添加到 PATH 修改 ~/.bashrc 文件:添加 export PATH=$PATH: 所 选目录 /skyeye-insight/bin (如下图)
Operating Systems17
Operating Systems18 为使修改后的.bashrc 有效,必须先退出控制 台,然后重新启动控制台 判断是否设置成功 命令: echo $PATH 对 sky 使用 tab 键功能 OK ? 运行 skyeye ,得到进入 skyeye 的画面,如图:
Operating Systems19
Operating Systems20 SkyEye 的使用 为 μcLinux 安装交叉编译环境,并配置 μcLinux 编译生成 μcLinux 和包含应用程序的文件系统 用 skyeye 运行和调试 μcLinux 内核
Operating Systems21 安装交叉编译环境 为 uclinux 的开发提供相应的交叉编 译工具 如: arm-elf-tools sh arm-elf-tools sh 安装 在 root 权限下运行 sh./arm-elf-tools sh 检查一下 对 arm-elf 运用 shell 的 tab 功能可以看到一系列 arm-elf 打头的 程序,如 binutils 系列、 gcc 、 gdb 等等 也可以使用命令: arm-elf-gcc -v
Operating Systems22
Operating Systems23 测试 arm-elf-gcc 源代码
Operating Systems24 测试 arm-elf-gcc 编译 arm-elf-gcc -Wl,-elf2flt -o hello hello.c 得到的输出文件 hello 和 hello.gdb 检查 hello 的格式 file hello 如何运行 hello ???
Operating Systems25 BFLT 格式: binary FLAT -Wl,-elf2flt 选项让链接器 将 elf 格式转换为 flt 格式小
Operating Systems26 运行 hello hello 必须在 target 环境上,无法在 host 上 如何准备 target 的运行环境 skyeye==== 模拟器 μcLinux==== 操作系统?? 文件系统?? …… ??
Operating Systems27 获得 μcLinux 操作系统 两种方案 1. 使用 skyeye 提供的二进制包 2. 自己动手编译配置 μcLinux
Operating Systems28 编译配置 μcLinux 到 μcLinux 网站的发行页上下载 最新的发行版 uClinux-dist 发行页发行版 uClinux-dist 使用 ”tar -xzvf” 解压缩,得到 uClinux-dist 目录 在 uClinux-dist 目录下 第一步:配置 μcLinux 命令: make config 在 vendor/product 选贤中选择 GDB/ARMulator Kernel 版本选择 2.4.x 其他选项不变(使用缺省选项)
Operating Systems29 第二步:编译生成 μcLinux 和文件系统 命令: make dep; make 编译成功?
Operating Systems30 用 skyeye 运行 μcLinux 第一步,制作 skyeye 的硬件配置文件 vi skyeye.conf 第二步,提供上面所需的 boot.rom 命令: ln -s images/romfs.img boot.rom
Operating Systems31 第三步,在 skyeye 下运行 μcLinux 命令: sudo skyeye linux-2.4.x/linux 进入 skyeye 后, 命令 1 : target sim 命令 2 : load 命令 3 : run 进入 μcLinux
Operating Systems32 进入画面
Operating Systems33 直接使用 μcLinux 的二进制包 下载 skyeye 的二进制包 skyeye-binary-testutils 使用 “tar -xjvf” 解压缩
Operating Systems34 使用 μcLinux 作为运行操作系统 使用 skyeye 运行 μcLinux skyeye linux target sim load run
Operating Systems35 接下来,将 hello 拷贝到 μcLinux 的文件系统中 将 boot.rom 中的内容在 host 中解开,方法如下: mkdir romfs mkdir /mnt/tmp mount -o loop boot.rom /mnt/tmp cp -r /mnt/tmp/* romfs 将 hello 拷贝到 romfs 中的 bin 目录下 重新生成 boot.rom 映像 genromfs -f boot.rom –d romfs/
Operating Systems36 建立 /mnt/tmp 目录 解开并拷贝到 romfs 目录下
Operating Systems37 拷贝 hello 到 /bin 目录下 重新制作 boot.rom
Operating Systems38 运行 hello 在模拟器上运行 启动模拟器、装载操作系统、装载文件系统 skyeye file linux target sim load run 运行 hello
Operating Systems39 在 μcLinux 界面下,可以得到:
Operating Systems40 第二部分结束 SkyEye 简介 SkyEye 的安装和使用