2011年
08级自动化一班
学号: 33号
2011-12-15
姓名:曾涛
目 录
1 嵌入式系统简介 ......................................................................................................... 3
1.1嵌入式系统的概念 ........................................................................................... 3 1.2嵌入式系统发展历史 ....................................................................................... 3
1.2.2简单操作系统阶段 .............................................................................. 4 1.2.3 实时操作系统阶段 ............................................................................. 4 1.2.4 面向Internet阶段 ........................................................................... 4 1.3嵌入式系统的特点 ........................................................................................... 4 1.4嵌入式操作系统比较 ....................................................................................... 5 2 嵌入式系统实习的目的 ............................................................................................. 7 3 嵌入式系统实习的内容 ............................................................................................. 7 4嵌入式系统的实习程序.............................................................................................. 7
4.1实习程序 ............................................................................................................ 7 4.2部分程序截图 ................................................................................................. 14 5心得体会..................................................................................................................... 15 6 参考文献 .................................................................................................................... 16
2
1 嵌入式系统简介
1.1嵌入式系统的概念
在现在日益信息化的社会中,计算机和网络已经全面渗透到日常生活的每一
个角落。对于我们每个人,需要的已经不再仅仅是那种放在桌上处理文档,进行工作管理和生产控制的计算机;各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用算机,任何一个普通人可能拥有从大到小的各种使用嵌入式技术的电子产品,小到mp3,PDA等微型数字化产品,大到网络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式技术的数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务方式。 目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的优秀人才投入其中。但是对于何为嵌入式系统,什么样的技术又可以称之为嵌入式技术,仍在讨论之中。 广义上讲,可以认为凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。作为系统核心的微处理器又包括三类:微控制器(MCU)、数字信号处理器(DSP)、嵌入式微处理器(MPU)。所以有人简单的说:“嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。”还有人认为嵌入式系统就是“以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可*性、成本、体积、功耗严格要求的专用计算机系统”。应该说后者从功能应用特征上比较好的给出了嵌入式系统的定义,嵌入式的概念的分析根本上应该从应用上加以切入。
狭义上讲,人们更加强调那些使用嵌入式微处理器构成独立系统,具有自己的操作系统并且具有某些特定功能的系统,这里的微处理器专指32位以上的微处理器。按照这种定义,典型的嵌入式系统有使用x86的小型嵌入式工控主板,在各种自动化设备,数字机械产品中有非常广阔的应用空间;另外一大类是使用Intel,Motorola等专用芯片构成的小系统,它不仅仅在新兴的消费电子和通讯仪表等方面获得了巨大的发展应用空间,而且甚至有趋势取代传统的工控机。现在大家更加清楚的看到:嵌入式技术的春天已经来了。所以也就难怪嵌入式系统成为当前最热门的技术之一。
1.2嵌入式系统发展历史
虽然嵌入式系统是近几年才开始真正风靡起来的,但事实上嵌入式这个概
念却很早就已经存在了,从上个世纪70年代单片机的出现到今天各种嵌入式微处理器、微控制器的广泛应用,嵌入式系统少说也有了近30年的历史。纵观嵌入式系统的发展历程,大致经历了以下四个阶段:
1.2.1 无操作系统阶段
嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,
具有监测、伺服、设备指示等功能,通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控
3
制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上\"系统\"的概念。
这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格低廉,因而曾经在工业控制领域中得到了非常广泛的应用,但却无法满足现今对执行效率、存储容量都有较高要求的信息家电等场合的需要。
1.2.2简单操作系统阶段
20世纪80年代,随着微电子工艺水平的提高,IC制造商开始把嵌入式应用
中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I/O设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的\"操作系统\"开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。 这一阶段嵌入式系统的主要特点是:出现了大量高可*、低功耗的嵌入式CPU(如Power PC等),各种简单的嵌入式操作系统开始出现并得到迅速发展。此时的嵌入式操作系统虽然还比较简单,但已经初步具有了一定的兼容性和扩展性,内核精巧且效率高,主要用来控制系统负载以及监控应用程序的运行。
1.2.3 实时操作系统阶段
20世纪90年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。
这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了文件和目录管理、设备管理、多任务、网络、图形用户界面(GUI)等功能,并提供了大量的应用程序接口(API),从而使得应用软件的开发变得更加简单。
1.2.4 面向Internet阶段
21世纪无疑将是一个网络的时代,将嵌入式系统应用到各种网络环境中去的呼声自然也越来越高。目前大多数嵌入式系统还孤立于Internet之外,随着Internet的进一步发展,以及Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合才是嵌入式技术的真正未来。
1.3嵌入式系统的特点
用于嵌入式设备的计算机几乎和计算机本身的历史一样长久,并且随着计
4
算机技术的发展,嵌入式系统已成为计算机领域的一个重要组成部分。嵌入式设备几乎包括了我们周围的所有电器设备:小至掌上PDA、电视机顶盒,大至汽车、电梯,安全系统等等。据统计,每年只有10%-20%的计算机芯片是为台式或便携式电脑而设计的,这也意味着每年有10至20亿个CPU是为嵌入式设备而设计制造的。
嵌入式计算机系统同通用型计算机系统相比具有以下特点:嵌入式系统通常是面向特定应用的。嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。 嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。
嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。
为了提高执行速度和系统可*性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。 嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。
1.4嵌入式操作系统比较
随着Internet技术的发展、信息家电的普及应用及嵌入式操作系统EOS
(Embedded Operating System)的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而方的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等外,还有以下特点: 1.可装卸性。开放性、可伸缩性的体系结构。
2.强实时性。EOS实时性一般较强,可用于各种设备控制当中。 3.统一的接口。提供各种设备驱动接口。
4.操作方便、简单、提供友好的图形GUI,图形界面,追求易学易用。 5.提供强大的网络功能,支持TCP/IP协议及其它协议 6.更好的硬件适应性,也就是良好的移植性。
国际上用于信息电器的嵌入式操作系统有40种左右。现在,市场上非常流行的EOS产品,包括3Com公司下属子公司的Palm OS,Microsoft公司的Windows CE、开放源代码的Linux。
5
三种常用的嵌入式操作系统
1.Palm OS
Palm是3Com公司的产品,其操作系统为Palm OS。Palm OS是一种32位的嵌入式操作系统。Palm提供了串行通信接口和红外线传输接口,利用它可以方便地与其它外部设备通信、传输数据;拥有开放的OS应用程序接口,开发商可根据需要自行开发所需的应用程序。Palm OS是一套具有很强开放性的系统,现在有大约数千种专用为Palm OS编写的应用程序,从程序内容上看,小到个人管理、游戏,大到行业解决方案,Palm OS无所不包。在丰富的软件支持下,基于Palm OS的掌上电脑功能得以不断扩展。
Palm OS是一套专门为掌上电脑开发的OS。在编写程序时,Palm OS充分考虑了掌上电脑内存相对较小的情况,因此它只占有非常小的内存。由于基于Palm OS编写的应用程序占用的空间也非常小(通常只有几十KB),所以,基于Palm OS的掌上电脑(虽然只有几MB的RAM)可以运行众多应用程序。
2.Windows CE
Windows CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作。它是精简的Windows 95。Windows CE的图形用户界面相当出色。其中CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)。与Windows 95/98、Windows NT不同的是,Windows CE是所有源代码全部由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于Windows 95/98,但Windows CE是基于Win32 API重新开发的、新型的信息设备平台。Windows CE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C++等)、使用同样的函数、使用同样的界面网格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。
Windows CE的设计目标是:模块化及可伸缩性、实时性能好,通信能力强大,支持多种CPU。它的设计可以满足多种设备的需要,这些设备包括了工业控制器、通信集线器以及销售终端之类的企业设备,还有像照相机、电话和家用娱乐器材之类的消费产品。一个典型的基于Windows CE的嵌入系统通常为某个特定用途而设计,并在不联机的情况下工作。它要求所使用的操作系统体积较小,内建有对中断的响应功能。
3.Linux
Linux是一个类似于Unix的操作系统。它起源于芬兰一个名为Linus Torvalds的业余爱好,但是现在已经是最为流行的一款开放源代码的操作系统。Linux从1991年问世到现在,短短10年的时间内已发展成为一个功能强大、设计完善的操作系统,伴随网络技术进步而发展起来的Linux OS已成为Microsoft公司的DOS和Windows 95/98的强劲对手。Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式Linux OS迅速发展的状况下,Linux OS逐渐形成了可与Windows CE等EOS进行抗衡的局面。目前正在开发的嵌入式系
6
统中,49%的项目选择Linux作为嵌入式操作系统。Linux现已成为嵌入式操作的理想选择。
2 嵌入式系统实习的目的
1. 了解嵌入式操作系统
2. 学会用uc/os-Ⅱ级编写调试
3 嵌入式系统实习的内容
a.建立三个任务:其中任务一和任务二分别显示专业、班级、姓名和学号等信息 b.专业班级和姓名学号显示切换时间间隔0.5s c.任务三统计其他两个任务的运行次数并显示 d.任务一和任务二不得同时显示
4嵌入式系统的实习程序
4.1实习程序
/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel *
* (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
* All Rights Reserved *
* EXAMPLE #1
********************************************************************************************************* */
//#include \"includes.h\"
7
#include #include <\\SOFTWARE\II\\ix86l\\bc45\\os_cpu.h> #include \"\\SOFTWARE\II\\EX1_x86L\\BC45\\SOURCE\\OS_CFG.H\" #include \"\\SOFTWARE\II\\source\ii.h\" #include \"\\SOFTWARE\\blocks\\pc\\bc45\\pc.h\" /* ********************************************************************************************************* * CONSTANTS ********************************************************************************************************* */ #define TASK_STK_SIZE 512 /* Size of each task's stacks (# of WORDs) */ #define N_TASKS 10 /* Number of identical tasks */ /* ********************************************************************************************************* * VARIABLES ********************************************************************************************************* */ OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; /* Tasks stacks */////OS_STK TaskStartStk[TASK_STK_SIZE]; char TaskData[N_TASKS]; /* Parameters to pass to each task */ OS_STK TaskStartStk3[TASK_STK_SIZE]; OS_STK TaskStartStk1[TASK_STK_SIZE]; OS_STK TaskStartStk2[TASK_STK_SIZE]; 8 void TaskStart3(void *data); void TaskStart1(void *data); void TaskStart2(void *data); long int hold1=0, //任务一次数 hold2=0; //任务二次数 //OS_EVENT *SEMpevent; //********************************************************************************************************* // 主函数 //********************************************************************************************************* void main (void) { PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK); /* Clear the screen */ OS_ENTER_CRITICAL(); PC_VectSet(0x08, OSTickISR); /* Install uC/OS-II's clock tick ISR */ PC_SetTickRate(OS_TICKS_PER_SEC); /* Reprogram tick rate */ OS_EXIT_CRITICAL(); OSInit(); /* Initialize uC/OS-II */ PC_DOSSaveReturn(); /* Save environment to return to DOS */ PC_VectSet(uCOS, OSCtxSw); /* Install uC/OS-II's context switch vector */ OSTaskCreate(TaskStart3, (void *)0, &TaskStartStk3[TASK_STK_SIZE - 1], 0); OSTaskCreate(TaskStart1, (void *)0, &TaskStartStk1[TASK_STK_SIZE - 1], 1); OSTaskCreate(TaskStart2, (void *)0, &TaskStartStk2[TASK_STK_SIZE - 1], 2); OSStart(); /* Start multitasking */ } 9 //***************************************************************************** // TASK 1 //***************************************************************************** void TaskStart1 (void *pdata) { pdata = pdata; /* 无任何意义,防止编译器报警 */ for(;;) { PC_DispStr( 0, 0, \" \ PC_DispStr( 0, 1, \" \ PC_DispStr( 0, 2, \" ***************************************************************** \ PC_DispStr( 0, 3, \" TASK ONE \ PC_DispStr( 0, 4, \" \ PC_DispStr( 0, 5, \" \ PC_DispStr( 0, 6, \" \ PC_DispStr( 0, 7, \" **************************************************************** \ PC_DispStr( 0, 8, \" * * \ PC_DispStr( 0, 9, \" * * \ PC_DispStr( 0, 10, \" * * \ PC_DispStr( 0, 11, \" * ** name: zeng tao * \ PC_DispStr( 0, 12, \" * * \ PC_DispStr( 0, 13, \" * ** age : 24 * \ PC_DispStr( 0, 14, \" * * \ PC_DispStr( 0, 15, \" * ** location JiLin Province.BeiHua 10 university * \DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY); PC_DispStr( 0, 16, \" * * \ PC_DispStr( 0, 17, \" * * \ PC_DispStr( 0, 18, \" **************************************************************** \ PC_DispStr( 0, 19, \" \ PC_DispStr( 0, 20, \" \ PC_DispStr( 0, 21, \" ***************************************************************** \ PC_DispStr( 0, 22, \" \ PC_DispStr( 0, 23, \" \ PC_DispStr( 0, 24, \" \ hold1++; OSTimeDlyHMSM(0, 0, 1, 0); } } //***************************************************************************** // TASK 2 //***************************************************************************** void TaskStart2(void *pdata) { pdata = pdata; for(;;) { PC_DispStr( 0, 0, \" \ PC_DispStr( 0, 1, \" \ PC_DispStr( 0, 2, \" ***************************************************************** 11 \ PC_DispStr( 0, 3, \" TASK TWO \ PC_DispStr( 0, 4, \" \ PC_DispStr( 0, 5, \" \ PC_DispStr( 0, 6, \" \ PC_DispStr( 0, 7, \" **************************************************************** \ PC_DispStr( 0, 8, \" * * \ PC_DispStr( 0, 9, \" * * \ PC_DispStr( 0, 10, \" * * \ PC_DispStr( 0, 11, \" * ** zhuan ye: zi dong hua * \ PC_DispStr( 0, 12, \" * * \ PC_DispStr( 0, 13, \" * ** class : 08-1 * \ PC_DispStr( 0, 14, \" * * \ PC_DispStr( 0, 15, \" * ** xue hao : 200826020133 * \ PC_DispStr( 0, 16, \" * * \ PC_DispStr( 0, 17, \" * * \ PC_DispStr( 0, 18, \" **************************************************************** \ PC_DispStr( 0, 19, \" \ PC_DispStr( 0, 20, \" \ PC_DispStr( 0, 21, \" ***************************************************************** \ PC_DispStr( 0, 22, \" TASK1: TASK2: \ 12 PC_DispStr( 0, 23, \" \ PC_DispStr( 0, 24, \" \ hold2++; OSTimeDlyHMSM(0, 0, 2, 0); // OSSemPost (SEMpevent); } } //***************************************************************************** // TASK 3 //***************************************************************************** void TaskStart3 (void *pdata) { char s[80]; pdata = pdata; for(;;) { sprintf(s, \"%5d\ PC_DispStr(18, 22, s, DISP_FGND_YELLOW + DISP_BGND_BLUE); sprintf(s, \"%5d\ PC_DispStr(50, 22, s, DISP_FGND_YELLOW + DISP_BGND_BLUE); OSTimeDlyHMSM(0, 0, 0, 3); } } 13 4.2部分程序截图 14 5心得体会 在为期一周的实习过程中,我学到了许多书本上学不到的知识,本以为十分枯燥的设计过程却让我得到了很多乐趣,同时也为我今后的进一步学习奠定了基础。 当老师布置完题目后,由于对需要掌握的知识还不是十分理解,于是我通过看教材和查资料等方式初步掌握了嵌入式系统的基本知 15 识,并最终成功地完成了整个系统的设计。 在设计的过程中编程部分是个难点,编程的过程中我们遇到了很多的问题,比如说当我把之前设计出的基本模块整合在一起的时候,出现了很多错误,但是在经过细致的分析整个程序后,通过进一步的修正,程序才运行正常。这个问题也提醒我们在编程的时候需要细心和耐心,这样才不会出现一些马虎的错误。 经过这次的实际动手操作,让我明白不仅要充分的掌握课本上的知识,而且要活学活用、学以致用,不能过分强调基本理论的掌握,而应该侧重于基本知识和实际的相结合,我觉得,具有一定的系统分析能力和设计能力才是本次实习的目的。 本次实习使我把学到的理论知识和实际的硬件相结合,对嵌入式系统这门课程有了新的理解和认识,这对于我今后的学习会有事半功倍的效果。非常感谢本次实习给了我这样一个锻炼我的机会,在此也感谢老师对我的指导! 6 参考文献 《嵌入式系统原理与接口技术》 贾智平 清华大学出版社 《Linux嵌入式系统教程》马忠梅 北京航空航天大学出版社 《嵌入式操作系统原理与应用》 吴旭光 化学工业出版社 16 因篇幅问题不能全部显示,请点此查看更多更全内容