3 协处理器设计方法
3.1 XGATE简介
XGATE时钟速度是主处理器总线时钟速度的2倍,故最高指令时钟可到100 MHz,处理速度非常快。XGATE可访问2 KB的片上外设寄存器,最大32 KB的片内RAM以及30 KB的片上闪存空间,访问范围完全被限制在主处理器内部访问空间之内,但是主处理器的优先级总是高于XGATE。
XGATE是由中断来驱动的,故没有中断时,XGATE不执行任何指令,也没有任何功耗,故XGATE中的中断程序可称为线程。
3.2 XGATE创建
在CodeWarrior V5.1的版本中新建带XGATE的工程,选择处理器的型号后,在“XGATE Setup”中选择“Multi Core(HCS 12X and XGATE) ”,以便生成XGATE代码。在“XGATE Options”选项卡中选择XGATE代码存放的位置。若XGATE放在Flash中运行,XGATE读取程序的速度与主处理器的速度是一样的,很可能出现2个CPU竞争的现象,使得2个CPU读取代码时出错,并且速度也会变慢。而放在RAM中运行,其时钟速度是主CPU的两倍,且主CPU访问片内RAM只占用总线带宽的一半,在主CPU访问RAM的每个周期中,总可以让出一个周期来供XGATE访问RAM,不存在与主CPU产生“读”的冲突,故应将XGATE放在RAM中运行。
3.3 XGATE的配置与使用
1)初始化S 12X CPU和定时器ECTO 。
2)将定时器中断交给XGATE处理:在“xgate.cxgate”文件中找到ECTO的中断向量号0x77,并在把此向量号乘以2后写入“ROUTE_ INTERRUPT(0xEE, 0x81) ;”中,将其中断配置寄存器的RQST置位,同时可以配置中断优先级。
3)在“xgate.cxgate”文件添加引用“#include
MC9S12XEG128.h>",以便XGATE能够访问主CPU的寄存器,接着编写中断函数Timer0()此函数可由XGATE直接调用。
4)在向量表中找到ECTO中断向量号所在的行,此行改为“{(XGATE_ Function) TimerO, 0x77}”。
5)启动XGATE。将XGATE控制寄存器XGMCTL中的XGE置1,以启动XGATE.
自此,XGATE初始化已完成,可以将代码下载到微处理器中调试。调试界面与以往稍稍不同,因采用双核CPU,故调试窗口将出现两套界面。左边是主处理器的调试界面,右边是XGATE的调试界面,调试方式与以往相同。
4 结束语
该设计在厦门金旅生产的XML6115JHEV58C混合动力大巴车上得到应用,运行结果证明:采用MC9S 12XE系列双核微控制器,并启用协处理器XGATE,不但处理能力得到加强,也提高了电池管理系统的实时性和可靠性,避免积分中断与CAN通信中断的冲突,使得SOC的计算更加准确,CAN通信的数据更加完整。