文档库 最新最全的文档下载
当前位置:文档库 › 3 利用u-boot下载VxWorks操作系统

3 利用u-boot下载VxWorks操作系统

3 利用u-boot下载VxWorks操作系统
3 利用u-boot下载VxWorks操作系统

实验3 利用u-boot下载VxWorks操作系统一实验原理

实验2创建了一个基于目标板的Bootable工程,并最终生成了VxWorks映象文件的二进制代码。该代码运行起来以后就是VxWorks操作系统,但是它不能在主机中运行,它必须通过一定的手段下载到相应的目标机中运行。实验2编译时选择的BSP是jx2410_920t,它对应的目标机是CVT-2410的实验箱,因此,必须将该代码下载到CVT-2410实验箱中运行。

下载的地址是在代码中已经确定下来的,为0x30010000,此处为SDRAM,该地址在“C:\Tornado2.2\target\config\jx2410_920t\config.h”文件中进行了定义,如下所示的RAM_LOW_ADRS即为VxWorks映象的入口点地址。

#define RAM_LOW_ADRS 0x30010000 /* VxWorks image entry point */

#define RAM_HIGH_ADRS 0x33800000 /* RAM address for ROM boot */

可以修改该地址,但是注意下面几点:

1. 该地址只能为0x30010000以后的地址,如0x30020000,不能使用0x30000000,因为从0x30000000开始的64KB需要作为系统保留的区域供操作系统使用;

2. 修改该地址后,必须按照实验2的内容重新建立一个Bootable工程,否则修改无效;

3. 该地址修改会牵涉到后续部分实验,此处不建议修改该地址。

必须将VxWorks代码下载到0x30010000地址处,否则将产生错误。

下载方式是通过将目标板与主机PC通过以太网连接,并使用tftp协议进行传输,主机PC作为tftp服务器端将VxWorks.bin所在目录作为tftp服务器的根目录。Windows下使用tftpd32.exe程序作为tftp服务器。而客户端上运行的u-boot使用tftp命令连接tftp服务器并获取vxworks.bin文件。然后通过u-boot的go命令跳转到0x30010000地址处运行。

二实验目标

1. 将实验2创建的Bootable的工程中生成的VxWorks映象文件的二进制代码下载到目标机中运行。

三实验步骤

1.建立交叉开发环境

1) 将实验箱的串口0(UART0)与PC主机的串口相连;

2) 在PC主机上运行超级终端工具,并将串口设置为115200波特,8-N-1(8比特数据

位,无奇偶校验位,1位停止位),并且关闭硬件流控和软件流控。可以使用Windows

自带的超级终端软件,也可以使用dnw软件。Windows自带的超级终端软件通过点

击Windows的“开始”->“程序”->“附件”->“通讯”->“超级终端”,其设置

参考下图。

在“实验代码”目录下的“3”目录有dnw.exe程序,如下图所示:

双击该程序打开DNW软件,点击Configigurations->options菜单,打开设置对话框,设置如下图所示,点击OK后在DNW中选择Serial Port->Connect菜单打开串口。

3) 将实验箱的网口与PC机的网口使用实验箱自带的直连网线连接起来,并且将PC

主机的IP地址配置为:192.168.1.180;

注:

此处可以使用普通网线将实验箱的网口连接到PC机所在局域网的HUB上,但是如果直接连接到PC机的网口,我们叫做直连,则必须使用实验箱自带的直连网线。

4) 给实验箱上电,DNW将出现如下图所示提示信息:

5) 在UBOOT提示符(#)下检查教学系统的网络设置情况,可以通过printenv命令检

查,其中的输出中查找:serverip和ipaddr的设置,要求服务器IP地址设置为

192.168.1.180,实验箱的IP地址设置为:192.168.1.45,如果不对,可以使用如下

命令分完成IP地址的配置。

setenv ipaddr 192.168.1.45

setenv serverip 192.168.1.180

saveenv

命令将设置保存在实验箱的flash中,即使重新上电也将保存该内容;

注:

此处主机的IP地址必须和UBOOT中设置的serverip一致,而且和ipaddr在同一网段。

建议直接修改主机的IP地址而不要修改UBOOT中的设置。

3.启动tftp服务器

在“E:\ARM9资料\南京大学\实验代码\3\tftpd32j”目录下有个tftpd32.exe程序,双击该程序打开下图所示对话框:

接着将设置实验2中生成的VxWorks映象文件二进制代码所在目录“E:\ARM9资料\南京大学\实验代码\2\default”为tftp服务器的根目录。点击Settings按钮在弹出的对话框中选择目录“E:\ARM9资料\南京大学\实验代码\2\default”。设置成功后,通过tftp协议就可以访问主机Current Directory目录下的所有文件(本实验需要的是vxworks.bin文件)。

4.下载VxWorks内核映象文件vxworks.bin

在u-boot控制台(在DNW中操作)中输入如下命令将内核映象文件vxworks.bin下载到JX2410的RAM中,下载地址为0x30010000。

JX2410 #tftp 30010000 vxworks.bin

如果网络连接正确且tftp服务器设置正确,将开始下载,下图为显示在DNW中的下载过程。

5.运行VxWorks内核

在u-boot控制台中输入如下命令将从内核下载地址(0x30010000)处运行VxWorks内核。

JX2410 #go 30010000

下图为内核启动后的界面。启动完成后自动进入->的提示符,它是VxWorks的控制台,

可以在该控制台下输入命令对VxWorks操作系统进行操作。

四思考题

1.

VxWorks操作系统是如何下载到目标机中运行的?

2.

VxWorks操作系统被下载到目标机的什么地址,为什么是该地址?五实验报告书编写要点

1. 设置tftp服务器;

2. 下载VxWorks操作系统到目标机;

3. 从目标机运行VxWorks操作系统。

六编程指导内容

1.

如何修改VxWorks映象文件的入口地址?

VxWorks常用命令汇总

VxWorks常用的命令 1.与任务相关的命令 sp function,[arg1],...,[arg9] -启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节 period n,function,[arg1],...,[arg8] -创建一个周期调用function的任务,周期为n秒,最多接受8个参数 repeat m,function,[arg1],...,[arg8] -创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数 ts tidX -挂起任务 tr tidX -恢复挂起的任务 td tidX -删除任务 i tidX -显示任务基本信息,参数为0时显示全部任务 ti tidX -显示任务详细信息,包括寄存器、堆栈等 tt tidX -显示任务的函数调用关系 checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务 [其中tidX可以为任务ID 也可以为任务名] 2、系统信息 lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数: 0,给出符号表统计;""(空字符串),列出全部符号 lkAddr addr -显示addr地址附近的符号表 l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令 h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目 d [addr,[number],[width]] -显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8 m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等 printErrno value -打印系统定义的错误码的宏 3、与网络相关的命令 ifShow ["ifname"] - show info about network interfaces inetstatShow - show all Internet protocol sockets tcpstatShow - show statistics for TCP udpstatShow - show statistics for UDP ipstatShow - show statistics for IP icmpstatShow - show statistics for ICMP arpShow - show a list of known ARP entries

嵌入式系统的比较

嵌入式系统的比较 简单介绍ecos, uc/OS,uClinux,RTlinux,Linux 到目前为止接触过QNX、RTLinux、uC/OS-II、Nucleus Plus、VRTX、VxWorks、eCos,总结下来有以下特点: Ecos:多任务抢占机制,可配置(特色),可配置文件系统 uc/OS:代码很少,多任务抢占机制,需自己扩展文件系统 uClinux:非抢占式,没有MMU管理存储器,有文件系统等许多功能 RTlinux:通过在L inux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把标准的Linux内核作为实时内核的一个进程与用户进程一起调度,标准的L inux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行。 Linux:有MMU管理存储器。 1:QNX 的可靠性很好,协议栈、各种外设驱动稳定,只是运行所需资源有些多,需要MMU。如果需要高可靠性应用,QNX可能是最好的选择。 2:RTLinux的实时性与其它RTOS相比有些差。但是,因为好多Linux资源可以利用,是RTLinux的优点。但是运行所需资源比QNX还多,也是需要MMU。可以选用开源的RTLinux 或内容新的商用RTLinux。 3:uC/OS-II比较小巧,移植容易,网上资源很多,核心可以做得很小。但不是免费的,并且驱动需要自己编写,协议栈、图形驱动都要另外加。 4:Nucleus Plus比uC/OS-II庞大,另外提供了文件系统、协议栈、图形界面等许多东西。当然也是分开卖的,不是免费的东西。使用起来比较容易上手。 5:VRTX 是一款比较早的RTOS,现在使用的人已经很少。运行还是比较可靠。配套的文件、协议栈等模块很少。 6:VxWorks是RTOS中的大牛,国内外用的人很多,开发工具功能强大,使用方便,但是价格昂贵。也有基于MMU的高可靠性的产品。所需资源比QNX小,比uC/OS、eCos 多。对于一些私企或者好似小公司来说,可用性值得商榷。 7:eCos是开源的RTOS。针对不同的CPU已经做了许多现成的移植。代码尺寸比Nucleus 的略大。如果不用USB host等,并且不想花费太多的金钱,应该是不错的选择。 μC/OS和uClinux的比较 引言 随着现代计算机技术的飞速发展和互联网技术的广泛应用,从PC时代过渡到了以个人数字助理、手持个人电脑和信息家电为代表的3C(计算机、通信、消费电子)一体的后PC 时代。后PC时代里,嵌入式系统扮演了越来越重要的角色,被广泛应用于信息电器、移动设备、网络设备和工控仿真等领域。 嵌入式系统是以嵌入式计算机为核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、体积、成本、功耗等综合性能有严格要求的计算机系统。随着

嵌入式实时操作系统VxWorks入门

嵌入式实时操作系统VxWorks入门 VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。VxWorks原先对中国区禁止销售,自解禁以来,在我们的军事、通信、工业控制等领域得到了非常广泛的应用。 VxWorks的实时性体现在能于限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。因此,实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。本文将对这个操作系统进行一个入门级的、全面的介绍。为力求展示其全貌,全文共分五章: (1)搭建VxWorks嵌入式开发环境; (2)简要介绍VxWorks的基本组成,内核的基本结构; (3)概述VxWorks板级支持包(BSP)的概念及VxWorks的启动过程; (4)介绍VxWorks设备驱动的架构及编写方法; (5)指明VxWorks应用开发的思路,任务调度及任务同步、中断与任务的同步机制。 以上各章中将贯穿着许多实例,由于本文定位于入门级教程,所以文中的实例都将十分简单。下面我们进入第一章内容的讲解。 嵌入式系统的调试调试方法一般为通过PC(宿主机)上的集成开发环境交叉编译针对特定电路板(目标机)的程序,然后将程序通过目标板的JTAG、串口或网口等途径下载到目标板上运行。因此,为了构造一个嵌入式系统的学习环境,拥有一块包含CPU、存储器及I/O 电路(构造计算机系统)的目标电路板往往是必要的。虽然许多集成开发环境附带模拟软件,但仅限于指令集的模拟,均无法模拟物理的目标机硬件平台,因而在其上只能进行应用程序的象征性模拟开发。但是,并非所有人都能拥有一块物理的电路板。在这种情况下,我们如何构造一个模拟的开发环境,其学习效果就如同拥有完全真实的电路板一样呢?本文试图解答此问题,主体内容包括四个方面: (1) 利用VMware等软件模拟真实的目标机; (2) 构建VMware虚拟PC上VxWorks BSP,建立Bootrom和OS映像; (3) 修改Tornado相关设置,连接宿主机与目标机,建立调试通道; (4) 写一个简单的应用程序并下载到目标系统运行。 图1 嵌入式系统的调试 本章工作的最终目标为: (1)VxWorks在VMware启动成功并顺利运行,的开发模型: 图4 PC作为目标机 很遗憾,这种方法实际上非常麻烦,同时开动两台PC进行调试将使你和你的室友饱受折磨,既然他如此地热切于游戏和上网。因此,我们可以借助VMware来在本机上虚拟出另一PC。 VMware的确是天才的作品!在同一PC上,利用VMware几乎可以安装所有的操作系统,而且操作系统之间的切换不需要重新启动电脑。VM的意义是Virtual Machine,即虚拟出一个逻辑的电脑,它可以提供基于Intel CPU的虚拟PC系统环境,包括CPU、内存、BIOS、硬盘和其他外围硬件设备。 下面我们讲解用VMware来建立一台虚拟PC的步骤: (1)并安装VMware; (2)使用VMware向导建立一个针对VxWorks的虚拟机;

vxworks653编程手册

一.V xWorks653运行时系统 1.1. 运行时层 一个vxworks653模块由下面四层组成: ■core OS—必需 ■partition—至少需要一个(vThreads 或COIL-based),每个都在一个分区的操作系统之中■APEX shared library—ARINC 653 应用所需 ■POSIX shared library—POSIX 应用所需 1.1.1.Core OS层 核心操作系统提供服务给分区。 缺省的,核心操作系统使用ARINC653规范中的时间抢占的调度(TPS)来调度分区。Vxworks653的核心操作系统还可以采用APPS调度策略在TPS调度的空闲时间内调度优先级

抢占调度(PPS)使能的分区。 核心操作系统提供给每个VThreads分区操作系统的服务包括: ●分区系统资源 ●调度分区 ●代表分区的操作系统执行trap异常 ●定义和强制分区边界 ●装载分区 ●使用端口和通道在分区间传递消息 ●处理I/O ●代表应用完成系统调用 ●支持分区的调试 ●监控分区和系统的健康 1.1. 2.vThreads 层 vThreads分区操作系统在核心操作系统分配给该分区的时间内调度vThreads中的线程。vThreads不直接与设备交互,而是通过核心操作系统的系统调用。 1.1.3.APEX 层 构建在vThreads之上,遵循ARINC653规范,并且提供相应功能和API。 1.1.4.POSIX层 构建在vThreads之上,遵循用于实时扩展的POSIX标准(1003.1b)。 1.2. 装载和启动 当目标板加电时,按照下面的步骤进行装载和启动 ●初始的启动码装载核心操作系统,分区操作系统,共享库,以及应用 ●核心操作系统初始化自身,启动它自己的子系统 ●核心操作系统创建分区 ●核心操作系统启动分区调度器,并且让应用初始化自身 核心操作系统可以在初始化完成之后下载在线装载的应用程序到分区。应用可以在分区运行之时装载到分区。

常见的嵌入式操作系统

常见的嵌入式操作系统 分类:嵌入式操作系统2012-12-11 10:06 459人阅读评论(1) 收藏举报嵌入式操作系统 嵌入式操作系统与通用的操作相比较主要特点在于: 1.小内核,稳定可靠。 2.需要可装卸、可裁剪,以便能灵活应对各种不同的硬件平台。 3.面向应用,强实时性,可用于各种设备控制当中。 国际上常见的嵌入式操作系统大约有40种左,右如:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive 。他们基本可以分为两类,一类是面向控制、通信等领域的实时操作系统,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx、ati的nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(pda)、移动电话、机顶盒、电子书、webphone等,系统有Microsoft的WinCE,3Com 的Palm,以及Symbian和Google的Android等。 一、VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是T ornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。 然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。 二、Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操

VxWorks操作系统RTP介绍和使用方法

VxWorks 操作系统RTP 介绍和使用方法 从VxWorks 6.x开始引入RTP(VxWorks real time process projec模t) 式编程,这种模式的优点是应用程序相互独立,互不影响,而且增加了内核的稳定性,缺点是由于“内核态”与“用户态”的内存拷贝,其执行效率有所降低,随着CPU 速度越来越快,这点效率的牺牲已经越来越不重要。相比较于传统的DKM (downloadable kernel module project ),RTP适合多个团队独立运作,然后汇总 联试,这种模式除了全局函数不能再shell 里直接调用外,其对应用程序几乎不 做任何约束,原有的DKM 工程代码稍作修改即可正常运行。内核变化较大,需 要添加较多的组件,内存需要较好的划分,为保持应用程序直接调用函数调试的 习惯,需要封装接口供用户使用。 现简单的介绍RTP使用方法,并给出demo 代码供参考。 1. 新建并编译工程: (1) File->new-> VxWorks real time process projec如t, 图【1】 图【1】 (2) 一路next 后,选择如图【2】所示的编译器

图【2】 (3) 选择Finish 后,工程新建完毕。 (4) 导入源文件:这里的源文件名称是fooRtpApp.c ,一种较快捷的方式是选 中新建的工程,按下F5,源文件会出现在工程中. (5) 右键选择编译,出现如图【3】,选择Continue 继续。 图【3】 编译完成后,会生成vxe 格式的可执行文件,此处为usrAppA.vxe 。 2. 下载可执行性文件 待板子启动后,使用ftp 将vxe 文件下载到板子中。步骤如下: (1)运行->cmd,打开对话窗口,如图【4】所示:

物联网操作系统的必备特性

物联网操作系统的必备特性 物联网所带来的机遇与挑战都是空前的。要抓住机遇,迎接挑战,是否拥有最佳的操作系统做为基础是极为关键的问题。 那么,物联网环境对操作系统提出了哪些不同于以往的需求?产品开发商采用怎样的操作系统,拥有哪些特征或技术,最有可能在物联网的发展中把握先机?基本上,今后的RTOS 不仅必须具备传统的实时性、确定性和可靠性,还必须提供高度互联、全面安全、远程管理等物联网环境所要求的全新能力。最近,风河公司推出了VxWorks7,对这套在嵌入式领域主导多年的RTOs(实时操作系统)进行了再次创新,其目标正是“物联网市场已达 实时操作系统 (The RTOS for thelnternet of Things) ”。实时性依然是物联网操作系统的必备特性 实时操作系统( RTOS,RealTimeOperation System)是指能够在确定的时间对内部或者外部的事件做出正确的响应。在实时操作系统中,进程执行结果的正确与否不仅与逻辑运算或数学计算结果的正确性相关,而且与得出这个正确结果的时间有关。也就

是说,在实时系统 中,如果一个进程的运算结果虽然 是正确的,但是由 于它完成的时间超出了给定的最后期限,那么这个结果就是毫无意义的。 例如汽车中使用的气囊。当报告车辆碰撞的传感器通知CPu 后,操作系统应快速地发出打开气囊的任务,并且不允许任何其他非实时处理进行干扰,晚一秒钟展开气囊比没有气囊的情况更糟糕,这就是一个典型的实时系统。 通常认为,实时操作系统要求速度非常快。但实际上,实时操作系统强调的不仅仅是速度,而是时间关系的次序和确定性。例如,一条货轮在码头等待各地的卡车运来货物之后装船运往海外,规定好了离港启航的时间。那么,如果有一辆卡车在货轮离港时间之后才把货物运到了码头,逻辑上它虽然完成了陆地货运任务,但已经没有任何意义了。货车行驶速度和气囊打开速度当然不可相提并论,但就它与货轮配合的时间顺序而言具有同样都是实时系统,都必须要满足的是时序确定性,而跟速度有多快不一定相关! 再例如,如果使用足够高性能的CPU,Windows 可以提供非常快的速度。但是,当某些后台任务正在运行时,有时候响应会变得非常漫长,以至于某一个简单的读取文件的任务也会很长时间无响应。并不是说Windows 不够

几种主流嵌入式操作系统分析

几种主流嵌入式操作系统分析 1.嵌入式Linux 嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化 在容量只有几KB或者几MB 字节的存储器芯片或者单片机中,是适合于特定嵌入式应用场合的专用Linux操作系统。在目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。 这与它自身的优良特性是分不开的。 嵌入式Linux 同Linux 一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适应嵌入式领域的开发,嵌入式Linux 还在Linux 基础上 做了部分改进,如下所示。 ? 改善的内核结构 Linux 内核采用的是整体式结构(Monolithic),整个内核是一个单独的、非常大的程序,这____________样虽然能够使系统的各个部分直接沟通,提高系统响应速度,但与嵌入式系统存储容量小、 资源有限的特点不相符合。因此,在嵌入式系统经常采用的是另一种称为微内核(Microkernel) 的体系结构,即内核本身只提供一些最基本的操作系统功能,如任务调度、内存管理、中断 处理等,而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实际 需要进行取舍。这样就大大减小了内核的体积,便于维护和移植。 ? 提高的系统实时性 由于现有的Linux 是一个通用的操作系统,虽然它也采用了许多技术来加快系统的运行 和响应速度,但从本质上来说并不是一个嵌入式实时操作系统。因此,利用Linux 作为底层 操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统,如RT-Linux 已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等 各种领域。 嵌入式Linux 同Linux 一样,也有众多的版本,其中不同的版本分别针对不同的需要在内核等方面加入了特定的机制。嵌入式Linux 的主要版本如表4.1所示。 表4.1 嵌入式Linux主要版本 版本简单介绍 μCLinux 开放源码的嵌入式Linux 的典范之作。它主要是针对目标处理器没有存储管理单元 MMU,其运行稳定,具有良好的移植性和优秀的网络功能,对各种文件系统有完备 的支持,并提供标准丰富的API RT-Linux 由美国墨西哥理工学院开发的嵌入式Linux硬实时操作系统。它已有广泛的应用 Embedix 根据嵌入式应用系统的特点重新设计的Linux发行版本。它提供了超过25种的Linux 《嵌入式Linux应用程序开发详解》——第4章、嵌入式系统基础 系统服务,包括Web服务器等。此外还推出了Embedix的开发调试工具包、基于图 形界____________面的浏览器等。可以说,Embedix是一种完整的嵌入式Linux解决方案

VxWorks操作系统MakeFile

VxWorks操作系统MakeFile(一) 时间:2008-8-24 夜 版权申明:本文为水煮鱼为水煮鱼@博客园撰写,不得用于商业用途,如需摘用,请与水煮鱼联系。 1、介绍 本文将介绍为什么要将你的C源代码分离成几个合理的独立文档,什么时候需要拆分,那又怎么拆分呢? 然后再介绍如何使用GUN Make使你的编译和链接步骤自动化。可能你使用的是其他的make工具,但是其实道理都差不多。当然如果你对自己的编程工具有怀疑的话,可以不妨实际的试试。 2、多文件项目介绍 a. why? 为什么使用多文件项目?他们有什么好处呢? 从表面上看,多文件项目是够复杂的了,又要头文件,又需要extern申明,并且如果你要查找一个文件的话,还需要在更多的文件里搜索。 但是如果把其考虑成一个项目,那一个项目根据功能划分为小的模块,那就不难理解了。 想想如果是一个一万行代码,如果你把其放到一个文件里,则在编译的时候,则需要对一万行代码进行重新编译。不过如果你如果把其放到不同的文件里,那修改一行,则只需要编译一个文件就可以了。可能你会说,一万行代码,就算全部编译,那点时间也基本可以忽略不计,但是实际情况是,在一个大的系统里,可能代码达到几十万甚至上百万,千万行代码的规模。以我们的项目为例,目前代码规模已经达到了上千万行的级别,如果全部重新编译,则将耗费几个小时甚至半天的时间。如果将其划分多多个文件,则修改一行所引入的编译代码,将不会随着你代码规模的增大而增大。所以多个文件的优点不言自明了。 不过对于不便于搜索的问题,其实只要文件划分得当,也并不会造成多大的困难。其实,从多个目标文件生成一个程序包比从一个单一文件生成程序包要好的多。当然,实际上这是不是一个优势还与你所使用的系统有关。但是当使用gcc/ld(一个GUN C编译器/连接器)把一个程序包连接到一个程序时,在连接的过程中,它会尝试不去连接没有使用到的部分,但它每次只能从程序包中把一个完整的目标文件排除在外。因此,如果你修改了一个程序包中某一个目标文档中任何一个符号的话,那么这个目标文件整个都会被连接进来。要是一个程序包被非常充分的分解的话,那么经过链接后,得到的可执行文件会比从一个大目标文件组成的程序包连接得到的文件小的多。 并且常常我们的程序是模块化的,高内聚,低耦合,使得文件之间共享部分被减少到了最少,因此采用多文件的方式,可以比较容易的找到代码中的bug。 b.when? 那什么时候分解你的项目? 如果你开发的是一个大项目,在开始前,应该好好考虑一下你将如何实现,并且将生成几个文件来存放你的代码。当然,在项目的开发过程中,你可以建立新的我文件,但是这将打乱你的整体布局,可能造成你整体结构的调整。因此特别建

嵌入式操作系统的种类与特点

1.3.1 嵌入式操作系统的种类、特点与发展 1.嵌入式操作系统的种类 一般情况下,嵌入式操作系统可以分为两类: 非实时操作系统:面向消费电子产品等领域,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书等。 实时操作系统RTOS(Real-Time Embedded Operating System):面向控制、通信等领域,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx等。 (1)非实时操作系统 早期的嵌入式系统中没有操作系统的概念,程序员编写嵌入式程序通常直接面对裸机及裸设备。在这种情况下,通常把嵌入式程序分成两部分,即前台程序和后台程序。前台程序通过中断来处理事件,其结构一般为无限循环;后台程序则掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一个系统管理调度程序。这就是通常所说的前后台系统。一般情况下,后台程序也叫任务级程序,前台程序也叫事件处理级程序。在程序运行时,后台程序检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。对于实时性要求特别严格的操作通常由中断来完成,仅在中断服务程序中标记事件的发生,不再做任何工作就退出中断,经过后台程序的调度,转由前台程序完成事件的处理,这样就不会造成在中断服务程序中处理费时的事件而影响后续和其它中断。 实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有的任务具有相同的优先级别,即是平等的,而且任务的执行又是通过FIFO队列排队,因而对那些实时性要求高的任务不可能立刻得到处理。另外,由于前台程序是一个无限循环的结构,一旦在这个循环体中正在处理的任务崩溃,使得整个任务队列中的其它任务得不到机会被处理,从而造成整个系统的崩溃。由于这类系统结构简单,几乎不需要RAM/ROM的额外开销,因而在简单的嵌入式应用被广泛使用。 (2)实时操作系统 所谓实时性,就是在确定的时间范围内响应某个事件的特性。而实时系统是指能在确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。其操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关。“在确定的时间内”是该定义的核心。也就是说,实时系统是对响应时间有严格要求的。 实时系统对逻辑和时序的要求非常严格,如果逻辑和时序出现偏差将会引起严重后果。实时系统有两种类型:软实时系统和硬实时系统。软实时系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成;而在硬实时系统中,不仅要求任务响应要实时,而且要求在规定的时间内完成事件的处理。通常,大多数实时系统是两者的结合。实时应用软件的设计一般比非实时应用软件的设计困难。实时系统的技术关键是如何保证系统的实时性。实时操作系统可分为可抢占型和不可抢占型两类。 嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。 从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。 操作系统的实时性在某些领域是至关重要的,比如工业控制、航空航天等领域。想像飞机正在空中飞行,如果嵌入式系统不能及时响应飞行员的控制指令,那么极有可能导致空难事故。有些嵌入式系统应用并不需要绝对的实时性,比如PDA播放音乐,个别音频数据丢失并不影响效果。这可以使用软实时的概念来衡量。

VxWorks实时操作系统SIGNAL机制的应用

[摘要] 介绍VXWORKS实时操作系统的信号机制以及各种处理方法,特别是利用该机制实现异常情况的恢复和处理。 1.概述 信号可用来在同一任务内部或不同任务之间实现异步通信,从而改变对多个任务的控制流程。所有任务或中断服务程序均能向指定的任务发送信号,该信号的接收任务将立刻挂起当前的执行线程,而激活任务指定的信号处理程序。信号处理程序是由用户定义的,它关联与特定的信号,而且任务接收到该指定信号时的所有必要处理都在该程序中实现。信号的这种机制使得它特别适合于用来实现差错和异常处理。 2.信号屏蔽 在信号处理时,可通过信号屏蔽来选择需要进行处理的信号,接收到被屏蔽的信号,即使指定了相应的处理程序,也不作任何处理。 为了实现对信号的屏蔽,需要定义数据类型为sigset_t的变量,同时必须包含头文件“signal.h”。 下面介绍实现这一功能的函数: int sigemptyset ( sigset_t *pSet ) 该函数初始化信号集,使得该信号集不包含任何信号; int sigfillset ( sigset_t *pSet ) 该函数初始化信号集,使得该信号集包含所有信号; int sigaddset ( sigset_t *pSet , int signo ) 该函数向信号集中增加新的信号; int sigdelset ( sigset_t *pSet , int signo ) 该函数删除信号集中的信号; int sigismember ( sigset_t *pSet , int signo ) 该函数用来判断信号集是否包含某信号; int sigprocmask ( int how, const sigset_t *pSet, sigset_t *pOset ) 该函数用来设置信号屏蔽;这里,pSet为新的信号集,pOset为当前的 信号集,而how则指示处理方式,其取值与处理方式对应关系如下: SIG_BLOCK 结果信号集为当前信号集和指定信号集二者的并集,通过这种方式,可向当前信号集增添指定的元素; SIG_UNBLOCK 结果信号集为指定信号集的补集和当前信号集二者的交集;通过这种方式,可从当前信号集删除指定的元素;

几种嵌入式实时操作系统的研究分析与比较

几种嵌入式实时操作系统地分析与比较 2008-07-04 20:54 VxWorks、μClinux、μC/OS-II和eCos是4种性能优良并被广泛应用地实时操作系统.本文通过对这4种操作系统地主要性能进行分析与比较,归纳出它们地选型依据和适用领域. 1. 4种操作系统地介绍 (1)VxWorks VxWorks是美国WindRiver公司地产品,是目前嵌入式系统领域中应用很广泛,市场占有率比较高地嵌入式操作系统.VxWorks实时操作系统由400多个相对独立、短小精悍地目标模块组成,用户可根据需要选择适当地模块来裁剪和配置系统;提供基于优先级地任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操作系统接口)规范地内存管理,以及多处理器控制程序;并且具有简明易懂地用户接口,在核心方面甚至町以微缩到8 KB. (2) μC/OS-II μC/OS-II是在μC-OS地基础上发展起来地,是美国嵌入式系统专家Jean J.Labrosse用C语言编写地一个结构小巧、抢占式地多任务实时内核.μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点. (3)μClinux μClinux是一种优秀地嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux.同标准地Linux相比,μClinux地内核非常小,但是它仍然继承了Linux操作系统地主要特性,包括良好地稳定性和移植性、强大地网络功能、出色地文件系统支持、标准丰富地API,以及TCP/IP网络协议等.因为没有MMU内存管理单元,所以其多任务地实现需要一定技巧. (4)eCos eCos(embedded Configurable operating system),即嵌入式可配置操作系统.它是一个源代码开放地可配置、可移植、面向深度嵌入式应用地实时操作系统.最大特点是配置灵活,采用模块化设计,核心部分由小同地组件构成,包括内核、C语言库和底层运行包等.每个组件可提供大量地配置选项(实时内核也可作为可选配置),使用eCos提供地配置工具可以很方便地配置,并通过不同地配置使得eCos能够满足不同地嵌入式应用要求. 2. 性能分析与比较 任务管理、任务及中断间地同步与通信机制、内存管理、中断管理、文件系统、对硬件地支持和系统移植这几方面是实时操作系统地主要性能.下面就从这几个方面着手对上述4种操作系统进行分析与比较. 2.1 任务管理 任务管理是嵌入式实时操作系统地核心和灵魂,决定了操作系统地实时性

实时操作系统包括硬实时和软实时的区别

一.什么是真正的实时操作系统 做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks,实际应用后回过头来看理论,才发现自己理解的肤浅,也发现CSDN上好多同学们都对实时、嵌入式这些概念似懂非懂,毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platformteam封装好的API。所以在此总结一下这些概念,加深自己的理解,同时也给新手入门,欢迎大家拍砖,争取写个连载,本文先总结一下实时的概念,什么是真正的实时操作系统 1. 首先说一下实时的定义及要求: 参见Donal Gillies 在Realtime Computing FAQ 中提出定义:实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效。 一个实时操作系统面对变化的负载(从最小到最坏的情况)时必须确定性地保证满足时间要求。请注意,必须要满足确定性,而不是要求速度足够快!例如,如果使用足够强大的CPU,Windows 在CPU空闲时可以提供非常短的典型中断响应,但是,当某些后台任务正在运行时,有时候响应会变得非常漫长,以至于某一个简单的读取文件的任务会长时间无响应,甚至直接挂死。这是一个基本的问题:并不是Windows不够快或效率不够高,而是因为它不能提供确定性,所以,Windows不是一个实时操作系统。 根据实际应用,可以选择采用硬实时操作系统或软实时操作系统,硬实时当然比软实时好,但是,如果你的公司正在准备开发一款商用软件,那请你注意了,业界公认比较好的VxWorks(WindRiver 开发),会花光你本来就很少的银子,而软实时的操作系统,如某些实时Linux,一般是开源免费

VxWorks操作系统在多功能相控阵雷达中的应用

V x W o rk s操作系统在多功能相控阵雷达中的应用Ξ 黄银园 (南京电子技术研究所 南京210013) 【摘要】 提出了把抢占式实时多任务操作系统V x W o rk s引入到雷达系统,特别是多功能相控阵雷达中的必要性;分析了V x W o rk s操作系统的优点;针对其图形功能弱的缺点和现有雷达显示系统的硬件条件,作者提出了在V x W o rk s操作系统下实现高分辨率光栅图形显示的方法及具体的实现过程。此方法适用性广,能应用于以Tm s34010(或Tm s34020)图形芯片为核心的任何雷达系统。 【关键词】 抢占式实时操作系统,多任务,相控阵雷达,高分辨率光栅显示 A pp licati on of V x W o rk s O p erating System in M u ltifuncti onal Phased A rray R adar HUANG Y i n-yuan (N an jing R esearch In stitu te of E lectron ics T echno logy N an jing210013)【Abstract】 T he paper p resen ts V x W o rk s,a p reemp tive real2ti m e m u ltitask operating system(R TO S)app lied in radar system,especially emphasizes the essen tial of the app licati on of V x W o rk s operating system in m u ltifunc2 ti onal phased anay radar.It analyzes the good qualities of the V x W o rk s operating system;po in ted to V x W o rk s’s sho rtcom ing in graph ics p rocessing and ex isting hardw are conditi on of radar disp lay system,th is paper po in ts ou t the techn ique and its detailed i m p lem en tati on of h igh reso lu ti on raster graph ics disp lay in V x W o rk s operating sys2 tem.T h is m ethod can be w idely u sed in any radar system w ho se graph ics board CPU based on TM S34010o r TM S34020. 【Key words】 p reemp tive real2ti m e operating system,m u ltitask,phased array radar,h igh reso lu ti on raster disp lay 1 引 言 多功能相控阵雷达集搜索、跟踪、制导等功能为一体。它具有如下特点:1)搜索与跟踪功能兼备,具有多目标的跟踪能力;2)能对多枚导弹发出制导指令;3)反应时间短。这些任务都是相对独立的且不需要串行完成的。而且任务也有优先级之分,优先级高的任务需立即响应,而其它的一些任务可以迟后一些完成。这就要求计算机系统必须具备实时处理多任务的能力。整个相控阵雷达都要在系统软件统一管理指挥下运行。合理调度,管理各雷达资源以保证优先级高的任务能实时完成,而其它的任务也能在一定的时间限内完成则必须引入多任务抢占式实时操作系统。以往的单任务模式的操作系统(如DO S)和以时间片为调度基础的多任务操作系统已根本不能满足相控阵雷达的要求。在众多的实时多任务操作系统中,V x W o rk s以其优良的功能和卓越的性能成为多功能相控阵雷达的首选。2 V x W o rk s操作系统的特点 V x W o rk s操作系统是由美国W indR iver公司推出的嵌入式实时操作系统。厂商对系统的实时性、高可靠性等进行了精巧设计;而且还提供了独立而完备的系统开发和性能测试工具。主要有以下优点: 1)高性能的微内核结构:W ind Kernal最小时才几K,提供了很大的灵活空间和裁剪空间,满足各个嵌入式应用的要求。它的主要特点是: a1高效的任务管理:无限数目多任务,具有256个优先级。 b1快速灵活的任务间通讯: 三种信号灯(Sem ap ho re):二进制、计数、有优先级继承特性的互斥信号灯。管道(P i p e)、消息队列(M essage queue)、信号(Signal)。网络套接字(Sock2 et)。共享内存(Shared M em o ry)。 2)多任务环境:因为外部事件是离散的、并发的,事件发生的顺序是不可预测的。多个事件可以 2001年8月现代雷达第4期Ξ

嵌入式实时多任务操作系统的特征介绍

嵌入式实时多任务操作系统的特征介绍 引言:适逢公司进行通用计算平台的硬件基础研究,在此硬件平台之上,必要引入通用的软件平台。为此,操作系统无疑是最佳的选择。在德国十二套软启动项目中,远程IO控制机的软件设计成功引入了实时多任务操作系统μC/OS—II, 本文结合作者的工作成果,针对μC/OS—II将嵌入式操作系统的基本特征和原理进行简单的描述,并对大家所熟知的实时特性概念进行简要的抛析。 嵌入式实时操作系统在国外在上世纪60年代便已发展,至今已有不下百种产品。从在商业领域取得巨大成功的两个突出代表VxWorks和QNX;到开源并广泛传播的Linux;以及由知名公司所推出的WINCE等;再到由个人之力发展至今的μC/OS,每种操作系统皆有其自身的特点及所专长的应用领域,但同时作为嵌入式的实时多任务操作系统又有其共同的特征,以下将结合实际工作中所用到的μC/OS—II为大家进行简单的介绍。 首先,操作系统作为用户应用程序同系统硬件之间的接口,承担着系统全部软、硬件资源的分配、工作调度、控制协调并发活动的重任。如图1所示为包含操作系统的软硬件体系结构。 图1 比较于传统的PC机操作系统,除具有任务调度、同步机制、中断处理、文件功能外,嵌入式实时操作系统还具有如下几个主要特点: ◆可裁减性,嵌入式系统开发所特有的一点便是具有有限的存储空间。面向不同硬件资源的情况下,操作系统具有自身可裁减的特性,以适应系统的存储容量,以μC/OS—II为例,最小可将代码量裁减到2K+。 ◆实时性,于军事及高端工业领域发展起来的嵌入式操作系统,系统所处运行环境极为复杂,要求极为苛刻。对于外部的激励,操作系统能够及时的做出响应,来保证系统的可靠运行。

三种通用嵌入式操作系统的分析与比较

三种通用嵌入式操作系统的分析与比较 关键词:嵌入式,操作系统,Windows CE 时间:2012-08-09 10:45:46 来源:中电网 1嵌入式操作系统 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。作为嵌入式系统的重要组成部分,嵌入式操作系统 EOS(Embedded Operating System)是随着嵌入式系统的发展而出现的,是嵌入式系统发展到一定阶段的产物。嵌入式操作系统的出现,大大提高了嵌入式系统的开发效率,同时也促进了嵌入式的发展。 嵌入式操作系统并不是简单嵌入的操作系统,它除了具有通用操作系统的基本特点外,在小巧、实时性、可装卸、可固化代码、强稳定性、弱交互性、具备统一接口等方面有突出的特点。2三种典型EOS分析 作为在嵌入式操作系统市场通用的三种系统,Linux 、VxWorks 、Windows CE在实时性、内核大小、调度算法、通信能力和开发环境等方面都有自己的特点,下面就对这几种系统的特点做一分析。 2.1 VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统,依据其良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。应用实例包括美国的F-16、FA-18战斗机、B-2 隐形轰炸机、火星探测器、爱国者导弹等。 VxWorks的特点有: 1)高实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。 VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。VxWorks 的任务调度策略以可抢占式调度( Preemptive Priority Scheduling)为基础,辅以时间轮转调度算法( Round-Robin Scheduling)机制。这一调度算法使得VxWorks 能够及时响应高优先级的任务。而同级任务间则可选择时间片轮转法使多个同优先级的任务并发执行。 2)可裁剪性VxWorks的可裁剪性,可以使开发者根据自己应用程序的需要来选择操作系统中部件,用户没用到的功能模块都可以去掉。 VxWorks 由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks 内核最小为8kB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。由于它的高度灵活性,用户可以很容易地对这一操作系统进行定制或作适当开发,来满足自己的实际应用需要。 3)友好的开发调试环境 VxWorks的开发环境Tornado是一个友好的开发环境,它可以运行在多种主机上,包括Sun、HP、Dec、MIPS等,主机的操作系统则支持Unix、Windows NT等。系统使用的流行图形界面方便使用者较快地理解和掌握。VxWorks支持应用程序的动态链接和动态下载,使开发

相关文档