当前位置: 首页 > 专利查询>浙江大学专利>正文

提高AUTOSAR OS MCAL驱动代码可移植性的方法技术

技术编号:7786329 阅读:437 留言:1更新日期:2012-09-21 07:22
本发明专利技术公开了提高AUTOSAROSMCAL驱动代码可移植性的方法,将AUTOSAROSMCAL驱动代码结构分成Module.c和Module_Hw.c两层;Module.c实现符合AUTOSAR标准规定的Module_Function函数;Module_Hw.c实现被Module.c调用的特定接口函数;将驱动代码应用于ECU硬件中,判断ECU硬件是否支持该驱动代码所实现的功能,如果支持该功能,则设置寄存器的值或读取寄存器的值,并对寄存器的上述操作进行封装,具有对驱动代码与硬件相关的部分进行抽象,使代码清晰度更高,增强了驱动代码的可移植性,减少移植工作量,缩短开发周期等优势。?

【技术实现步骤摘要】

本专利技术涉及嵌入式实时操作系统对多平台的适应性,是一种提高AUTOSAR OSMCAL驱动代码的可移植性的技术方法。
技术介绍
AUTOSAR(AUTomotive Open System Architecture)是一个标准化的开放式汽车软件架构。AUTOSAR OS是符合AUTOSAR标准的嵌入式实时操作系统,是一个静态配置的多任务单处理器的RT0S。本专利技术所参照的AUTOSAR标准为3. O. I版本,并且实现在由浙江大学自主研发的符合AUTOSAR标准的OS——SmartOSEK OS上。移植驱动代码是移植AUTOSAR所必须的工作,其工作量很大,且在不同硬件平台 上很多工作都是重复的。MCAL驱动代码是与电控单元是电子控制单元(ECU)硬件相关的,AUTOSAR中规定的标准函数接口功能上是确定的,传统的MCAL驱动通常将所有代码放在一个文件中实现,代码可重用性极弱,不同ECU硬件下驱动模块的移植过程复杂,工作量大。但是这些函数的功能未必是完全E⑶相关的,整个函数功能完成过程中可能只有部分代码需要访问寄存器,在现在的MCAL驱动代码中,还存在如下问题由于驱动代码通常作为一个整体实现,代码的可重用性弱,可移植性差,不同E⑶硬件下驱动模块的移植过程复杂,工作量大,模块开发周期长。
技术实现思路
针对上述技术问题,本专利技术借鉴AUTOSAR的分层架构可以对驱动代码进一步抽象,提出提高AUTOSAR OS MCAL驱动代码的可移植性的技术方法,将硬件相关的代码用函数来实现,其他软件控制的流程对不同的ECU来说是可以重用的,将驱动代码进一步抽象,增强其硬件多平台的适应性,大大缩短模块的开发周期。为了解决上述技术问题,本专利技术的技术方案如下提高AUTOSAR OS MCAL驱动代码可移植性的方法,包括如下步骤I)将AUTOSAR OS MCAL驱动代码结构分成Module, c和Module_Hw. c两层;所述Module, c实现符合AUTOSAR标准规定的Module_Function函数,其内部进行符合AUTOSAR标准规定的错误检查以及一些全局变量的维护,并负责调用Modulejlw. c代码层;所述Module_Hw. c实现被Module, c调用的特定接口函数,该层主要负责针对具体硬件平台的MCAL模块实现,对状态寄存器进行设置或读取,以及对具体硬件寄存器进行设置或读取;2)将所述驱动代码应用于ECU硬件中,判断所述ECU硬件是否支持该驱动代码所实现的功能,如果支持该功能,则设置寄存器的值或读取寄存器的值,并对寄存器的上述操作进行封装。进一步的,用与寄存器关联的宏来定义寄存器的地址值。进一步的,寄存器的地址值可以按照E⑶硬件中定义的地址结构依次定义。进一步的,用与功能相关的宏定义来指定寄存器需要设置的工作模式的数值,其位数可以设置为寄存器位数相同,然后通过掩码来获取所需部分,也可以设置为寄存器中控制模式的位数相等。进一步的,对寄存器的操作可以封装成宏定义。本专利技术的有益的效果为I.对驱动代码与硬件相关的部分进行抽象,使代码清晰度更高2.通过对驱动代码抽象,可根据E⑶硬件是否支持该功能来决定是否实现。3.增强了驱动代码的可移植性,减少移植工作量,缩短开发周期。 4.通过对寄存器操作进行封装,保持了可扩展性,方便错误检查。附图说明图I是应用本专利技术的驱动代码文件结构;图2是以I⑶模块为例,弓丨入本专利技术前AUTOSAR标准的文件结构图;图3是以I⑶模块为例,引入本专利技术后的文件结构图;图4是以I⑶模块为例,Icu_Init函数的流程图。具体实施例方式下面将结合附图和具体实施例对本专利技术做进一步的说明。传统AUTOSAR OS MCAL驱动通常将所有代码都放在一个文件中实现,符合AUTOSAR标准规定的接口函数命名为Module_Function。将原来的AUTOSAR OS MCAL驱动代码结构分成Module, c和Module_Hw. c两层。Module, c主要负责实现与AUTOSAR标准接口相关,Module_Hw. c主要负责实现与具体硬件平台相关。(I)、Module. c文件实现符合AUTOSAR标准规定的Module_Function函数,其内部进行标准规定的错误检查以及一些全局变量的维护,并负责调用Modulejlw. c代码层。(2)、Module_Hw. c文件实现被Module, c调用的特定接口函数,该层主要负责针对具体硬件平台的MCAL模块实现,对状态寄存器进行设置或读取,以及对具体硬件寄存器进行设置或读取。在Module, c和Module_Hw. c的实现中,有一些过程控制是可重用的,本专利技术规定过程中特定的可重用部分,进一步减小MCAL驱动代码移植的工作量,缩短开发周期。对驱动代码抽象以后,驱动程序只需要根据ECU硬件是否支持该功能来决定是否实现即可,如果ECU硬件支持,则只需要修改与硬件相关的部分代码,主要操作有设置寄存器的值或读取寄存器的值。寄存器封装寄存器操作因为都是与硬件寄存器相关,因此可以直接对硬件地址进行操作,但是为了尽可能的保持可扩展性、方便查错修改,因此对寄存器的操作进行封装。寄存器的地址用与寄存器关联的宏来定义,这样对寄存器操作时候用宏定义可以方便看到具体是对什么寄存器进行的操作。寄存器的地址可以按照E⑶硬件中定义的地址结构依次定义,便于检查定义是否出错。寄存器需要设置的工作模式,用与功能相关的宏定义来指定其数值,其位数可以设置为寄存器位数相同,然后通过掩码来获取所需部分,也可以设置为寄存器中控制模式的位数相等。对寄存器的操作也可以封装成宏定义,比如读取N位数值,写N位数值到某个寄存器等。举例说明32位读写宏定义如下所示。#define REG_WRITE32(address, value) (*(uint32*)(address) = (value))#define REG_READ32(address)(*(volatile uint32*) (address))下面以TC1767平台上的ICU为例,结合附图和实施例对本专利技术作进一步说明本专利技术在浙大自主研发的符合AUTOSAR标准的RTOS——SmartOSEK OS上得到了实现。SmartOSEK OS和SmartSAR软件平台的其他模块紧密相连,弓丨入本专利技术之前,AUTOSAR标准中ICU模块的文件结构如图2所示,引入本专利技术之后,ICU模块的文件结构如图3所示。文件主要包括两部分代码文件和头文件。文件结构如下图I所示。图所示的文件中,Module可以具体替换为各驱动模块,比如Adc、Pwm等。其中Module_PBCfg. c、Module_Irq. c和Dem. h是可能包含的,比如Module_Irq. c是有在对应的驱动程序需要中断来处理时才会包含;Dem. h只有驱动代码中包含生产错误是才需要。Module_Hw. c和Module_Hw. h文件是AUTOSAR规定之外的文件,是为了代码的抽象而提出来的,Module_Hw. c中包含的是寄存器相关的操作。其中通过Dem. h中引入了类型Dem_EventIdType,用来表示生产错误的数字标识;Std_Types. h 中引入了本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.提高AUTOSAROS MCAL驱动代码可移植性的方法,其特征在于,包括如下步骤 1)将AUTOSAROS MCAL驱动代码结构分成Module, c和Module_Hw. c两层;所述Module, c实现符合AUTOSAR标准规定的Module_Function函数,其内部进行符合AUTOSAR标准规定的错误检查以及一些全局变量的维护,并负责调用Modulejlw. c代码层;所述Module_Hw. c实现被Module, c调用的特定接口函数,该层主要负责针对具体硬件平台的MCAL模块实现,对状态寄存器进行设置或读取,以及对具体硬件寄存器进行设置或读取; 2)将所述驱动代码应用于ECU硬件中,判断所述ECU硬件是否支持该驱动代码所实现的功能,如果支持该功能,则设置寄存器的值或...

【专利技术属性】
技术研发人员:李红杨国青刘子阳金曦张成硕姜旭锋吴朝晖
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有1条评论
  • 来自[美国加利福尼亚州圣克拉拉县山景市谷歌公司] 2014年12月04日 18:48
    代码就是程序员用开发工具所支持的语言写出来的源文件是一组由字符符号或信号码元以离散形式表示信息的明确的规则体系代码设计的原则包括惟一确定性标准化和通用性可扩充性与稳定性便于识别与记忆力求短小与格式统一以及容易修改等源代码是代码的分支某种意义上来说源代码相当于代码现代程序语言中源代码可以书籍或磁带形式出现但最为常用格式是文本文件这种典型格式的目的是为了编译出计算机程序计算机源代码最终目的是将人类可读文本翻译成为计算机可执行的二进制指令这种过程叫编译通过编译器完成
    0
1