Presentation is loading. Please wait.

Presentation is loading. Please wait.

陈香兰 xlanchen@ustc.edu.cn 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 xlanchen@ustc.edu.cn 助教:陈博、李春华 Spring 2009.

Similar presentations


Presentation on theme: "陈香兰 xlanchen@ustc.edu.cn 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 xlanchen@ustc.edu.cn 助教:陈博、李春华 Spring 2009."— Presentation transcript:

1 陈香兰 xlanchen@ustc.edu.cn 助教:陈博、李春华 Spring 2009
嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009

2 SkyEye及其安装和使用 SkyEye简介 SkyEye的安装和使用 安装 运行hello 编译并运行Linux 2018/11/15
基于arm9的Linux OS

3 SkyEye简介 SkyEye是一个开源软件项目, 中文名字是“天目”。 SkyEye的起源和发展
陈渝: 做一个用软件实现的嵌入式开发硬件模拟器,可以在模拟器上运行各种操作系统,这样就可以在没有开发板的情况下学习和研究操作系统 Skyeye的网站: 2018/11/15 基于arm9的Linux OS

4 SkyEye的目标: 在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟多种主流的嵌入式计算机系统。
1)多种嵌入式操作系统,如ARM Linux、μClinux、μC/OS-II、elastos 2)各种系统软件,如嵌入 式TCP/IP协议栈-lwIP,图形子系统-MiniGUI等 可对上述软件系统进行源码级的分析、调试和测试。 2018/11/15 基于arm9的Linux OS

5 SkyEye模拟硬件介绍 目前,SkyEye模拟了大量的硬件,包括 CPU内核、存储器、存储器管理单元、缓存单元、串口、网络芯片、时钟等
目前SkyEye可以模拟的CPU主要是基于ARM内核的CPU,包括ARM7TDMI,ARM720T, ARM9TDMI,ARM9xx,ARM10xx,StrongARM,XScale等 2018/11/15 基于arm9的Linux OS

6 目前SkyEye模拟的开发板包括 主要模拟了对应各个开发板的串口、时钟、RAM、ROM、LCD、网络芯片等硬件外设。
基于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、网络芯片等硬件外设。 2018/11/15 基于arm9的Linux OS

7 2018/11/15 基于arm9的Linux OS

8 存储器管理单元和缓存单元 MMU Memory Management Unit,存储器管理单元, 是用来管理虚拟内存系统的硬件。
2018/11/15 基于arm9的Linux OS

9 TLB,Translation Lookaside Buffers 在MMU中,存放从虚拟地址到物理地址的匹配表
保存的内容包括: 虚址及其对应的物理地址,权限,域和映射类型。 当CPU对一虚拟地址进行存取时, 首先搜索TLB表以查找对应的物理 地址等信息, 如果没有查到,则进行查找translation table,称为Translation Table Walk(简称TTW)。经过TTW过程后,将查到的信息保存到TLB。然后根据TLB表项的物理地址进行读写。 2018/11/15 基于arm9的Linux OS

10 write/read buffer硬件单元 write/read buffer硬件单元的作用与CACHE的作用类似。
CACHE,缓存单元 主要用于缓存内存中的数据,其读写速度远快于内存的读写速度,所以可以提高CPU的内存数据的访问效率。 write/read buffer硬件单元 write/read buffer硬件单元的作用与CACHE的作用类似。 2018/11/15 基于arm9的Linux OS

11 MMU、CACHE、write/read buffer一般是高性能CPU的重要组成部分,且不同类型CPU的MMU、CACHE、write/read buffer的逻辑行为也有一定的差异。为了支持模拟多种类型CPU的MMU/CACHE,SkyEye包含了一个通用的MMU/CACHE模拟实现。通过对一些参数的调整可以支持模拟多种类型的MMU/CACHE物理结构和逻辑行为。 2018/11/15 基于arm9的Linux OS

12 网络芯片 目前SkyEye模拟了网络芯片8019AS, 其特点是:NE2000兼容,内建16KRAM缓冲区,10MB传输速率。
虽然目前模拟的开发板上不一定有网络芯片8019AS,但可以在模拟的开发板上加上网络芯片8019AS 的模拟。 2018/11/15 基于arm9的Linux OS

13 SkyEye的安装 Linux操作系统 Windows+MingW或cygwin 2018/11/15 基于arm9的Linux OS

14 在Kubuntu上安装SkyEye 使用的Linux的版本
uname命令用于打印系统信息 使用uname --help可以看到uname命令 的使用说明 内核名称 主机名 内核版本 内核发行时间 主机硬件架构名称 操作系统名称 2018/11/15 基于arm9的Linux OS

15 在Kubuntu上安装SkyEye 有两种安装方法 下载源代码,编译并安装 直接安装二进制代码 2018/11/15
基于arm9的Linux OS

16 下载源代码,编译并安装 最新版本情况 2018/11/15 基于arm9的Linux OS

17 下载1.2.7 skyeye-1.2.7_rc1.tar.bz2 解压缩 为编译1.2.7的skyeye准备编译环境 2018/11/15
基于arm9的Linux OS

18 下载3.4的交叉编译器 编译1.2.7并安装 判断安装是否成功 arm-linux-gcc-3.4.1.tar.bz2
./configure make sudo make install 判断安装是否成功 2018/11/15 基于arm9的Linux OS

19 下载测试集 最新的skyeye-testsuits,版本为1.2.5 使用skyeye模拟某个板子运行某个Linux
skyeye-testsuite tar.bz2 解压缩 使用skyeye模拟某个板子运行某个Linux 2018/11/15 基于arm9的Linux OS

20 在Linux的根文件系统中添加hello
编写简单的hello.c 使用3.4.1版本的arm-linux交叉编译器,静态编译得到elf格式的可执行文件: /usr/local/arm/3.4.1/bin/arm-linux-gcc –static –o hello hello.c 将linux的根文件系统映像initrd.img加载到某个目录下: mkdir root sudo mount –o loop initrd.img root 将hello拷贝到根文件系统中 sudo cp hello root/bin sudo umount root skyeye -c skyeye.conf -e vmlinux 进入armlinux之后,进入bin目录,运行hello 2018/11/15 基于arm9的Linux OS

21 Thanks! The end.

22 在Kubuntu上 直接安装二进制代码(旧版)
下载编译好的SkyEye的二进制包 例如最新的二进制包在这里是 在合适的目录下解压缩 /usr/local/ 或者/opt/ bz2格式使用“tar -xjvf 压缩文件名” 2018/11/15 基于arm9的Linux OS

23 在Kubuntu上 直接安装二进制代码 skyeye在解压缩得到的目录中的bin子目录下 将skyeye的路径添加到PATH
修改~/.bashrc文件:添加 export PATH=$PATH:所选目录/skyeye-insight/bin(如下图) 2018/11/15 基于arm9的Linux OS

24 2018/11/15 基于arm9的Linux OS

25 为使修改后的.bashrc有效,必须先退出控制台,然后重新启动控制台
判断是否设置成功 命令:echo $PATH 对sky使用tab键功能 OK? 运行skyeye,得到进入skyeye的画面,如图: 2018/11/15 基于arm9的Linux OS

26 2018/11/15 基于arm9的Linux OS

27 SkyEye的使用 为uCLinux安装交叉编译环境并配置uCLinux 编译生成uCLinux和包含应用程序的文件系统
2018/11/15 基于arm9的Linux OS

28 安装交叉编译环境 www.uclinux.org为uCLinux的开发提供相应的交叉编译工具 安装 检查一下
如:arm-elf-tools sh 安装 在root权限下运行 sh ./arm-elf-tools sh 检查一下 对 arm-elf运用shell的tab功能可以看到一系列arm-elf打头的程序,如 binutils系列、gcc、gdb等等 也可以使用命令:arm-elf-gcc -v 2018/11/15 基于arm9的Linux OS

29 2018/11/15 基于arm9的Linux OS

30 测试arm-elf-gcc 源代码 2018/11/15 基于arm9的Linux OS

31 测试arm-elf-gcc 编译 得到的输出文件 检查hello的格式 如何运行hello???
arm-elf-gcc -elf2flt -o hello hello.c 得到的输出文件 hello和hello.gdb 检查hello的格式 file hello 如何运行hello??? 2018/11/15 基于arm9的Linux OS

32 -Wl,-elf2flt选项让链接器 将elf格式转换为flt格式
源文件 -Wl,-elf2flt选项让链接器 将elf格式转换为flt格式 最新实验表明,直接使用-elf2flt即可 生成的文件 2018/11/15 基于arm9的Linux OS BFLT格式:binary FLAT

33 运行hello hello必须在target环境上,无法在host上 如何准备target的运行环境 skyeye====模拟器
uCLinux====操作系统?? 文件系统?? ……?? 2018/11/15 基于arm9的Linux OS

34 获得uCLinux操作系统 两种方案 使用skyeye提供的二进制包 自己动手编译配置uCLinux 2018/11/15
基于arm9的Linux OS

35 编译配置uClinux 到uClinux网站的发行页上下载 使用”tar -xzvf”解压缩,得到uClinux-dist目录
第一步:配置uClinux 命令:make config 在vendor/product选贤中选择GDB/ARMulator Kernel版本选择2.4.x 其他选项不变(使用缺省选项) 2018/11/15 基于arm9的Linux OS

36 编译成功? 第二步:编译生成uClinux和文件系统 命令:make dep; make
uClinux-dist目录里将出现一个images目录 在linux-2.4.x中出现了linux、system.map image.bin: 包含Linux内核映像和romfs文件系统映像 可以烧写到flash中 linux.data: 包含内核所有数据段 linux.text: 包含Linux的所有代码段 romfs.img: romfs文件系统映像 linux: linux内核文件 system.map: 内核符号表 2018/11/15 基于arm9的Linux OS

37 用skyeye运行μcLinux 第一步,制作skyeye的硬件配置文件 第二步,提供上面所需的boot.rom
vi skyeye.conf 第二步,提供上面所需的boot.rom 命令:ln -s images/romfs.img boot.rom 将romfs烧写到flash中 2018/11/15 基于arm9的Linux OS

38 第三步,在skyeye下运行uCLinux
命令:sudo skyeye linux-2.4.x/linux 进入skyeye后, 命令1:target sim 命令2:load 命令3:run 进入uCLinux 2018/11/15 基于arm9的Linux OS

39 进入画面 2018/11/15 基于arm9的Linux OS

40  直接使用uCLinux的二进制包 下载skyeye的二进制包 skyeye-binary-testutils-1.2.0
使用“tar -xjvf” 解压缩 2018/11/15 基于arm9的Linux OS

41 使用uCLinux作为运行操作系统 使用skyeye运行μcLinux skyeye linux target sim load run
烧写到flash中的 内核映像 2018/11/15 基于arm9的Linux OS

42 接下来,将hello拷贝到uCLinux的romfs文件系统中
将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/ 注意:对于initrd.img,只需要mount;cp;umount即可。 无需重新制作initrd.img 若遇到压缩的,则要先解压缩 2018/11/15 基于arm9的Linux OS

43 Boot.rom是romfs的映像,将其挂载到tmp目录上 把tmp目录中的所有内容拷贝到我们的romfs目录中
建立/mnt/tmp目录 Boot.rom是romfs的映像,将其挂载到tmp目录上 把tmp目录中的所有内容拷贝到我们的romfs目录中 这是romfs中的内容 2018/11/15 基于arm9的Linux OS

44 拷贝hello到/bin目录下 重新制作boot.rom 新的boot.rom 2018/11/15 基于arm9的Linux OS

45 运行hello 在模拟器上运行 启动模拟器、装载操作系统、装载文件系统 运行hello skyeye file linux
target sim load run 运行hello 2018/11/15 基于arm9的Linux OS

46 在uCLinux界面下,可以得到: 2018/11/15 基于arm9的Linux OS

47 Thanks! The end.


Download ppt "陈香兰 xlanchen@ustc.edu.cn 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 xlanchen@ustc.edu.cn 助教:陈博、李春华 Spring 2009."

Similar presentations


Ads by Google