嵌入式微处理器第1章嵌入式计算.ppt
嵌入式微处理器第嵌入式微处理器第1章章嵌入式计算嵌入式计算主要内容1.什么是嵌入式系统?2.嵌入式系统设计所面临的挑战3.设计方法学4.OOD&UML面向对象的设计和统一建模语言5.举例:模型火车控制器21、什么是嵌入式系统?嵌入式系统嵌入式系统:任何一个非通用的具有可编程计算机的设备嵌入式系统的应用实例:嵌入式系统的应用实例:p打印机.p手机.p汽车:发动机,刹车,仪表盘等.p电视(机顶盒).p家用电器.pPC 键盘.p掌上电脑(PDA).嵌入式计算机与个人PC的区别:专用性和实时性3嵌入式计算机CPUmeminputoutputanaloganalog4早期发展历史p1940年代:MIT Whirlwind,第一台实时操作系统的计算机;最初是用于飞机模拟器的控制。p第一个微处理器是1970年代的 Intel 4004。p1972年,HP-35 计算器使用数个芯片来实现一个微处理器的功能。p1970年代开始在汽车上使用基于微处理器的发动机控制技术。n控制油汽的混合,发动机的定时等等。n多种工作模式的控制:加热,爬坡等n提供低排放,高的燃油效率。5微处理器的分类p微控制器:包括I/O设备,存储器。p数字信号处理器(DSP):专门用于数字信号处理的微处理器。p典型嵌入式的字长:8-bit,16-bit,32-bit.6应用广泛p简单控制:微波炉的面板等。pCanon EOS 3 有3个微处理器。n32-bit RISC CPU 用于自动对焦和光圈控制系统。p模拟电视:信道的选择等。p数字电视:可编程 CPUs+硬连线逻辑 p通信系统7汽车嵌入式系统p高级汽车有近百个微处理器n4-bit 微控制器检查安全带的使用。n微控制器控制仪表盘工作。n16/32-bit 微处理器控制发动机。pBMW 850in防抱死系统(ABS):启动刹车来降低打滑。n自动稳定控制(ASC+T):控制发动机来改善稳性。nABS 被最早应用-ASC+T 需要与已经存在的 ABS 模块交互。8BMW 850i 刹车控制系统刹车传感器刹车传感器刹车传感器刹车传感器ABS液压泵9嵌入式系统的特点p复杂的功能性。n通常运行复杂的算法,或多个算法。p手机,激光打印机。n通常提供复杂的用户界面。p实时操作。n必须在期限内完成操作。p硬实时期限:超过期限会产生错误。p软实时期限:超过期限会降低性能。n很多系统是多速率的:必须在能用不同的速率处理操作。10嵌入式系统的特点p低制造成本。n多数嵌入式系统是大规模生产的具有很低的制造成本。p存储容量和处理器能力够用即可。p低功耗。n在电池供电的设备中功耗是很关键的。p由小规模团队在严格的期限内完成。n半年的市场期限较多。11为什么要使用微处理器?p可选择的数字系统设计:现场可编程门阵列(FPGAs),定制逻辑(专用逻辑).n微处理器使用比定制逻辑更多的逻辑来实现一个功能。p但是微处理器通常有更高的效率,因为:n使用同样的逻辑可以实现不同的功能。n高速执行指令。n大设计团队来提高CPU的运行速度。n高速发展的大规模集成电路技术。p微处理器可以简化产品的系列设计。12功耗仍需要考虑p对于低功耗的产品来说,定制逻辑是最好的实现方式。p现代的微处理器提供降低功耗的功能。p软件设计技术也可以降低功耗。132、嵌入式系统设计所面临的挑战p需要多少硬件?nCPU的性能和存储器的容量?p如何满足软件运行时限要求?n高速的硬件或者灵活的软件?p如何降低功耗?n关断不需要的逻辑?降低运算速度?p能否正常工作?n规格说明是否正确?是否满足用户需求?n如何进行实时的,实际数据的测试?n可视性,可控制性?开发环境?143、设计方法学p系统设计的一个过程。p理解设计方法可以帮助你不遗漏任何要点。p编译器、CAD工具、软件工程工具等可用来:n帮助自动操作方法中的步骤。n跟踪方法本身。15需要考虑的设计目的p功能。p性能.n总的速度,时限。p用户界面。p生产成本。p功耗p其它要求(物理尺寸等)。16设计过程中的抽象层次要求规格说明体系结构构件系统集成自顶向下的方法自底向上设计实际的设计中两种方法都有使用17逐步求精法p在设计的每一阶段,都必须:n分析设计来决定设计如何满足规格说明的要求。n细化设计,增加细节。181层:需求p用户想要的和期望得到的一个清楚的语言描述。(要求系统做什么)p可用几种方式得到用户的需求:n直接与用户交谈;n与市场代表交谈;n提供原型让用户评价。19功能性与非功能性的需求p功能性的需求:n功能需求指系统所必须实现的特定的功能、任务、行为。p非功能性的需求:n执行一个功能所需要的时间;n体积、重量等;n功耗;n可靠性;n其它。20需求表格21例:GPS 移动地图的需求p移动地图由GPS获得位置数据,由本地数据库得到地图的图形。lat:40 13 lon:32 19I-78Scotch Road22GPS 移动地图的需求p功能性:汽车上使用。显示主要的道路和标识。p用户界面:显示屏至少400 x 600像素的分辨率;最多三个按键;弹出式菜单。p性能:地图平滑滚动;在接通电源后系统启动时间少于1秒;卫星锁定时间少于15秒。p成本:单个设备销售$500。p物理尺寸/重量:适合手持。p功耗:四节 AA电池可工作八小时。23GPS 移动地图需求表格24 2层:规格说明p系统更精确的描述:(系统要去做什么)n不应该包含一个特定的体系结构;n给这个体系结构设计过程提供输入。p包括功能和非功能的成分。p规格说明应该很明确。(有着用户与开发者之间 合同的作用)pUML(Unified Modeling Language)25GPS 的规格说明p应该包括:n从GPS接收到的数据格式;n地图数据;n用户界面;n必须执行以满足用户需求的操作;n保持系统运行的后台操作。263层:体系结构设计p那些主要构件去满足规格说明的要求?p硬件构件:nCPUs、外设等。p软件构件:n主要程序及其运行。p功能规格与非功能规格都要考虑。27GPS 移动地图框图GPS接收机搜索引擎转换器用户界面数据库显示器28GPS 移动地图的硬件体系结构GPS接收机CPU I/O面板显示器帧缓冲器存储器29GPS 移动地图的软件体系结构位置数据库搜索转换器时钟用户界面像素30 4层:硬件和软件构件p体系结构告诉我们需要什么样的构件。p构件完成体系结构中特定的任务。p某些构件中现成的,某些构件要用现成的构件修改而来、其它一些要完全自己设计。315层:系统集成p把所有的构件插在一起。n很多问题都在这个阶段产生。p一个好的集成计划可以更快的发现问题,尽可能早的去做功能测试。32系统建模p需要语言来描述系统:n在数个抽象层上都是很实用的;n在团体内外都能够被理解。p框图是一个开始,但不要包括所有的内容。334、面向对象的设计OODp面向对象的设计OOD:是面向对象编程的一个通用称谓。p对象:现实世界中个体或事物的抽象表示,现实世界中个体或事物的抽象表示,是属性和相关操作的封装。是属性和相关操作的封装。=状态+方法.n对象的状态对象属性取值的集合。n方法(操作):提供给对象一个抽象的交互。p类类:说明一系列拥有相同的属性,操作,方法,关 系,行为的对象集.n类包含属性表和操作表,它们各自在类内建立了一个命名空间。n定义那种类型的所有对象交互的方法。34UMLpUnified Modeling Languagep由Grady Booch 开发的(Rational 公司的首席工程师)p目的:n面向对象的;n可视的;n在抽象的多个层次都适用。n在设计的所有方面都有应用价值。35UML 对象d1:Displaypixels:array of pixelselementsmenu_itemspixels is a2-D array注释对象名称类名属性无需显示操作符,因为对于同一类的对象来说它们都是相同的 36UML 类Displaypixelselementsmenu_itemsmouse_click()draw_box操作方法类名p操作提供了类的实现与其它类的抽象交互。p调用的操作如果有返回值,则为返回值类型列表。如果没有返回值,则此特性为空值。p一个操作可以检查或修改对象的状态。可见性属性名:类型多重性次序可见性操作名(参数列表):反回类型特征属性37类与对象之间的关系p关联association:指对象之间通信,但没有从属关系。p聚集aggregation:较小的对象组成复杂的对象。p组合combination:是一种聚集类型,其中所有者不允许访问构件对象。p泛化generalization:允许我们通过其它的类定义类。n一个较广泛化的元素和一个较特殊的元素之间的类元关系。特殊化的元素完整的包含了广泛化的元素,并含有更多信息 38类的派生p根据另外一个类来定义类。n派生类继承了基类的属性和操作。派生类 基类UML泛化39类派生案例Displaypixelselementsmenu_itemspixel()set_pixel()mouse_click()draw_boxBW_displayColor_map_display基类派生类UML泛化40多重继承SpeakerDisplayMultimedia_display基类派生类41messagemsg:ADPCM_streamlength:integermessage setcount:integer0.*1contains#contained messages#containing message sets关联p关联:描述类之间的关系。p例如:关联名称42链接p链接:描述对象之间的关系。p例如:链接定义包含关系。messagemsg=msg1length=1102messagemsg=msg2length=2114message setcount=243行为描述现在考虑描述系统的行为:p使用状态机p状态机是展示状态与状态转换的图 ab状态状态名称转移44事件驱动状态机p一个状态向另一个状态的改变由事件触发。事件是某一种动作。n状态机在收到输入时会改变状态。p事件可来自系统外也可来自系统内。n信号事件:异步事件。n调用事件:同步的通信。n时间事件:由时间激活的。45mouse_clickleftorright:buttonx,y:position声明abmouse_click(x,y,button)事件描述事例的类型p信号事件46cddraw_box(10,5,3,2,blue)事例的类型p调用事件:p时间事件:eftm(time-value)接收到一个请求,从而激活某个操作。满足一个时间表达式,进入某状态后经过一定的时间,或者到达某个绝对时间后发生事件。47例:状态机找到鼠标点击区域得到菜单项信息调用过的菜单项找到对象加亮显示对象初始状态停止状态mouse_click(x,y,button)/find_region(region)input/outputregion=menu/which_menu(i)call_menu(I)region=drawing/find_object(objid)highlight(objid)48顺序图p显示随时间操作的顺序p显示多重对象行为之间的关系。m:Moused1:Displayu:Menumouse_click(x,y,button)which_menu(x,y,i)call_menu(i)时间495、模型火车控制器控制台电源接收机马达ECCaddressheadercommand50需求p控制台在一条轨道上能控制8辆火车。p速度至少有63个等级。p惯性控制调整响应至少有8个等级。p紧急停车按键。p信息传输要有检错方案。51需求表格52概念性的规格说明p在我们生成一个详细的规格说明之前,我们将写一个初始的,简化的规格说明。n让我们在UML和规格说明方面有一个实践。n概念性的规格说明可使我们更好地理解系统。n在投入大量的精力之前通常可以让我们发现潜在的问题。p从消息的定义开始,因为消息决定了控制器能做什么。命令名称 参 数 ,set-speed 速度(正或负)set-inertia 惯性值(非负)estop 无53消息的类commandset-inertiavalue:unsigned-integerset-speedvalue:integerestop54:console:train_rcvrset-inertiaset-speedset-speedset-speedestop:console:receiver1.n:command子系统的协同图顺序图55主要子系统的任务p控制台n从面板上读状态n格式化信息n传输信息p火车n接收信息n解释信息n控制火车56控制台系统的类图consolepanelformattertransmitterreceiver*sender*111111111157控制台类的任务p面板:描述模拟按键和接口硬件。p格式化程序:将按键设置转换成比特流。p发射机:给火车发数据。58火车系统类train settrainreceivercontrollermotorinterfacedetector*pulser*11.t111111111159火车类的任务p接收机:数字化来自铁轨的信号。p控制器:解释接收到的指令并作出控制决定。p脉冲发生器:产生马达所需求的信号。60详细的规格说明p现在可以把概念性的规格说明的细节加上:n更多的类;n操作p草拟一个规格说明可以帮助我们理解系统中的基本关系。61火车速度控制p火车由脉冲宽度调制来控制:V+-周期62控制台的物理对象类图knobs*train-knob:integerspeed-knob:integerinertia-knob:unsigned-integeremergency-stop:booleanpulser*pulse-width:unsigned-integerdirection:booleansender*send-bit()detector*read-bit():integer63面板和马达接口类图p面板类定义控制n为面板上的每一个控制定义一个操作nnew-settings()使用set-knobs操作改变调节器的设置。p马达接口类定义马达持续状态的速度。paneltrain-number():integerspeed():integerinertia():integerestop():booleannew-settings()motor-interfacespeed:integer64Transmitter 和 receiver 类pTransmitter:为每种要发送的消息提供一个行为。p接收机功能提供操作方法:n探测接收新的信息,判决类型,读取参数。transmittersend-speed(adrs:integer,speed:integer)send-inertia(adrs:integer,val:integer)set-estop(adrs:integer)receivercurrent:commandnew:booleanread-cmd()new-cmd():booleanrcv-type(msg-type:command)rcv-speed(val:integer)rcv-inertia(val:integer)65Formatter 类formattercurrent-train:integercurrent-speedntrains:integercurrent-inertiantrains:unsigned-integercurrent-estopntrains:booleansend-command()panel-active():booleanoperate()pFormatter 类保存了当前所有火车的控制设置。poperate()操作执行基本的格式化任务。66Control input 类p使用软面板来显示每个火车目前的面板设置。p改变火车的编号:n必须改变软面板的设置来反映目前火车的速度等参数。p控制速度/惯性参数/紧急停车:n读取面板上的参数,检查变化,执行指令。67控制输入顺序图:knobs:panel:formatter:transmitter改变速度/惯性/紧急停车改变火车编号change incontrolsettingsread panelpanel settingspanel-activesend-commandsend-speed,send-inertia.send-estopread panelpanel settingsread panelpanel settingschange intrainnumberset-knobsnew-settings68Formatter operate 操作(状态图)空转update-panel()send-command()panel-active()新火车编号其它69Panel-active 操作(行为)(状态图)panel*:read-train()current-train=train-knobupdate-screenchanged=trueTpanel*:read-speed()current-speed=throttlechanged=trueTF.F.current-train!=train-knobcurrent-speed!=throttle70Controller 类controllercurrent-train:integercurrent-speedntrains:integercurrent-directionntrains:booleancurrent-inertiantrains:unsigned-integeroperate()issue-command()71设置速度p不要去及时改变速度。p控制器应该通过发送数个指令来逐步改变速度。72火车接收到set-speed 指令后的顺序图:receiver:controller:motor-interface:pulser*new-cmdcmd-typercv-speedset-speedset-pulseset-pulseset-pulseset-pulseset-pulse73Controller operate 操作(行为)issue-command()receive-command()wait for acommandfrom receiver74细化的指令类commandtype:3-bitsaddress:3-bitsparity:1-bitset-inertiatype=001value:3-bitsset-speedtype=010value:7-bitsestoptype=00075