汽车电子-第5章软件设计_第1页
汽车电子-第5章软件设计_第2页
汽车电子-第5章软件设计_第3页
汽车电子-第5章软件设计_第4页
汽车电子-第5章软件设计_第5页
免费预览已结束,剩余161页可下载查看

下载本文档

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

文档简介

§5

控制系统的

设/计Software

Design

of

AECs本章要求/Requirement

of

this

section控制

的架构/

Architecture

of

AECs

Software学习

:汽车

工程/Learn

theReference:AutomotiveSoftware

Engineering了解汽车开发式系统架构的概念和含义/Understand

theConcept

of

AUTomotive

Open

System

ARchitecture

(AUTOSAR)掌握

实时系统的编程方法和

/

Master

thedevelopment

methods

ofembedded

real

time

system学习参考资料/Study

references:SAE关于

可靠性

/

SAE

software

reliabilitystandards;的

/

SAE

diagnosis

standards;Joseph第1页编程技术北航SAE关于故障OSEK/VDXLemieux等著§5

控制系统的

/计Software

Design

of

AECs

控制

的架构/

Architecture

of

AECs

Software§5.1第2页驾驶员-车辆-环境系统/The

Driver-Vehicle-EnvironmentSystemNetworked

ECUsDriverEnviron-mentSetpointGeneratorsSensorsOpen/ClosedLoop

ControlMonitoringActuatorsPlantVehicle第3页自适应巡航控制系统/Adaptive

Cruise

Control

SystemESPECUACCECUEngineECUTransmission

ECURadarSensor第4页SensorsActuatorsSetpointGeneratorsSensorsActuatorsSetpointGeneratorsSensorsActuatorsSetpointGeneratorsBusHierarchy

Level

1Hierarchy

Level

2The

ACC

ECU

and

ACC

Systemsf1f2f3f4ECU1ECU2ECU3VehicleFunctionsControl

UnitVehicle第5页ECUs

Onboardthe

VehicleFunction

and

ECU

networks

of

the

vehicle电子控制系统开发流程任务分解系统集成ECU的硬件设计ECU的软件设计执行器开发给定信号和传感器开发第6页供应商管理质量控制体系车辆电子控制系统项目管理流程平台配置管理需求管理开发流程ysis

of

User

Requirements&

Specification

of

Logic

System

Architectureysis

ofLogical

System

Architecture&

Specification

ofTechnical

System

ArchitectureSystem

DevelopmentSoftwareDevelopmentysis

ofSoftware

Requirements&

Specification

of

Software

ArchitectureSpecificationof

Software

ComponentsDesign

&

Implementation

of

Software

ComponentsAcceptance

Test&

System

TestCalibrationSystem

Integration

TestIntegration

of

System

ComponentsSoftware

Integration

TestIntegration

ofSoftware

ComponentsTesting

of

Software

ComponentsLogic

System

Architecturef1

f2ECU3Control

Unitf3f4FunctionTechnical

System

ArchitectureECU1ECU2Software电子控制系统与的开发流程需求支持开发流程第7页ysis

ofUser

Requirements&

Specification

ofLogic

System

Architectureysis

ofLogical

System

Architecture&

Specification

ofTechnical

System

ArchitectureSystemDevelopmentSoftwareDevelopmentysis

ofSoftware

Requirements&

Specification

ofSoftware

ArchitectureSpecificationof

Software

ComponentsDesign

&

Implementationof

Software

ComponentsAcceptance

Test&

SystemTestCalibrationSystemIntegration

TestIntegration

ofSystem

ComponentsSoftware

Integration

TestIntegration

ofSoftware

ComponentsTesting

of

SoftwareComponentsf1f2f3

f4Logical

System

ArchitectureFunctionControl

UnitTechnical

System

ArchitectureECU1

ECU2ECU3Software第8页电路转换和BIOS的分配和设置发驾驶员、

和变速器的协调控制发速器的模型和控制策略部件解释信号的输出和功能函数的服务要求ServiceRequirementsof

Function逻辑通道数的服务要求ServiceRequirementsof

logic

channelnumber逻辑通道服务要求ServiceRequirementsof

logic

channel(in

Ticks)部件的测量

ComponentsMeasurement控制算法的要求Requirement

ofcontrol

strategyI/O

电路处理器模块驾驶员发变速器部件操作

层SUL(SupervisorLayer)整车抽象层VAL(VehicleionLayer)部件抽象层CAL(ComponentionLayer)硬件抽象层HAL(HardwareionLayer)控制器抽象层PAL(ProcessorionLayer)基本输入输出BIOS(Basic

Input/Output

System)硬件部件测量结果(物理值)ComponentsMeasurement(Physical

MeasureValue)ECU引脚电气信号ECU

Plug

(electricMeasure

value:V,R,I)单片机引脚电气信号

MCUPin

(fromMCUreceivedelectric

measurevalue:V)模连接到

块Connection

toperipheral

module(peripheralspecific)驾驶员意图Driver’s

desire电路转换特性和参数功能模块配置和参数整车特性和参数发变速器的特性和参数传感器和执行器的特性和参数寄存器地址和定义器寄存

和操作要求Access

&OperationRequirementsof

RegistersBIOS分配要求

Requirementsof

BIOS

Config被控对象的

特性要求Requirementsof

Plants传感器和执行器部件的参数要求Requirementsof

Sensors

andActuators信号处理要求

Requirementsof

SignalCircuitin

ECUSoftware

layers数据层次第9页1.2.3.ysis

of

user

requirements

and

specification

of

logical

system

architecture;在逻辑层次解决客户需求和指标ysis

of

the

logical

system

architecture

and

specification

of

technical

systemarchitecture;分析逻辑层次的构架,确定技术层次的解决方案;ysis

of

software

requirements

and

specification

of

software

architecture;确定

部分的解决方案和技术指标Specification

of

software

components;

确定

模块的指标Design,implementation,and

tests

of

software

components;设计和测试模块Integration

of

software

components

and

software

integration

tests;集成模块和

集成测试Integration

of

system

components

and

system

integration

tests;系统集成和测试Calibration;标定System

test

and

acceptance

test;系统测试和检验第10页传统的

设计框架/

Traditional

Architecture

of

AECs

Software前

模式/

Foreground

and

background

Mode前/

个大循环,循环查询各种标志位。如果标志位置位,就执行相应的服务程序。/

The

foreground

and

background

mode

is

a

super

loop,which

inquiry

every

flags

to

implement

corresponding

service

routine.标志位就是标志事件的发生,事件响应延时处于不可

状态。/

The

Flagpresents

the

events

happened.

The

response

delay

is

un-predicable.中断服务虽然能即时/优先响应,但是它们和主循环的通讯,也是通过置主循环中相应的标志位来完成的。/The

interrupt

mechanism

providesthepriority

and

real-time

to

response,but

they

need

the

flags

to

communicate

withthe

main

loop.的情况是循环中所有其他的事件服务程序执行完,才响应当前事件。/

In

the

worst

case,

the

response

current

event

can

only

happened

after

all

theother

events

have

been

implemented.第11页设计框架/Traditional

Architecture

of传统的AECs

Software,

前台?:应用程序是一个无限循环,巡回地执行多个事件,完成相应的操作,这一部分

称为

,通常在主程序main()中被调用。/Background

is

an

infini oop,

generally

is

called

bymain.前台:一般由中断服务程序组成,中断服务程序处理异步事件,这一部分可以看成是前台。/Foreground

generally

consists

of

interrupt

serviceroutine.因此,

也可称为任务级,而前台则被称为中断级。/Hence

background

is

tasks

andForeground

is

interrupts.第12页设计框架/Traditional

Architecture

of

AECs

Software/* 程序*/while

(1){action1();action2();...actionn();}}传统的前

设计main(){/*硬件初始化*/action1(){ /*执行操作1

*/...}action2(){ /*执行操作2

*/...}...actionn(){ /*执行操作n

*/...}isr1(){ /*中断1的中断服务程序

*/...}isr2(){ /*中断2的中断服务程序*/...}...isrn(){ /*中断n的中断服务程序*/...}前台第13页控制周期/Control

PeriodAction1Action2...ActionNAction1Action2设计框架/Traditional

Architecture

of

AECs

Software传统的前

设计优先级/

Priority时间/Time巡回服务系统中,处理器总是处于全速运行状态(即通常所说的Poll轮循方法),处理器的开销比较大,带来的问题是能耗高。如果系统的外部事件不是发生得很频繁,那么可以降低处理器服务事件的频率,同时这样也不会降低响应时间,这时就采用定时器驱动的巡回服务系统。同时这种巡回服务系统,控制周期不是很精确,为保证控制周期的精确度,例如标准的10ms控制周期,往往采用定时器触发,每隔10ms产生一次定时器中断,一般又叫Period

Interrupt

Timer,简称PIT。第14页设计框架/Traditional

Architecture

of

AECs

Software设计,其主程序只有初始化函数,任务调度放在定传统的采用定时器触发的时器中断服务程序中。main(){/*系统初始化*//*设置定时器*/while

(1)enter_low_power();}isr_timer()/*定时器的中断处理程序*/{action1();/*执行事件1的处理*/action2();/*执行事件2的处理*/...actionn();/*执行事件n的处理*/}第15页设计框架/Traditional

Architecture

of

AECs

Software传统的前

设计采用定时器配置的

配置/

The

background

of

triggered

by

timer.控制周期可以由定时精确控制;/Period

is

precisely

controlled

by

timer.没有任务时可以进入睡眠模式;/CPU

enter

standbymode

without

task.Action1Action2...ActionNAction1Action2控制周期/Control

Period时间/Time优先级/

isr_timerPriority休眠/Standbyisr_timer第16页传统的

设计框架/

Traditional

Architecture

of

AECs

Software前台的设计,就转变为中断的配置,通常在定时器中断服务程序中要重新开中断允许,并且中断的优先级要高于定时器中断ISR_timer,这样前台的程序ISR1~ISR3等就可以得到及时的响应。...Action1Action2...ActionN控制周期/Control

Period优先级/Priority时间/TimeISR1Action2ISR2ISR4ISR3前台的优先级Priority

ofForeground对事件的响应延迟Delay

of

eventresponseisr_timer第17页传统的

设计框架/

Traditional

Architecture

of

AECs

Software前

举例:转速信号测量

(实验二)/*

模板*/main(){/*硬件初始化*//* 程序*/while

(1){action1();action2();...actionn();}}void

main(void){REMOVE

THIS

CODE!!!

***/PE_low_level_init();/***

End

of

Processor

Exper***//*

Write

your

code

here

*/Cap1_Enable();/***

Processor

Expert

end

oMODIFY

THIS

CODE!!!

***/for(;;){}/***

Processor

Expert

end

offO***/byte

Cap1_Enable(void)/***

Processor

Expert

intern{T1SC_TSTOP

=

0;/*

Run

counter

*//*T1SC0:CH0F=0,CH0IE=1,MS0B=0,MS0A=0,ELS0B=0,ELS0A=1,TOV0=0,CH0MAX=0

*/T1SC0

=

0x44;/*Enable

both

interrupt

andcapture

function

*/return

ERR_OK;WRITE

CODE

BELOW!!!

***/

/*OK

*/}

/***

End

of

main

routine.D

}第18页传统的

设计框架/

Traditional

Architecture

of

AECs

Software前

举例:转速信号测量

(实验二)volatile

unsigned

int

Capturevalue0;volatile

unsigned

intCaptureDiff;volatile

unsigned

int

;void

Cap1_OnCapture(void){static

unsigned

char

CaptureFlag

=

1;if(CaptureFlag

==

1)

{Capturevalue0

=

Cap1_GetCaptureValue();}

else

{CaptureDiff

=

Capturevalue0

-

Cap1_GetCaptureValue();}CaptureFlag

=

1-CaptureFlag

;Cap1_Enable();/*

Write

your

code

here

...

*/}/*

END

Events

*/}ISR(Cap1_Interrupt){T1SC0_CH0F

=

0;/*

Reset

interrupt

request

flag

*/Cap1_OnCapture();/*

Invoke

user

event

*//*

END

Cap1.

*/第19页设计框架/Traditional

Architecture

of现代的AECs

Software采用

实时操作系统的模式/

EmbeddedReal-TimeOperatingSystem实时系统(uCOS):整个程序分成一个个看起来好象是并行的任务,每个任务都在等待事件的发生。因为uCOS不支持时间片轮转,除了最低优先级任务(在uCOS中是IDLE任务)是死循环以外,其他的任务都不能死循环,只能在驱动事件驱动下工作。任何驱动事件的产生,都使优先级最高的就绪任务运行。任务和任务/任务和中断的通讯,是通过相应事件驱动来完成的。:OSEK

实时操作系统介绍第20页OSEK

/VDXSULCALVALHALPALBIOSConfigurationCoordinationDriver-Engine-GearboxEngine-StrategyHardwareion

&FunctionIllustrationGearbox-StrategyOSEKOSLibrabiesComponents

Components-ControlControl

Sensor

Sensor

ysisysis

vehicle

GearboxComponents-Control/Sensorysis

EngineError

Handling&

FunctionillustrationOSEK

COM/NMInteraction

Layer

NetworkNetworkLayerProcessor

ion

InstrumentationPeripheral

Module-DriverData

Link

Layer第21页OSEK原文来自德语“Offene

Systeme

und

deren

Schnitts len

fürdie

Elektronik

im

Kraftfahrzeug”的缩写,英文的意思为“Open

systems

and

the

corresponding

interfacesfor

automotive

electronics”,中文可译为“

开放式系统及其接口”。OSEK最初由欧洲的汽车制造商于1994年提出,后来逐步发展为汽车工业的全球标准。OSEK主要包括了四个部分:OSEK

OS,操作系统OSEK

OIL,可执行语言OSEK

COM,通信管理OSEK

NM,网络管理第22页操作系统(OS)包括操作系统功能元素的描述和定义,例如任务(Tasks)、中断(Interrupts)、事件(Events)、计数器(Counters)、警报(Alarms)、资源(Resources)和

钩子(Hooks)等基本要素;以及如何定义应用程序接口(ApplicationProgrammingInterface,简称API),例如功能定义(Functions),类型定义(Type

definitions),常数变量定义(Constants)等;还包括进程调度(Scheduling)和优先级(Priority)如何确定和优化的方法;通过操作系统的调度,可以很灵活地适应汽车控制系统中的各种任务之间的嵌套。典型的OSEK

OS系统:Winder

River公司的OSEKWorks操作系统;ETAS公司的RTA-OSEK;Freescale公司的OSEK-Turbo;上述操作系统均满足OSEK的指标规范(Specification),而且覆盖了

控制系统中广泛采用了各种8位、16位和32位单片机型号。第23页可执行语言(OSEK

Implementation

Language,简称OIL)它在OSEKOS的基础上,帮助用户如何具体定义自己的应用(Application)。只要通过OIL来静态地配置各个任务属性、占有的资源、定义事件等工作,就能够确定程序跑起来之后,操作系统就能够实现动态调度任务的功能。也就是操作系统本身,包括调度的机制、中断嵌套、底层驱动都已经写好,只要解决了操作系统的应用配置(Application

Configuration)就可以让操作

系统进行任务管理了。通过OIL的配置文件,实现用户对OS的缩放(Scaling)和裁剪,从而使得操作系统能够适应各种各样的

控制系统的要求。OIL代表了用户对操作系统的配置文件,OSEK的创建工具(MakeTool)可将其通过SystemGenerator转化为C文件,结合OSEKOS的C文件与用户自己编程的C文件,一起由单片机的编辑器(例如Codewarrior等)编译、连接成可执行代码文件。第24页可执行语言(OSEK

Implementation

Language,简称OIL)第25页通信管理(COM)主要负责在任务之间的数据通信服务或者通过中断服务进行的通信服务,不同的任务通信可以发生在同一个ECU,也可以是多个ECU之间的外部通信服务。通信服务只能通过特殊的应用程序接口(ApplicationProgramInterface,简称API)进行接口;OSEK

COM的目标是为了使得应用

具有良好的开放接口(Portability)、良好的复用性能(Reusability)和良好的协调操作的性能(Interoperability)。而且通过API能够将

和外部通信之间的差别,以及不同的底层通讯协议、总线类型和网络的差别隐

,使得上层的应用(Application)独立于底层的通信。这个思路对后面介绍的AUTOSAR也是适用的!第26页通信管理(COM)CPU2CPU1InterProcessorInterProcessorOSEK

Application应用TASKATASKBCOM

APIInteractionLayerNetwork

Layer

网络层Data

Link

Layer

数据链路层Physical

Layer

物理层COM

APIInteractionLayerNetwork

Layer网络层Data

Link

Layer数据链路层Physical

Layer

物理层OSEK

Application应用TASKC总线例如CAN第27页InterTask网络管理(NM)网络管理的基本目标是为了保证ECU之间的通信的安全性和可靠性,网络管理具有下述的几个功能:OSEK各个层次之间的接口,例如与API接口;的

之间的交互接口等;适应不同总线协议的要求,例如CAN、LIN、J1850,K-Bus等协议,以及相应的错误处理、状态统计算法等;适应不同的节点资源,例如功能根据节点的要求对NM进行缩放,或者根据应用对网络管理服务进行定制等;还能够适应硬件设计需求,例如适应协议电路或者物理层电路的特性等;此

络管理还能够适应非OSEK规范的网络通信管理(StationManagement)和节点的管理策略等。第28页网络管理(NM)API(应用程序接口);连接到微控制器的各种总线接口;和动态

库(DLL)的接口;和通信管理COM接口;5)非OSEK标准类型的通信站点管理算法;OSEK管理算法;协议制定的网络管理算法Operating

SystemOSEK

COMNetworkManagmentApplicationStation

5)ManagementProtocol

7)SpecificAlgorithmsOSEK

6)AlgorithmsInteractionLayerNetworkLayerData

Link

Layer3)4)1)2)Bus

Communication

Hardware第29页Running/运行Suspended暂停Ready

/就绪Waiting/等待Terminate/终止Activate/激活Wait/等待Release/Start/启动Preempt/抢占OSEK问题1:任务状态如何标志?Running:In

the

running

state,the

CPU

is

assigned

to

the

task;Ready:

All

functionalprerequisites

for

a

transition

intothe

running

state

exist,

and

thetask

only

waits

for

allocation

ofthe

processor.Waiting:

A

task

cannot

continueexecution

because

it

shall

wait

forat

least

one

event.Suspended:

In

the

suspendedstate

the

task

is

passive

and

canbe

activated.扩展任务才有Waiting,基本任务只有另外三种状态!第30页OSEK问题2:任务是如何调度的?(1)Full

preemptive

scheduling/完全先占式调度模式在下图中,当优先级比较低的TaskT2正在运行时,TaskT1被一个事件激活,于是T1立刻由暂停(挂起,Suspended)状态转入就绪(Ready)状态,T2立刻由Running转入Ready状态。然后处理器响应T1,即T1进入运行状态,而T2处于就绪状态;当T1终止后,处理器继续运行T2状态。任务T1实时性重要得多,可随时打断别的任务!第31页OSEK问题2:任务是如何调度的?(1)Fullpreemptivescheduling/完全先占式调度模式用事件触发扩展任务的同步方式:第32页OSEK问题2:任务是如何调度的?(2)Non

preemptive

scheduling/非先占式调度模式在下图中,当优先级比较低的TaskT2正在运行时,TaskT1被一个事件激活,于是T1立刻由暂停(挂起,Suspended)状态转入就绪(Ready)状态,但是由于T2任务还没有结束,这时处理器继续执行T2,当T2终止后,处理器才能把T1转入运行状态。就算任务T1来了,我也执行完任务T2先!第33页OSEK问题2:任务是如何调度的?(2)Nonpreemptivescheduling/非先占式调度模式用事件触发扩展任务的同步方式:第34页同步/Synchronization事件的作用:在下例中,任务A和B通过事件X和Y实现状态同步Task

BTask

AState

A1State

B1Send

Event

XReceive

Event

XState

A2State

B2Event

XEvent

YState

A3State

B3Send

Event

YReceive

Event

YtState

A3State

A1Send

Event

XState

A2State

B1Receive

Event

XState

B2Send

Event

YState

B3第35页协同/CooperationTaskBTask

AWritingVariable

XGlobalVariable

XTimeReadingVariable

XTaskBTaskAWritingVariable

XGlobalVariable

XTimeReadingVariable

X读写例如X为2字节变量,X的初值=0xC066;TaskA中给X赋值,赋值指令为:X_High_Byte=0x80;X_Low_Byte=0x33;Task

B中

X的值,指令为:Temp1=X_High_Byte;Temp2=X_Low_Byte;X=Temp1*256+Temp2;Task

B读的结果为:X=0x8066B中断第36页协同/CooperationTaskBTask

AWritingVariable

XGlobalVariable

XTimeReadingVariable

XTask

BTask

AWritingVariable

XGlobalVariable

XTimeReadingVariable

XTask

A写X前,先禁止TaskB中断,写完之后再开中断例如X为2字节变量,X的初值=0xC066;TaskA中给X赋值,赋值指令为:X_High_Byte=0x80;X_Low_Byte=0x33;Task

B中

X的值,指令为:Temp1=X_High_Byte;Temp2=X_Low_Byte;X=Temp1*256+Temp2;Task

B读的结果为:X=0x8033中断第37页AUTOSAR:AUTomotive

Open

System

ARchitecture供应商之间可互换性车辆平台之间可互换性整车应用之间可互换性第38页AUTOSAR的层次/Layers

of

AUTOSARSW-C:Atomic

SoftWare

Component,

cannot

be

distributedover

several

ECUs.RTE:

Implements

the

VFB

functionality

on

a

specific

ECUBSW:

Basic

SoftWareSW-C服务应用ECU抽象层控制器抽象层复杂驱动(ComplexDrivers,间称CD)指发动机控制中的曲轴同步,点火和喷射控制,以及电磁阀驱动等。实时运行环境第39页系统服务内存服务硬件输入输出抽象层TheSW-C

is

independent

from

the

infrastructure:/SW-C

部件在源代码(Source

Code)上能够独立于:The

Type

of

microcontrollerof

ECU

onwhich

the

SW-C

isMapped/SW-C将要

到的目标ECU中单片机的类型;The

typeof

ECU

onwhich

the

SW-C

is

Mapped/SW-C将要到的目标ECU的类型;The

location

of

theotherSW-C

with

which

the

SW-C

interacts./和本SW-C进行通信交互的其它SW-C所在的ECU位置,也就是不管进行通信交互的SW-C是否在同一个ECU中;The

Number

of

times

aSW-C

is

instantiated

in

a

system

or

withinone

ECU/本SW-C在同一个系统或ECU中实现次数的多少。第40页TheSW-C

is

independent

from

the

infrastructure:第41页AUTOSAR的思路功能被定义一个个

部件(Software

Components,简称SW-C);以

部件的说明为输入,在进行代码开发之前,先采用虚拟功能总线(VirtualFunctional

Bus,简称VFB)来验证各之间和对外接口的有效性;将各个

部件配置到各个ECU中,并配置各个ECU的基本

模块(BasicSoftware,间称BSW);实时运行环境(Real

Time

Environment,简称RTE)负责SW-C和BSW之间的接口;SW-C与ECU无关,只有BSW才与ECU有关,功能独立于底层的软硬件,便于移植!第42页AUTOSAR的接口第43页OSEK/VDXAUTOSAR:MAL功能:是BSW的最底层,为微控制器(MCU)模块的驱动

,直器模块;接

MCU

的各个

模块,以及MCU作用:使得上层的其它

独立与控制器的硬件;代码执行特点:与MCU直接相关;上层接口:与MCU独立的标准化接口分为:处理器驱动,

器驱动,通讯驱动和输入输出驱动处理器驱动内存驱动通讯驱动输入输出驱动第44页AUTOSAR:ECU

ALECU抽象层与控制器抽象层接口,也包括了MCU外部设备的驱动;ECU抽象层通过API接口

MCU的模块和模块,而不用考虑模块的物理地址(MCU的还是外部),也不用考虑模块与MCU的接口方式(并口,SPI,串口等);功能:ECU

AL的目标是更上层独立于ECU的硬件;代码执行特点:与MCU无关,但与ECU有关;上层接口:与MCU和ECU硬件都无关,只有信号的类型有关。包括:通讯硬件抽象层,COM

HW输入输出硬件抽象层,I/O

HW器硬件抽象层,Memory

HW片上设备硬件抽象层,OnboardHW第45页;;AUTOSAR:CD复杂驱动(Complex

Drivers,简称CD)CD主要执行检测复杂的传感器和控制执行器,通过直接

微处理器的特殊中断或其

的复杂周边模块,例如TPU,PCP等;主要用于喷射控制,电磁阀控制,曲轴位置检测等,功能:接口传感器和执行器完成特定功能和定时要求代码执行特点:和MCU、ECU及应用程序都高度无关上层接口:根据AUTOSAR接口定义和执行。CD的技术标准并没有给出第46页AUTOSAR:SL是基本

BSW的最上层,通过ECU的抽象层

底层的I/O信号;SL包括了:操作系统功能,车辆网络通讯和管理服务, 器服务,服务,ECU的状态管理;功能:为上层应用提供基本服务和基本的

模块;代码执行特点:部分和单片机、ECU和应用系统相关;上层接口:与单片机和ECU都无关。第47页AUTOSAR:RTERTE是专门为上层应用程序(包括提供通讯服务的实时运行环境;部件、传感器部件和执行器部件)架构就从层(Layered)转为(Component

style);在RTE的上层AUTOSAR的部件(SW-C)通过RTE服务与ECU

或者外部的

部件(SW-C)建立通讯;功能:使得AUTOSAR

部件独立于所处的ECU。代码执行特点:由ECU和应用指定(一般和所在ECU相关);上层接口:完全独立所处的ECU,基于ECU无关;第48页AUTOSAR:ICCImplementation

Conformance

Classis第49页满足AUTOSAR的开发工具RTA-Real-Time

AUTOSARRTA-OSEKRTA-RTERTA-PDURTA-CAN第50页Introduction

to

OSEKturboVersion

01.000Patrick

S

ySenior

Field

ApplicationsEngineer第51页§5

控制系统的

设/计Software

Design

of

AECs§5.1A单片机运行的基础知识/Basic

background

of

MCU本节帮助大家掌握单片机的程序组织结构/This

section

help

youto

master

the

structure

of

programMC68HC908GZ16的CPU结构第1页§5

控制系统的 设计/

Software

Design

of

AECs问题1:MCU是如何开始运行的?上电之后,MCU的RESET脚有效(即复位状态,一般低电平有效),等待时钟稳定,因为晶振起振,频率稳定需要一点时间,几个到几十个毫秒。A

power-on

reset

(POR)

is

an

internal

reset

caused

by

a

positive

transition

on

theVDD

pin.

VDD

at

the

POR

must

go

below

VPOR

to

reset

the

MCU.

This

distinguishesbetween

a

reset

and

a

POR.对MC68HC908GZ16单片机,上电复位发生以下过程:Holds

the

clocks

to

the

central

processor

unit

(CPU)

and

modules

inactive

for

anoscillator

stabilization

delay

of

4096

CGMXCLK

cyclesDrives

the

RST

pin

low

during

the

oscillator

stabilization

delay.Releases

the

RST

pin

32

CGMXCLK

cycles

after

the

oscillator

stabilization

delay.Releases

the

CPU

to

begin

the

reset

vector

sequence

64

CGMXCLK

cycles

afterthe

oscillator

stabilization

delay.Sets

the

POR

and

LVI

bits

in

the

SIM

reset

status

register

and

clears

all

otherbits

in

the

register.第2页§5

控制系统的 设计/

Software

Design

of

AECs问题1:MCU是如何开始运行的?上电时序图第3页§5

控制系统的 设计/

Software

Design

of

AECs问题1:MCU是如何开始运行的?复位结束后,CPU主动到一个固定的地址取程序

。问题:CPU的是如何运行程序的?PC程序计数器专门用来单片机下一条要运行的程序物理地址。第4页§5

控制系统的 设计/

Software

Design

of

AECs问题1:MCU是如何开始运行的?复位结束后,CPU主动到一个固定的地址取程序

。问题:CPU的是如何运行程序的?CPU每运行一条指令,就自动把PC指向下一条程序的物理地址,因此又叫程序指针。PC=0x18A7物理地址程序指令第5页§5

控制系统的 设计/

Software

Design

of

AECs问题1:MCU是如何开始运行的?复位结束后,CPU主动到一个固定的地址取程序

,这个固定的地址就是存放复位向量的地方(POR

Vector),地址是$FFFE:

$FFFF;在Codewarrior下面,利用Memory窗口可以看见该地址存放的数值。在$FFFE的地方,存放着数据$18A7于是,复位结束后,CPU中的PC就从FFFE的地方得到了0x18A7的数值,于是MCU下一步就跳到物理地址是$18A7的地方,运行程序,而在该地址,存放的单片机复位之后第一次需要运行的程序_Startup()函数。第6页§5

控制系统的 设计/

Software

Design

of

AECs在这个例子里,地址$18A7地方存放是函数_Startup(void)的代码,所以复位之后CPU运行的第一条的指令就是机器码$450150,对应汇编指令为LDHX#0x0150,对应C语言的指令是INIT_SP_FROM_STARTUP_DESC();//即初始化堆栈指针。第7页复位后第一个执行的是启动程序,复位向量存贮了_startup()所在位置在这个例子里,地址$F08C地方存放是函数_Startup(void)的代码。于是引导单片机初始化的工作,就由_Startup(void)函数来完成。§5

控制系统的 设计/

Software

Design

of

AECsStartupCode一般用汇编语言写的,并且会连接到你编译过的可执行的模块中.它为执行C语言写的程序做准备。关闭中断把初始化过的数据从ROM中拷贝到RAM中将未初始化数据区清零给堆栈分配空间并初始化创建并初始化堆栈开放中断调用main()但是也可以和上述配置不一致第9页§5

控制系统的 设计/

Software

Design

of

AECs在这个例子里,_Startup()函数中只对堆栈进行了配置就转到了Main函数了。于是自己的编写的Main函数就接管CPU的运行。第10页§5

控制系统的 设计/

Software

Design

of

AECs问题2:MCU是如何响应中断的?例如在运行主循环任务时,在PC=0x2000发生了定时器中断IF3,于是PC下一步从物理地址为$FFF6:$FFF7的地方获得中断服务程序的

地址这里=$18BEmain(){/*硬件初始化*//* 程序*/while

(1){action1();action2();...actionn();}}PC=0x1000PC=0x1002…………PC=0x2000PC=0x3000§5

控制系统的 设计/

Software

Design

of

AECs问题2:MCU是如何响应中断的?于是PC=0x18BE,下一步CPU完成了进入的中断的规定动作之后(把寄存器的内容存入堆栈),就跳到物理地址是0x18BE的地方开始运行,也是运行中断服务程序。中断向量和复位向量是类似的,只是存放对应的物理地址不同。第12页§5

控制系统的 设计/

Software

Design

of

AECs问题2:MCU是如何响应中断的?为了把CPU的寄存器内容保留,响应中断之前,需要把寄存器的内容存入堆栈,等中断服务程序结束,返回主程序时,在把堆栈里的内容恢复到寄存器中。第13页§5

控制系统的 设计/

Software

Design

of

AECs问题2:MCU是如何响应中断的?为了把CPU的寄存器内容保留,响应中断之前,需要把寄存器的内容存入堆栈,等中断服务程序结束,返回主程序时,在把堆栈里的内容恢复到寄存器中。所以,在开中断之前,一定设置好堆栈指针!第14页§5

控制系统的 设计/

Software

Design

of

AECs问题2:MCU是如何响应中断的?每个单片机都会指定中断向量存

放表的物理地址!第15页§5

控制系统的 设计/

Software

Design

of

AECs问题2:MCU是如何响应中断的?所以,一定要查阅对照单片机说明资料,查到对应中断源的中断向量位置在什么地方,同时要看看中断优先级的排序。第16页§5

控制系统的 设计/

Software

Design

of

AECs问题3:如何在Codewarrior中配置中断?从网络学堂参见Codewarrior使用的PPT文件!第17页§5

控制系统的 设计/

Software

Design

of

AECs§5.2控制算法/ControlAlgorithm控制算法为带输入和输出逻辑模块/The

control

algorithm

is

theblocks

ofinput-output

system单片机的计算能力决定能够采用的控制算法的复杂程度/The

complexity

ofalgorithm

is

restricted

by

the

computational

capability

of

the

MCU

of

AECs典型的控制算法包括/The

typical

algorithm

blocks

include:简单的加减乘除数学逻辑/Simple

math

operation

such

as+-x/,…与、或、非等逻辑/Simple

logic

operation

such

asand,or,not,…信号滤波逻辑/The

filtering

algorithm

of

inputs

oroutputsPID等控制逻辑/The

PID

control

algorithm查MAP图和插值逻辑/The

interpolation

or

look

up

tables限制和饱和逻辑/The

non-linear

blocks

such

assaturation,limitation

et

al.实际的控制算法都要考虑物理意义的极限边界值/

The

actual

control

algorithmshould

considered

the

absolu imitation

of

physical

models.第1页§5.2控制算法/Control

Algorithm比例控制P/Proportional

element(P)输入参数:x输出参数:y标定参数:Kp,KpPos,KpNeg,WinPos,WinNegxk

WinPos,

yk

Kp

WinPos

KpPos

(xk

WinPos)xk

WinNeg,

yk

Kp

WinNeg

KpNeg

(xk

WinNeg)xyWinNegWinPosKpKpPosKpNegWinNeg

xk

WinPosyk

Kp

xk第2页§5.2控制算法/Control

Algorithm积分控制I/Integral

element(I)输入参数x,输出参数y,T0为采样时间,ix为初值;标定参数为Ki,KiPos,KiNeg,WinPos,WinNeg

Q

Ki

T

0Q

z11

z1

,Kisxk

WinPos,

Q

KiPos

T

0xk

WinNeg,

Q

KiNeg

T

0WinNeg

xk

WinPos,

Q

Ki

T

0yk

yk

1

Q

xkxQ*xkWinNegWinPosKi*T0KiPos*T0KiNeg*T0第3页§5.2控制算法/Control

Algorithm比例积分控制PI/Porportional

and

integral

element(PI)输入参数x,输出参数y,输出参数yp,输出参数yi,T0为采样事件,ix为初值;标定参数为Ki,KiPos,KiNeg,Kp,KpPos,KpNeg,WinPosI,WinNegI,WinPosP,WinNegP,以及标定参数lim(边界限制值),pv(输出的预置初值)ypk

Kp

xkWinNegP

xk

WinPosPxk

WinPosP,

yk

Kp

WinPosP

KpPos

(xk

WinPosP)xk

WinNegP,

yk

Kp

WinNegP

KpNeg

(xk

WinNegP)xk

WinPosI,

Q

KiPos

T

0xk

WinNegI

,

Q

KiNeg

T

0WinNegI

xk

WinPosI

,

Q

Ki

T

0yik

yik

1

Q

xk

,

Q

Ki

T

0yk

yik

ypkyLimNeg

yk

yLimPos第4页§5.2控制算法/Control

Algorithm比例积分控制PI/Porportional

and

integral

element(PI)第5页§5.2控制算法/Control

Algorithm带1阶延迟的比例环节PT1/Proportional

element

with

1storder

time

delay(PT1)又叫一阶滤波器输入参数x,输出参数y,T0为采样时间,Ix为初值;标定参数为Q11

T1

s1(1

Q)

z1,

Q

eT

0

温馨提示

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

评论

0/150

提交评论