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

Slides:



Advertisements
Similar presentations
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Advertisements

UNIX系統與資料庫安裝 Why UNIX 常用的工具程式介紹 資料庫的安裝.
第16章 編譯與升級Kernel系統核心 課前指引
Linux Further.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Android快速开发入门 巫文杰、Android工程师 讲师的CSDN博客地址
嵌入式Linux开发快速入门 迟思堂工作室 李迟
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Android开发入门 -----Android 开发“Ready go!” 主讲:李晓蕾
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
第3章 ARM体系结构.
Bootloader技术分析.
AngularJS -- 使用AngularJS进行开发
褚霸 核心系统数据库组 /11/15 Oprofile 系统层面的性能微调工具 褚霸 核心系统数据库组 /11/15.
第二讲 搭建Java Web开发环境 主讲人:孙娜
学习目标 1、Linux(这里用的是Centos)下mysql5.7的基本安装 2、课后习题.
学习前的准备工作 讲师:burning.
第二天 计算机基础技能培训 (一)linux基础知识
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
存储系统.
SOA – Experiment 3: Web Services Composition Challenge
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
嵌入式操作系统 陈香兰 Spring 2006 中国科学技术大学计算机系.
SVN服务器的搭建(Windows) 柳峰
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Qt移植.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
Visual Studio Team System 简介
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
嵌入式系统的Boot Loader技术 陈文智 浙江大学计算机学院 2009年5月.
逆向工程-汇编语言
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
CPU结构和功能.
(第2版).
Linux核心編譯與模組管理 2013/01/19.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
VSS使用简介 王树升
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3.
Gzip编译及调试 曹益华
三:基于Eclipse的集成开发环境搭建与使用
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
Confidential Property
微机系统的组成.
Web安全基础教程
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab3.
第四章 团队音乐会序幕: 团队协作平台的快速创建
嵌入式Linux开发流程 成都研究所操作系统团队.
Platform Builder使用介绍 WINCE系统应用开发流程说明 ACTION RDC 杨 涛 2005.Dec.3th
姚金宇 MIT SCHEME 使用说明 姚金宇
ARM處理器.
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
实验一:编译运行Linux内核并使用gdb进行调试
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
Python 环境搭建 基于Anaconda和VSCode.
第12章 Linux與 嵌入式uClinux系統
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
24 or 1024? PWN Jawbone Up24 手环.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
一个实时嵌入式操作系统移植问题研究 报告人:荣峰华.
Primary introduction to docker
Presentation transcript:

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

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

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

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

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

目前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

2018/11/15 基于arm9的Linux OS

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

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

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

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

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

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

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

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

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

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

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

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

在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

Thanks! The end.

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

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

2018/11/15 基于arm9的Linux OS

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

2018/11/15 基于arm9的Linux OS

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

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

2018/11/15 基于arm9的Linux OS

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

测试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

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

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

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

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

编译成功? 第二步:编译生成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

用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

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

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

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

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

接下来,将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

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

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

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

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

Thanks! The end.