基于16位控制器的汽车车身电子控制系统解决方案(二)
扫描二维码
随时随地手机看文章
嵌入式仿真器
专门设计用于复杂的汽车电子应用的MC33993、MC33887和MC33888器件提供了具有先进性能和诊断功能的解决方案。
复杂的多引脚MCU常会引起开发问题。MC9S12DP256提供了一个单线的后台调试接口,可以方便地在汽车环境中实现广泛的调试工作,并且不会遇到使用传统电路嵌入式仿真器时常见的困难。这一接口还能用来在生产线末端进行主要闪存的编程,甚至可以用来在车内执行再编程操作。
现代的汽车微控制器常采用闪存来存储主操作程序。编程闪存的最佳方法是在最终组装后把主程序编程进完整的电子控制模块中,与在模块组装前通过第三方把主程序编程进MCU相比,这种方法能有效地避免风险和延时。通过简单的串行接口将主程序编程进MCU是在模块组装后完成的,一般是在最终测试过程中执行的。一些制造商采用便宜的独立编程器完成这一操作,而另外一些厂商则将编程操作集成在生产线末端的测试设备中。
摩托罗拉的相关器件则提供一个单线的后台调试接口用来实现闪存编程、检验和一般的调试操作。在设备正常工作时,串行通信引脚在复位时是被拉高的,因此后台系统不被激活。当有编程器或调试系统连接到这个引脚时,该引脚在复位时会被拉到低电平,从而迫使MCU进入激活的后台模式,而不是去启动应用程序。为了方便调试,可以在设备正常工作时将一个主机系统连接到目标MCU系统,从而在不干扰设备运行的条件下实现对闪存或寄存器内容的监测。所连接的调试系统也能取代MCU的控制来读写CPU寄存器、设置硬件断点或跟踪单条指令。
传统的电路嵌入式仿真器与目标系统之间通常需要30到40个连接,而上述后台调试接口只需要2到4个连接。单根BKGD通信信号和公共地是必须的。增加复位信号能使主机更容易地强迫和控制系统复位,在某些情况下增加VDD能允许调试夹具从目标系统中“窃取”电源。这种简单的接口为汽车电子设计师提供了对安装在运动汽车电子控制模块中的MCU的调试访问能力。当汽车在正常路况下行进时许多问题只能经过调试才能发现。
内存编程
与闪存编程相关的最重要因素是速度与方便性。编程速度取决于闪存单元的编程时间以及从编程器到目标MCU的数据传输速度,当然还有一些其它因素,如编程前擦除阵列的时间,用于验证编程操作成功与否的时间。MC9S12DP256编程任意16位字的时间是45ms,但一个突发编程操作允许对同一排32字闪存中的任意附加字以20ms的速度编程。理论上采用单线后台调试接口可以在27ms内传送一个字的信息,这要比闪存的实际编程时间稍微慢一些。实际编程还需要额外的任务开销,如验证开销。独立编程器工具SCBDMPGMR12能在稍少于10s的时间内完成256KB闪存的擦除、编程和验证操作。
验证是产生开销的重要因素之一。重传所有的数据以实现字对字的验证将使编程时间加倍。一个快速的办法是在数据编程进闪存时进行CRC计算,然后在整个闪存编程完成后重读闪存内容来验证CRC值。这一操作完全能以总线速度进行,而且无需重传数据。
将数据到目标的传送分离出来,使它在数据编程进闪存前完成也会使编程时间加倍。较好的方法是数据传送与编程操作并行展开。一般来说,要先把编程算法发送到目标MCU,从而便于管理收到的数据并把数据送入RAM缓冲器,然后控制擦除与编程操作。该编程算法利用二个数据缓冲器来接收将被编程进闪存的数据。当第一个缓冲器装满数据后,编程算法就开始把这些数据编程进闪存,同时新的数据被装载到第二个缓冲器。后台接口可以用来接收数据并把它们写入RAM,这一操作不会干扰目标CPU的工作,因为CPU是从另外一个缓冲器读取数据并编程进闪存的。
MC9S12DP256中的闪存被分成4个独立的64KB块,因此可以独立地对这4个块执行擦除与编程操作。在基于后台调试的闪存编程情况下,由于数据传送速度要稍慢于闪存的平均字编程速度,因此试图交织进行独立阵列的编程操作是不切实际的,不过对所有4个块并行执行批量擦除操作则是可行的。
后台访问给首次闪存编程提供了极其便利的途径,但一些用户仍希望采用其它系统总线如CAN总线、J1850总线或串行接口总线来完成所有的现场再编程操作。在主应用程序中包含合适的启动装载(boot loader)程序能方便地做到这一点。为了对来自于成品汽车中某根总线的某些特殊代码作出响应,启动装载程序应能擦除闪存并接受新的编程数据。