基于μC/OS-II设计整车控制器系统技术

发布者:码农闲散人最新更新时间:2010-06-18 来源: 单片机与嵌入式系统应用关键字:混合动力  μC/OS-II  移植  控制器 手机看文章 扫描二维码
随时随地手机看文章

    混联式混合动力系统的子系统众多,其中整车控制器作为实现驾驶员驾驶需求和能量安全的管理系统,需要协调发动机、扭矩、电机和电池的功率在不同工况下的合理分配,实现制动能量回馈,并控制外围设备(如空调、灯光),以达到最佳的节能排放效果。系统任务的复杂性和强电磁干扰环境都对整车控制器的实时性和可靠性提出了重大挑战,传统的单任务循环式的程序控制模式难以满足需求,本文采用了开放源码的嵌入式操作系统μC/OS-II设计整车控制器系统软件。

1 整车系统结构

    所开发的全混合动力轿车是天津市重大专项课题,以长城哈佛SUV轿车为平台。该车动力系统主要由发动机、交流电动机、交流发电机和高性能的镍氢电池、行星架动力分配机构以及DC-AC逆变器组成。整车控制器采用总线与发动机管理系统、电机控制器和动力电池组管理系统交换信息,并且预留了1路CAN以便后期与车身系统通信。

     整车控制器根据驾驶员输入信号,结合电池组状态和车辆当前运行状态,根据一定的策略控制各个子系统的工作,实现节能减排的目标。系统网络拓扑如图1所示。

2 整车控制器硬件设计

    ECU的硬件设计按照模块化原则,可分为如下几个功能模块:微控制器模块、数据采集模块、功率驱动及保护模块、D/A转换模块、电源模块、通信模块、显示及报警接口和标定诊断接口等。采用Infineon公司的XC164CS微控制器,它基于增强的C166SVZ内核,并在性能上优于其他16位微控制器:内部集成DSP功能、扩展的中断处理能力、强大的片上外设以及高性能片上Flash,如图2所示。

3 μC/OS-II的移植

    μC/OS-II嵌入式实时操作系统采用ANSI C语言编写,具备很好的可读性和可移植性;对硬件资源要求不高,在大多数8位、16位微控制器上都可以实现移植。

3.1 μC/OS-II的启动

    首先要调用硬件驱动程序对硬件进行初始化设置,然后调用系统初始化函数OSlnit()初始化μC/OS-II所有的变量和数据结构。

    启动μC/OS-II之前建立1个应用任务。OSlnit()建立空闲任务idletask,这个任务总是处于就绪态。空闲任务OSTaskIdle()的优先级设成最低,即OS_LOWEST_PRIO。多任务的启动需要用户通过调用OSStart()实现。当然还有其他设置,这里不再一一介绍。

3.2 μC/OS-II的移植

    μC/OS-II操作系统在XC164CS微处理器上的移植主要实现对3个文件OS_CPU.H、OS_CPU_C.C、OS_CPU A.ASM的处理。

3.2.1头文件INCLUDES.H

    INCLUDES.H头文件应被包含到所有C文件的第1行。尽管包含不相关文件可能会增加文件的编译时间,但增强了代码的可移植性。用户可以编辑增加自己的头文件,但必须添加在头文件列表的最后。

3.2.2 OS_CPU.H文件

    OS_CPU.H文件中包含与处理器相关的常量、宏和结构体的定义。针对XC164CS处理器,定义堆栈数据类型为16位,栈向下递减;将μC/OS-II控制中断的2个宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()定义为微控制器关闭(SETC)和打开(CLRC)中断的指令;声明OS_TASK_SW()函数,中断服务程序ISR的入口指向函数OSCtxSw()。



3.2.3 OS CPU A.ASM

    μC/OS-II移植时要求用户编写4个汇编语言函数:OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()和OSTickISR()。

(1)OSStartHighRdy()

    调用该函数使处于就绪状态的优先级最高的任务开始运行。由于实时操作系统是不返回的函数,所以调用后需移去堆栈栈顶的返回地址,然后执行用户调用函数OSTaskSwHook(),最后开始运行多任务,获得优先级最高的任务的指针,根据这个指针从任务堆栈中恢复所有寄存器,恢复完后执行中断返回,运行就绪态任务。

(2)OSCtxSw()

    当从低优先级的任务切换到较高优先级的任务时,调用任务切换函数OSCtxSw()保存处理器的内容和任务指针到当前任务的任务堆栈,然后执行用户调用函数OSTaskSwHook(),最后从要执行任务的任务堆栈里恢复寄存器和堆栈中的内容,执行中断返回指令开始运行新的任务。

(3)OSIntCtxSw()

    当需要在中断发生后切换到更高优先级的任务时,调用中断级任务切换函数OSIntCtxSw(),然后执行用户调用函数OSTaskSwHook()。因为该函数是在中断程序中被调用,所以不需要保存中断任务的寄存器;中断子程序在调用函数OSInExit()时,将返回地址压入堆栈,在这里不需要再返回,所以必须从堆栈中清理掉返回地址。

(4)OSTickISR()

    OSTickISR()是μC/OS-II中的时钟节拍中断服务程序。在每个时钟节拍调用该函数,给每个处于延时的任务延时减1,并检查所有处于延时状态的任务是否延时结束成为就绪任务。然后调用OSIntExit(),如果有优先级更高的任务就绪,OSIntExit()就会进行任务调度。OSIntExit()并不返回调用者,而是用新的任务堆栈中的内容来恢复CPU现场,由中断返回执行新的任务。

3.2.4OS_CPU_C.C

    用户需要编写6个C语言函数OSTaskStkInit()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskSatHook()、OSTimeTickHook()。其中,唯一必要的是OSTaskStkInit(),其他5个必须声明,但可以不包含代码。

    OSTaskStkInit()由任务创建函数OSTaskCreate()或OSTaskCreateExt()调用,在建立每个任务的时候初始化任务堆栈。开始运行这个任务就是模拟中断返回,把初始化后堆栈中保存的值恢复到各个寄存器。初始化任务堆栈时,要传递任务代码起始指针(Ptask)、参数指针(Pdata)、任务堆栈栈顶指针。任务堆栈初始化完成后,返回一个新的堆栈栈顶指针,OSTaskCreate()或OSTaskCreateExt()将它保存到OSTCB中。

    在OS_CPU_C.C文件中可以创建5个钩子函数,使用的前提是配置文件中常量OS_CPU_HOOKS_EN使能。

    至此,μC/OS-II操作系统的移植基本完成。

4 整车控制器软件多任务设计

    整车控制器软件设计以实时操作系统作为开发平台,将应用程序分解成多任务,简化了系统软件的设计,保证了整车控制系统的实时性,提高了系统的稳定性与可靠性。整个系统的主程序流程如图3所示。

4.1 定时器模块

    定时器的主要功能是为软件程序提供基准时钟。本应用选择T5作为时钟基准,在初始化函数void GPT_vInit()中完成模块寄存器配置;中断服务程序设置为OSTicklSR(),中断向量为0x25。通过建立时钟任务函数Timer_Int(),调用时钟节拍函数OSTimeTick(),实现定时器与系统时钟的连接。系统时钟节拍编程为1 ms,可以减少中断服务时间,提高实时性。


4.2 CAN通信模块

    CAN通信模块功能是实现整车控制器与其他节点间的信息传输。周期性传输,传输周期为20 ms,通信速率为250 kbps,中断调用CAN通信服务程序。

    创建CAN通信模块任务CAN_Trans,任务优先级3:



4.3 A/D模块

    A/D模块功能是完成读取蓄电池电压、加速踏板传感器和节气门位置传感器信号,并进行模数转换,被其他函数调用。

    创建A/D转换模块任务ADC_Cony,任务优先级4:



4.4 整车控制主程序模块

    在混合动力汽车系统各模块自检成功后,整车控制器要求启动电池,进入正常EV工作模式。然后通过判断档位,钥匙开关和油门踏板等信息,进入不同的处理模块。控制策略包括整车控制策略和能量流管理策略,实现基于扭矩算法的控制输出。

    创建整车控制主程序任务Drive_Ctr,优先级9:

OSTaskCreate(Drive_Ctr,(void*)&Drive_Ctr[OS_TASK_STK],9)

    这里限于篇幅不再介绍其他模块,大体过程相似。

结语

    随着汽车整车技术的不断发展和法规日益严格的要求,汽车电子系统会变得越来越复杂,采用操作系统来实现对复杂任务的管理和协调,将成为不可避免的趋势。

    本文通过混合动力整车控制器的软硬件设计,详细说明了μC/OS-II系统移植过程,优化了系统软件设计,充分满足了系统的需求。经实车试验测试取得了很好的效果。

关键字:混合动力  μC/OS-II  移植  控制器 引用地址:基于μC/OS-II设计整车控制器系统技术

上一篇:基于μC/OS-Ⅱ的线控转向FlexRay通信控制
下一篇:HT46RU24设计的出租车计价器方案

推荐阅读最新更新时间:2024-05-02 21:04

ARM开发板系统移植-----rootfs的制作
前面两篇文章分别介绍了mini2440开发板上运行的bootloader和kernel,到这里系统启动后其实是停留在一个“僵死”的状态---无法挂载根文件系统。 这里将介绍如何制作一个根文件系统,并且挂载到内核中---即让内核能够访问到文件系统中的目录和文件。从用户的角度来看文件系统无非就是各个目录和文件,注意,这些目录和文件可以存在内存中,也可以存在Nand Flash 或者NOR Flash中,视具体的文件系统而定。本文就用基于内存的initram 和基于网络的nfs文件系统做例子介绍文件系统的概念。 首先什么是文件系统?就本人理解而言,它就是操作系统提供的一种抽象,即操作系统将存储介质抽象化,并提供一种访问这种抽象的
[单片机]
ARM开发板系统<font color='red'>移植</font>-----rootfs的制作
uIP在51单片机上的移植
  uIP其主要是为8位和16位系统设计的,程序在编写时就考虑到了移植问题。uIP的主要文件包括uip.c和uip_arp.c。      (1)移植的基本过程。      针对所用编译器的类型更改定义数据类型,底层RTL8019AS芯片的驱动和实现应用层代码,系统定时器接口等。下面分别予以说明。      数据类型的定义:   typedefunsignedcharu8_t;typedefunsignedshortu16_t;typedefunsignedshortuip_stats_t;由于KeilC编译器默认情况下的编译模式为small,变量的定义在内部RAM中,编译时编译模式应改为Large,即变量的定义在XDATA中
[单片机]
uIP在51单片机上的<font color='red'>移植</font>
RTEMS在S3C2440上的移植-(2)
将一个复杂的工程分解为多个小的目标或模块是一个明智的选择。上文我们提到移植RTEMS到S3C2440上有三个技术难关,第一个便是交叉编译工具的安装。这里我们先攻这第一个难关,解决交叉编译工具的安装有两种方案可供实验:1.使用官方提供的工具源码一个一个的编译生成所需的工具链。2.下载现成的RPM安装包。编译官方的工具源码相对来说比较高大上,难度比使用RPM包复杂一些。安装的工具、顺序、版本等都有可能造成最终不能生成正确能用的交叉工具链。由于对该系统和开发环境还不是太熟悉的,因此此次我们尝试使用官方提供的RPM包,下载地址由QQ群RTEMS爱好者之家(253222959)的Kunkka兄提供。地址为:http://www.rt
[单片机]
RTEMS在S3<font color='red'>C</font>2440上的<font color='red'>移植</font>-(2)
STM8 控制器局域网(beCAN)
STM8控制器局域网(beCAN)简介 beCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持CAN协议2.0A和2.0B。它的设计目标是,以最小的CPU负荷来高效处理大量收到的报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。 对于安全紧要的应用,beCAN提供所有支持时间触发通信模式所需的硬件功能。 STM8 beCAN主要特点 支持CAN协议2.0A和2.0B主动模式 波特率最高可达1兆位/秒 支持时间触发通信功能 可选择时钟源(fMASTER或CANEXT) 发送 3个发送邮箱 发送报文的优先级特性可软件配置 记录发送SOF时刻的时间戳 接收 1个3级深度
[单片机]
STM8 <font color='red'>控制器</font>局域网(beCAN)
基于CAN控制器SJA1000的智能高速控制系统设计
SJA1000的特点及功能 SJA1000是一种应用于汽车和一般工业环境的独立CAN总线控制器,经过简单总线连接可完成CAN总线的物理层和数据链路层的所有功能。其硬件与软件设计和PCA82C200的基本CAN模式BasicCAN兼容。同时,新增加的增强CAN模式PeliCAN还可支持CAN2.0B协议。SJA1000的主要特性如下 :1、管脚及电气特性与独立CAN总线控制器PCA82C200兼容 ;2、软件与PCA82C200兼容(缺省为基本CAN模式);3、扩展接收缓冲器(64字节FIFO);4、支持CAN2.0B时支持11和29位标识符;5、位通讯速率为1Mbits/s;6、增强CAN模式(PeliCAN);7、采用24MHz时
[嵌入式]
一个复杂的控制器IC如何应对电机控制挑战
  由于在很大程度上受物联网 (IoT) 和汽车电气化的推动,机械系统加速向电子控制转变,设计人员正在将低功耗电机应用于从家用电器、门锁和遥控百叶窗到汽车油泵、座椅、窗户和门等应用中的基本任务。这些直流电机的额定功率从小到几分之一马力到大到多个马力不等,虽几乎无处不在,但往往却不为人知。   虽然因为电机在不断改进且电机控制技术变得更好、更容易使用,而促进其快速扩展,但设计者仍然面临着提高效率和降低成本的持续压力,同时也要实现更大的精度和更高的可靠性。   无刷直流 (BLDC) 电机和步进电机(另一种无刷直流电机)的变型可以帮助设计者满足这些日益苛刻的性能和成本目标,但必须仔细考虑电机控制器和电机驱动电路。控制器必须向电
[嵌入式]
一个复杂的<font color='red'>控制器</font>IC如何应对电机控制挑战
基于EZ-Color控制器的LED混色设计
  为了获得比较太的色彩范围,在LED 混色设计中由片面采用电流或电压的控制方法转向采用微控制器或现场可编程门阵列(FPGA)等智能化技术,例如各种颜色的选择及在运行过程中色彩精确度的实时调节。LED混色设计面临两太障碍,即各个LED参数的不一致性和LED的性能随温度的变化,这就要求在LED混色设计中必须考虑LED型号规格和温度的补偿。但是,这种补偿不但算法复杂,而且还要求设计工程师具有比较专业的色彩学理论知识。目前有一种快速简单的办法,就是采用基于赛普拉斯(Cypress) EZ-Color控制器的LED混色设计方案。   EZ-Color控制器是针对高亮度LED混色应用的可编程片上系统芯片。它主要由8位微处理器、可编程模拟和
[电源管理]
基于EZ-Color<font color='red'>控制器</font>的LED混色设计
MEMTECH推出汽车内存控制器 加速先进驾驶辅助和智能边缘技术应用
据外媒报道,内存接口解决方案供应商MEMTECH推出LPDDR5X内存控制器,可作为其适用于高级驾驶辅助系统(ADAS)、自动驾驶汽车和智能边缘应用的安全IP。 图片来源:MEMTECH
[汽车电子]
MEMTECH推出汽车内存<font color='red'>控制器</font> 加速先进驾驶辅助和智能边缘技术应用
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved