首页 > 范文大全 > 正文

基于TC1767的Trace平台的设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于TC1767的Trace平台的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要

跟踪或者跟踪记录指的是对时间信号的采集和存储。这些捕获的跟踪数据可以用来分析任务/中断程序的最短、最长及平均执行时间,任务/中断信号激活速率的抖动时间以及CPU负载利用率等[1],一个实时的跟踪系统可以实时的查看某个系统中复杂的实时交互作用,从而更快地发现问题并加快软件开发速度。本文正是基于此思想提出一种基于软件的直接在操作系统中的跟踪解决方案,设计并实现了一个基于tc1767的实时跟踪平台,并通过实验验证了可行性,同时也介绍了实验所需要的软件工具(RTA-trace, RTA-OSEK,TASKING,DAVE)的使用方法。

【关键词】实时跟踪/Trace平台 TC1767 RTA-OSEK RTA-Trace DAVE

在车载ECU(Electronic Control Unit)控制器中,要求各功能的执行和响应有着苛刻的时间要求,而且在相应的软件开发初期需要实时的查看功能模块运行状态。本文设计的基于TC1767的Trace平台,是一种基于软件的直接在操作系统中的跟踪解决方案,并且为本实验室的另外一个课题混合动力汽车中永磁同步电机(PMSM)控制器的设计提供支持。PMSM控制器的设计要求需要实时的分析控制器的效率和各动作运行的时间。另外本文搭建的跟踪平台是基于OSEK标准的操作系统,同时它也支持追踪(Trace)功能。一个显著的优点是该基于软件的跟踪平台具有灵活性,因为不需要采用额外的仿真器,也不依赖于ECU硬件,可移植性高。

该跟踪平台的设计的主要分为以下四个方面的工作:

(1)底层驱动的配置,通过英飞凌公司的DAVE(Digital Application Virtual Engineer)来实现

(2)OSEK操作系统的配置,通过 ETAS公司的RTA-OSEK来实现。

(3)对前2步中配置生成的代码在编译器TASKING中进行编译,并下载到TC1767开发板上。

(4)利用RTA-TRACE来实现实时的跟踪功能,并直观的在PC主机上显示出来。

1 总体架构的设计

ECU对于永磁同步电机的控制是通过IO口输出PWM波形来控制的,本文为了实验方便,直接采用开发板上的LED作为输出来观测输出现象,设定4个OS的任务,它们的闪烁间隔分为设定为1ms,10ms,100ms,1000ms,如图1所示。

之后通过串口通信RS232实时将4个任务的执行时间传送到主机,并在RTA-Trace上进行观测。

1.1 硬件架构的设计

设计采用英飞凌的TriCore系列单片机TC1767,该MCU为汽车用32位MCU,可作为汽车核心CPU,且具有RS232和JTAG接口,并可通过在线编译器ISP(In System Programmer)将下载用户程序 ,而跟踪数据是通过RS232串行口实时的传送回主机,并利用RTA-Trace对各个任务的执行/响应时间进行图形化分析,此外还可以对CPU负载率的进行优化操作,系统的硬件构架如图2所示。

1.2 软件架构的设计

软件部分的设计包括车载操作系统任务的建立,底层驱动的配置和对前两部分生成代码的整合这三方面。首先对于底层驱动配置采用英飞凌提供的针对TriCore系列的配置工具DAVE,它并提供了一个针对各硬件参数易调的图形用户界面,便于用户对需要使用的硬件模块进行直观的配置。通过在DAVE上对需要使用模块的参数配置,即可以自动生成相应的C语言程序代码。其次操作系统选用ETAS公司的RTA-OSEK(Real Time Architect- OSEK)来进行OSEK系统的配置。RTA-OSEK具有一个适用于汽车ECU设计所有领域的生产型实时操作系统,它同时采用了 AUTOSAR-OS SC1和OSEK/VDX OS V2.2.3标准,并完全符合MISRA C的要求,RTA-OSEK还结合了可用于对操作系统进行配置和分析Planner和Builder工具。这里主要利用RTA-OSEK进行2任务的建立与调度以及中断部分的配置,并通过Builder自动生成代码。之后编译器TASKING是Altium公司的一款针对嵌入式软件的编译器,它广泛适用于DSPs和8-,16-和32位MCU的嵌入式开发。利用编译工具TASKING对上述自动生成的代码进行整合,并修改或添加相关代码,以实现所需的功能。最后跟踪部分同样采用ETAS公司的配套工具RTA-Trace,其可直观的显示整个系统的运行情况,如当前任务的运行及中断运行。整个跟踪系统的软件架构如图3所示。

2 底层驱动DAVE的配置

DAVE的配置主要包括三个部分,即Port, ASC,和STM这三个模块。

Port模块的配置包括与LED相连相应Port口的初始化与激活配置,另外该工具还定义了IO口相关操作的宏定义,如引脚置位(Set),复位(Reset)和翻转(Toggle)指令,这些指令DAVE都将自动生成相应的函数,以供调用。

由于OS任务的激活需要一个统一的时钟信号来触发,所以在DAVE中还需要对STM模块(System Timer Module)进行一个中断的配置。这个时钟信号需满足1ms任务的频率要求,事实上STM的时钟频率是通过公式fSTM=fSYS/RMC得出的,其中RMC是STM_CLC寄存器中的一个位域,其占3个位段。故最小的STM时钟频率为9,52MHz(fSTM=fSYS/7,当RMC = 111B)。

最后是ASC(Asynchronous/Synchronous Serial Interface)模块的配置,以实现将跟踪信息数据实时的传递给主机。主要包括波特率的设置,默认的波特率为19.200byte/s。此外完成配置之后,点击生成代码按钮DAVE将自动的生成相应的功能函数,如收发函数ASC0_vSendData()和ASC0_uwGetData()等。

3 RTA-OSEK操作系统的设计

RTA-OSEK的主要包括Planner, Builder和RTA-Trace三个部分。

Planner包括操作系统的静态配置,这些配置并会以OIL(OSEK Implementation Language)数据形式保存起来;Builder则专门为配置好的OSEK系统提供生成代码;而RTA-Trace部分主要提供针对建立的OSEK操作系统是否使能RTA-Trace功能。

首先应该为定时器配置一个类别2(因为Category 2类别的中断,可以调用系统的Api函数)的中断服务程序ISR(Interrupt Service Routine),这个中断服务程序不同于DAVE中已经配置了的中断服务程序,它主要是为OSEK操作系统服务的,并根据规定的进程激活各个任务对应的Alarm,再由Alarm触发各个任务,完成操作。故而需要建立4个TASKS和它们相对应的Alarms,当Alarm的值到达1,10,100,1000的时候,分别激活对应的任务,激活的时间间隔为1ms,10ms,100ms,1000ms。完成上述配置之后,点击Builder中的生成代码选项,即可生成相关的任务代码程序和对应的rta后缀文件。

4 TASKING

首先需要在TASKING中新建一个TC1767的空工程,再将DAVE和RTA-OSEK生成的代码导入到工程中,之后还需要对整个工程做如下几个方面的修改。

(1)鉴于需要利用STM的比较寄存器CMP0循环的产生一个1ms的中断,那么由=9091可知,应该对CMP0赋值9091,STM中的中断服务程序如图4所示。

(2)工程的主函数中,进行使能中断,设置STM模块中的CMP0的初始值和启动操作系统等操作,具体的代码如图5所示。

5 针对Trace中的配置,

为了实现跟踪的功能,还需要在主函数里面使能跟踪功能,并不断的传输跟踪数据到主机里去,如图6所示。

6 实验结果与展望

首先用RTA-Trace加载RTA-OSEK生成的*.rta文件,选择RS232通信方式,并设置与之前配置相同的波特率即可。实验结果在RTA-Trace上显示如图7所示,图中显示了各个TASK所需要的实际运行时间和它们各自的响应时间(该图为已运行一定时间后的截图),完成了时间测量的要求。

本文提出的这种基于软件的直接在操作系统中的跟踪解决方案,具有良好的结果,不仅可以直观的通过RTA-Trace对建立的任务程序在时间上进行相对精确的分析,并且对当前CPU的负载进行观测,从而可以再次调配任务的优先级,以寻求最大效率,这些对于嵌入式初期的开发具有很大的意义。但本文主要是在TC1767开发板上进行实验测试,尚未应用到具体的电机控制测验中,所以还需要继续研究。

参考文献

[1]Johan Kraft, Anders Wall, Holger Kienle. Trace Recording for Embedded Systems[C].

Proceedings of the First International Conference on Runtime Verification (RV 2010). 2010. (02):25-32.

[2]英飞凌.英飞凌推出全新32位微控制器系列[J].电子与电脑,2006,(1):45.

[3]ETAS. RTA-OSEK User Guide. http://www.secs.oakland.edu/~ganesan/old/courses/CSE666%20F06/RTA-OSEK%20User%20Guide.pdf. 2013.

[4] INFINEON. TC1767 32-Bit Single Chip Microcontroller. http:///dgdl/TC1767_UM_V1.1.pdf. 2009.

[5] OSEK. System Generation OIL: OSEK Implementation Language Version 2.5.http:///files/pdf/specs/oil25.pdf. 2004.

作者单位

同济大学中德学院 上海市 201804