嵌入式Linux操作系统_第1页
嵌入式Linux操作系统_第2页
嵌入式Linux操作系统_第3页
嵌入式Linux操作系统_第4页
嵌入式Linux操作系统_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式Linux嵌入式操作系统嵌入式操作系统是指支持嵌入式系统工作的操作系统,它在知识体系和技术结构上与通用操作系统没有太大区别。实时系统是指一个能够在指定的或者确定的时间内,实现系统功能和对外部或内部、同步或异步事件作出响应的系统。嵌入式操作系统嵌入式操作系统在设计上都非常紧凑有效,抛弃了运行在它们之上的特定的应用程序所不需要的各种功能。嵌入式操作系统多数也是实时操作系统嵌入式操作系统负责嵌入系统的全部软、硬件资源的分配、调度工作,控制协调并发活动,必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。典型的嵌入式操作系统VxWorksWindowsCEpSOSQNXPalmOS嵌入式LinuxC/OS-II国内著名的嵌入式实时操作系统1.VxWorks

VxWorks操作系统美国WindRiver公司于1993年设计开发的一种嵌入式实时操作系统。

VxWorks拥有良好的持续发展能力、高性能的内核及友好的用户开发环境,是目前嵌入式系统领域中使用最广泛、市场占有率最高的实时操作系统。

VxWorks支持多种处理器,如x86、i960、SunSparc、PowerPC、MotorolaMC68xxx,MIPSRX000、StrongARM等。

VxWorks采用GNU的编译和调试器。1.VxWorksVxWorks以其良好的可靠性和卓越的实时性被广泛的应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如通信卫星、军事演习、导弹制导和飞机导航等。美国的F-16、FA-18战斗机,B-12隐形轰炸机和爱国者导弹。美国JPL实验室研制的著名“索杰纳”火星探测器上也使用了VxWorks。2.WindowsCEMicrosoftWindowsCE是从整体上为有限资源的平台而设计的多线程、多任务的嵌入式操作系统。WindowsCE主要针对小容量、移动式、智能化、32位、连接设备的模块化实时应用。WindowsCE能够对掌上设备、无线设备、专用工业控制器的用户电子设备等进行定制,并能在多种处理器体系结构上运行,尤其适用于那些对内存占用空间具有一定限制的设备。WindowsCE的基本内核至少需要200K的ROM。

Microsoft公司为WindowsCE提供了PlatformBuilder和EmbeddedVisualStudio开发工具。

WindowsCE嵌入式操作系统不是一个硬实时操作系统,但它最大的优点是能够提供与PC机类似的图形用户界面和主要的应用程序。2.WindowsCE

4.QNX

QNX是加拿大QNX公司的产品。大多数RTOS都是从68K的CPU上开发成熟,然后再移植到x86体系上。而QNX是直接在x86体系上开发出来的,只是近几年才在68K等CPU上使用。

QNX是实时、可扩充的操作系统,内核非常小巧(QNX4.x约为12KB),且运行速度极快。QNX具有强大的图形界面功能,适合作为机顶盒、手持设备、GPS设备的嵌入式实时操作系统使用。6.嵌入式Linux

Linux是一种免费的、源代码完全开放的、符合POSIX标准规范的操作系统。嵌入式Linux版本包括:硬实时的嵌入式Linux(如新墨西哥工学院的RT-Linux、堪萨斯大学的KURT-Linux)和一般的嵌入式Linux版本(如CLinux、PocketLinux等)。

RT-Linux通过把Linux任务优先级设为最低,而所有实时任务的优先级都高于它,最终达到既兼容通常的Linux任务又保证强实时性能的目的。6.嵌入式Linux

CLinux是针对没有MMU的处理器而开发的,已被广泛使用在ColdFire、ARM、MIPS、SPARC、SuperH等没有MMU的微处理器上。虽然CLinux的内核比Linux2.0内核小得多,但它保留了Linux操作系统稳定性好、网络能力优异以及对文件系统的支持等主要优点。

CLinux与标准Linux最大的区别在于内存管理。7.C/OS-II

C/OS-II是一个完整的,源码公开的,可移植、固化、裁剪的占先式实时多任务内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小、可移植性强、实时性能优良和可扩展性强等特点。

C/OS-II结构小巧,最小内核可编译至2K,即使包含全部功能编译后也仅有6~10KB,非常适用于小型控制系统。8.国内著名的嵌入式实时操作系统

DeltaOS

DeltaOS是全中文的嵌入式实时操作系统,提供强实时和嵌入式多任务的内核。

DeltaOS的特点是任务响应时间快速、确定,不随任务负载大小改变;绝大部分的代码由C语言编写,具有很好的移植性。

适用于内在要求较大、可靠性要求较高的嵌入式系统,成功应用于通信、网络、信息家电等多个领域。8.国内著名的嵌入式实时操作系统

HopenOS

HopenOS由一个体积很小的内核以及一些可以根据需要自行定制的系统模块组成。其核心HopenKernel的规模一般为10KB左右,占用空间小,并具有实时、多任务、多线程的系统特征。8.国内著名的嵌入式实时操作系统

HBOS

HBOS系统具有实时、多任务等特征,能提供浏览器、网络通信核图形窗口等服务,还可供进行一定的定制或二次开发,并能为应用软件开发提供API接口支持。

HBOS系统可用于信息家电、智能设备和仪器仪表等领域开发应用。在HBOS系统平台下,已经成功地开发出机顶盒和数据采集等系统。嵌入式Linux概述

Linux介绍嵌入式Linux系统交叉开发环境开发工具GNU的介绍Linux介绍Linux是类UNIX操作系统。最初是由LinusTorvalds于1991年在基于Intel80386处理器的IBM兼容机上开发的操作系统。出现在二十世纪九十年代,在短短十几年的时间里发展成为功能强大,设计完善的操作系统。源程序可以在/下载。Linux介绍Linux有异常丰富的驱动程序资源,支持各种主流的硬件设备与技术。它能够固化在容量只有几KB或者几MB的存储芯片或者微控制器中。Linux包含了现代的UNIX操作系统的所有功能特性,包括多任务、虚拟内存、虚拟文件系统、进程间通信、对称多处理器(SMP)、多用户支持等功能。Linux介绍Linux具有以下特性:小巧,吞吐率好强大的网络功能真正的多任务和多用户符合IEEEPOSIX标准支持数十种文件系统

有完整的开发工具嵌入式Linux操作系统的应用领域:手机、PDA数字相机、数字电视机、数码相机VCD/DVD音响设备、可视电话家庭网络设备洗衣机、电冰箱智能玩具Linux介绍广泛应用的原因:公开源代码没有专利费外部设备驱动丰富网络协议及中间件非常丰富稳定可靠良好的可移植性嵌入式Linux嵌入式Linux(EmbeddedLinux)是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几KB或者几MB字节的存储器芯片或者单片机中,是适用于特定嵌入式应用场合的专用Linux操作系统。嵌入式Linux在目前已经开发成功的嵌入式系统中,约有一半使用的是Linux。这与它自身的优良特性是分不开的。嵌入式Linux同Linux一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。

嵌入式Linux

嵌入式Linux还在Linux基础上做了部分改进,主要的改动有:改善的内核结构提高的系统实时性嵌入式Linux同Linux一样,也有众多的版本,其中不同的版本分别针对不同的需要在内核等方面加入了特定的机制。

嵌入式Linux系统交叉开发环境

交叉开发模型主要思想是,首先在宿主机(Host)上安装开发工具,编辑、编译目标板(Target)的Linux引导程序、内核和文件系统,然后下载到目标板上运行。通常这种在宿主机环境下开发,在目标机上运行的开发模式叫做交叉开发。交叉开发模型见图所示。嵌入式Linux系统交叉开发环境交叉开发Host(宿主机):通常是硬件资源丰富的PC机或工作站。编辑、编译、链接等过程在HOST上完成。Target(目标机):即嵌入式设备,是应用程序的最终运行平台。调试在二者间联机交互进行,连接方式:RS232串口,TCP/IP,USB等。Host与Target的差别硬件差别:处理器、存储能力、外设等软件环境差异:Host上有通用OS,有可视化开发环境;Target一般是裸机,无任何软件资源,无法进行开发调试。

开发工具GNU的介绍

GNU(GNU’sNotUnix)项目是自由软件基金会(FreeSoftwareFoundation)的董事长RichardM.Stallman于1984年发起,意在软件开发团体中发起支持开发自由软件的运动。

开发工具GNU的介绍

GNU工具包括:GCC:编译应用程序和内核Glibc:工具库Binutils:工具包make:工程管理器,读入Makefile文件,按内容进行编译

开发工具GNU的介绍

GNU代码生成和调试工具包括:C编译器gccC++编译器g++GNU的汇编器asGNU的链接器ld二进制转换工具(objcopy、bjdump)调试工具(gdb、gdbserver、kgdb)基于不同硬件平台的开发库。开发工具GNU的介绍1.GNUBinutils工具

工具集GNUBinutils主要是一套用来构造和使用二进制代码所需的工具集。建立嵌入式交叉编译环境,GNUBinutils工具包是不可缺少的,没有Binutils,GNU的C编译器gcc将无法正常工作。开发工具GNU的介绍2.编译器gcc

是GNU的功能强大,性能优越的多平台编译器,是Linux中最重要的软件开发工具。它被成功地移植到不同的处理平台上。标准的台式Linux上的gcc是针对IntelCPU的,而ARM系列开发软件使用的是针对ARM系列处理器的gcc编译器、arm-elf-gcc、arm-elf-as及相应的GNUBinutils工具集。开发工具GNU的介绍Gcc的编译流程使用gcc编译器编译C语言程序时,通常会经过四个处理阶段,即预处理阶段、编译阶段、汇编阶段和链接阶段。gcc是通过文件的后缀来区别文件的类别,下面的表中给出gcc的部分约定规则。在使用gcc编译器时,需要给出一系列调用参数和文件名,当没有给出时,gcc将使用缺省参数,gcc基本的用法是:gcc[options][filename]开发工具GNU的介绍

其中,options就是参数选项,filename是相关的文件名称。常用的选项有:–c:只编译生成目标文件,不链接成可执行文件。–DMACRO=DEFN:以字符串“DEFN”定义MACRO宏。–E: 只对程序进行预处理。–g: 生成调试信息,GNU调试器可利用该信息。–llibrary: 用来指定所使用的库文件。–ldirectory:为include文件的搜索指定目录。–ofilename:生成指定的文件名的可执行文件。

开发工具GNU的介绍开发工具GNU的介绍3.调试器gdb

gdb是GnuDeBugger的缩写,是GNUC的用来调试C和C++程序的调试工具。开发者在使用它时,可以了解程序在运行时的详细情况,如程序的内部结构和内存等信息。gdb能够通过完成以下几个任务来帮助你查找程序中的错误。Linux开发环境建立Windows环境+CygwinWindows环境+VMWare虚拟机(安装RedHat9.0)Linux环境,推荐RedHat9.0单机模式(一台计算机)Cygwin是运行于Windows中的一个应用程序,它可以使得Linux环境下的应用程序可以在Cygwin环境下进行编译,即可以在Windows下进行编译。在linux环境下进行Linux开发Linux开发环境建立Linux的程序编辑、编译、调试都在Linux环境进行必须采用支持GDB的调试器(如ADT1000A)才能进行调试,否则只能通过BOOTLOADER进行简单的程序烧写运行等调试信息的打印可以通过串口完成,使用linux下的minicom超级终端程序(类似于Windows上的超级终端工具)接收并显示目标板传送的打印信息Linux串口驱动完成后,可以通过内核打印函数printk向串口打印信息,这是Linux内核调试过程中最有效的手段在Windows+VMWare虚拟机环境下进行Linux开发如果需要使用只支持Windows环境下调试的调试器,可以通过在VMWare中安装linux虚拟机,在该虚拟机中进行编辑、编译Linux,然后通过网络(ftp、nfs、ssh)等手段传送到Windows中,进行调试,这样编译和调试可以分别在linux和windows环境下但是是在一台电脑中完成,它的缺点是系统要求较高,运行速度慢。VMWare是运行于Windows中的一个应用程序,是一个虚拟机,可以在其上安装多个操作系统,相当于在Windows上安装一个虚拟的操作系统。Linux开发环境建立Step1安装主机Windows+VMWare在VMWare中安装linux虚拟机Step2在linux虚拟机上安装开发工具软件Step3开发环境配置(linux)配置网络:配置IP地址、NFS服务、防火墙配置NFS:设置主机和目标机间的共享目录Step4配置超级终端(windows)目标机的信息窗口Linux开发环境建立在Windows+VMWare虚拟机环境下进行Linux开发Linux内核的目录结构Linux内核主要由5个子系统组成◆进程调度子系统;◆进程间通信子系统;◆内存管理子系统;◆虚拟文件子系统;◆网络接口子系统;Linux内核的目录结构linuxDocumentationarchdriversfsincludeinitmmnommulibnetscript有关内核的详细文档硬件体系结构相关源代码内核中所有设备驱动程序所有文件系统的代码内核代码库文件的头文件kernel初始化代码Linux内核的内存管理常用库函数代码内核的网络协议代码配置内核的一些脚本文件Linux内核的arch目录archbootkernellibmach-s3c2410vmlinux.lds压缩内核启动引导代码内核起始代码常用函数s3c2410平台相关代码核心的连接脚本文件与架构和平台相关的源代码都放在arch目录下移植工作的重点就是移植arch目录下的文件Linux内核移植分三个步骤配置内核编译内核下载、运行、调试内核Linux内核配置工具makeconfig基于文本的最为传统的配置界面makemenuconfig基于文本选单的配置界面makexconfig基于图形窗口模式的配置界面编译Linux内核建立依赖关系makedep编译内核make编译内核makezImage编译压缩核心(zImage)编译生成的Linux映像文件zImage通常保存在arch/arm/boot/目录下下载、运行和调试内核通过调试器下载内核并运行通过BOOTLOADER下载内核到SDRAM中运行通过BOOTLOADER将内核烧写到FLASH中,然后运行LinuxBootLoadervivi是韩国MIZI公司提供的一款针对S3C2410芯片的Bootloader。能引导Linux系统的运行,编译完内核后,快速下载内核和文件系统。Vivi首先通过串口下载内核和文件系统网络驱动正常运行后,vivi可通过网口下载内核和文件系统vivi的软件架构分为三个层次BootLoadervivivivi的工作模式vivi有两种工作模式,启动加载模式可以在一段时间后(这个时间可更改)自行启动Linux内核,这是vivi的默认模式。在下载模式下,vivi为用户提供一个命令行接口,通过该接口可以使用vivi提供的一些命令。Vivi的启动过程(1)

关闭看门狗

(2)

禁止所有中断

(3)

初始化system

clock

(4)

初始化串口

(5)

初始化nand

flash相关的控制寄存器

(6)

把vivi

copy

SDRAM上,最后把pc指向ram

(7)

设置堆栈

(8)

call

一个叫做main的函数。这个函数是c写的

Vivi的启动过程main()函数中调用若干个初始化的函数reset_handler()

(clear

memory)

board_init()

(时钟初始化,I/O配置)mem_map_init()

和mmu_init

(使用nand

flash作启动设备,内存映射完后,MMU开始工作,初始化cache)

heap_init()

(初始化堆)mtd_init()

初始化MTD设备(闪存芯片、小型闪存卡、记忆棒等之类的设备)

init_priv_data()

初始化私有数据init_builtin_cmds()

初始化用户的基本命令,包括boot,

bon,

load,

help

等boot_or_vivi()

用于启动vivi---等待用户输入,有输入进入vivi_shell,没有输入,超时后启动linux

至此main结束

Vivi的启动过程Vivi常用命令启动vivi时,在超级终端界面中键入任意键(除enter外)进入vivi命令界面,字符提示为“vivi>”,reset命令复位Arm9系统help命令显示开发板上vivi支持的所有命令,如boothelpVivi常用命令part命令用于对分区进行操作。load命令下载程序到存储器中(Flash或者RAM中)。param命令用于对bootloader的参数进行操作。boot命令用于引导linuxkernel启动。bon命令用于对bon分区进行操作。go命令跳转到指定地址处执行该地址处的代码Linux文件系统Linux内核移植文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。指文件存在的物理空间。在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。Linux的最重要特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其它种操作系统共存。Linux的文件系统是采用的阶层式树状目录结构,最上层是“/”,然后在下边创建其它的目录。文件系统中管理的每个对象(文件或目录)在Linux中表示为一个inode。inode包含管理文件系统中的对象所需的所有数据:文件类型、访问权限、属主、时间戳、大小、指向数据块的指针Linux文件系统Linux文件系统文件系统的创建:

这个过程是存储设备建立文件系统的过程,一般也被称为格式化或初始化,通过一些初始化工具来进行。一般的情况下每个类型的操作系统都有这方面的工具,也有多功能的第三方工具。在Linux中有mkfs系列工具

挂载(mount):

在Linux中将一个文件系统与一个存储设备关联起来的过程称为挂载(mount)。

◆使用mount命令将一个文件系统附着到当前文件系统层次结构中(根)。在执行挂载时,要提供文件系统类型、文件系统和一个挂装点挂载点通常是一个空置的目录。

◆文件系统只有挂载才能使用。

◆根文件系统是系统启动时挂载的第一个文件系统,其他的文件系统需要在跟文件系统目录中建立节点后再挂载。Linux文件系统Linux文件系统Linux内核移植虚拟文件系统(VirtualFileSystem)是物理文件系统与服务之间的一个接口层,它对Linux的每个文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以及系统中运行的其他进程看来,都是相同的。严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消亡。Linux文件系统Linux内核移植VirtualFileSystem(虚拟文件系统)使得Linux可以支持多个不同的文件系统。由于系统已将Linux文件系统的所有细节进行了转换,所以Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。Linux的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。虚拟文件系统是为Linux用户提供快速且高效的文件访问服务而设计的。常用Linux文件系统Linux系统核心可以支持十多种文件系统类型:JFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC、romfs等。cramfs是一个压缩式的只读文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在cramfs中的位置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。cramfs中的解压缩以及解压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护的。常用Linux文件系统Linux系统中混合使用Cramfs、YAFFS和Ramfs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论