改善嵌入式系统实时效能的新途径

发布者:创新思维最新更新时间:2006-05-29 来源: CE china关键字:微控制器  兼容  实时 手机看文章 扫描二维码
随时随地手机看文章

  在这个日趋复杂的世界,对于嵌入式处理器的要求也愈来愈高。去年也许使用128k的程序及4个实时处理绪列便足以执行应用程序,但是今年的产品规格已将所需内存提升为两倍,中断处理提高为三倍。要处理的信息本质似乎非常稳定-其实远比您想象的还要多!去年的微控制器必须在两个通讯总线上处理25笔4位的讯息,而今年已经必须要在4个通讯总线上处理200笔4位的讯息。在面对这种不断升高的工作负荷时,自然倾向寻求更强大的处理器来执行工作。一般来说处理器效能的传统趋势是提升速度及数据总线,所以一个8位处理器可从8MHz提升到16MHz,一个16位的装置升级为一个32位的装置。但是,两种作法都必须付出应用上的成本。更快的装置可能消耗更多的电力,而且较不符合EMC的要求,更大的位宽度则会造成先前的软件投资优势尽失,并导致更多的冗余(例如使用32位的缓存器来处理4位的资料)。

  飞思卡尔半导体(前身为Motorola半导体产品部门)了解这个持续的趋势,因此在其新研发的S12X架构中采用创新的方法,可兼顾效能的提升与向后兼容性,并专注在效能提升的问题。这个新设计可在需要之处提升处理器的效能,也就是能实时处理信息。

  动态内存存取(DMA)

  改善系统实时效能的一个熟知的方法是,额外提供一个逻辑模块,在事件发生时产生响应,并允许处理器在较方便的时间来处理信息。这个DMA控制器通常将传送到模块的信息复制到内存(RAM),并允许已处理的信息自动从内存移到外部外围装置。所有这些工作皆独立于目前的CPU活动-详见图1。这种方式肯定有所助益,但其效益仅限于延迟必然发生的事件-CPU还是得在某一时间处理信息。S12X采用一个根本的方法,即提供「智能型DMA」控制器,不只移动资料,同时直接执行所有的处理工作。如图2所示,这个新的XGate可以从外围装罝撷取信息,连同其它资料(例如内存中的资料)一并处理,然后传送到另一个外围装置,其间完全不需CPU的介入。


  XGate

  XGate控制器已完全整合到新推出的MC9S12XDP512微控制器-畅销的飞思卡尔半导体S12家族最新成员。XGate是一个可程序的16位RISC核心,极适用于实时及DMA类型运作。与S12X装置的整合意谓从微控制器的任何一个外围装置传来的中断都可以由主CPU或XGate处理。XGate可以:(1)读写所有外围装置及内存:(2)读取闪存(flash)中的信息。

  可设定以执行复杂的工作
  为了让XGate达到最大效能,其主要程序通常储存位于内存中。这使得80MHz的时脉可应用于控制器,相对于S12X CPU只需使用40MHz。而且,S12X架构不同于传统的DMA,可保证XGate每一个CPU周期至少可存取内存一次。

  XGate编程

  如要让「智能型DMA」更为实用,必须使它容易编程。在理想的环境下,软件工程师应该能够导入以C语言编写的既有程序代码,并针对DMA重新组译。基于这个原因,XGate选择16位RISC机器作为程序撰写模式,并有适用于C语言程序的指令集。

  一般的系统完整性检查系透过CRC16计算,也就是对一组资料模块进行多项式计算,并透过产生最终检核码的值,来确认内存内容符合预期。这种算法可利用周期性的中断来呼叫。飞思卡尔S12 MCU的这种算法之典型建置如图3所示。在S12X上,此一算法可在XGate定期重新组译及执行,其好处是系统设计者可在CPU上执行更多处理,却不会降低系统检查的效益。XGate不仅释放CPU给其它活动,同时还使这个简单算法的执行时间,获得了4倍的惊人改善。这也让设计者可以在相同期间所执行的CRC演算次数高4倍,藉此改善系统的自我检查能力。值得注意的是,这项革命性的架构方法,仅透过简单的重新组译及重新导向周期性的中断,便可带来这些重大的优点。


  S12X的自动化应用

  大多数汽车应用对实时效能的要求都很高,通常超过模块的实际功能。例如汽车的仪表板必须可以显示车辆目前的状态,同时可接收并处理从传感器传来的实时讯息。由于XGate不仅可以接收这项信息,还可予以格式化并储存,因此CPU可用来响应驾驶人互动的时间便大量增加,更可减少显示器可能出现的噪声干扰。

  根据广泛使用的S12架构,这种双重方法的好处就非常明显了。

  大多数现代化汽车都是利用通讯网关来允许不同的通讯网路互传讯息。此外,网关还可以执行其它功能。XGate可以在大约4μs内执行一个典型的网关工作(检查CAN ID,储存于内存,然后复制到传送缓冲器(transmit buffer)中),而S12需9μs。这表示使用XGate,CPU可储存高于9us的中断。对一个具有5个CAN网络完全满载的非常忙碌连接网关而言,它可节省超过20%的CPU处理能力,却仅用到XGate的10%。

  对于一个更复杂的网关而言,要将个别位字段或讯号在多个CAN上进行路由传送,XGate的处理速度通常可高于每秒处理35000 则讯息。

  利用软件建立自订的解决方案

  标准的嵌入式软件设计活动就是建立硬件外围装置的软件版本。典型的实例包括运用I/O建立一个序列通讯端口,或额外的PWM信道。S12X架构藉由建立高度复杂的「虚拟外围装置」,让这种设计方法迈入新的层次。由于CPU的实时响应不受外在事件的影响,它可在配有一个基本CAN模块的装置上,直接建置完整的CAN节点,从标准的串行端口建立LIN模块,从单一的定时器提供40个 PWM信道,还可提供其它变化的方式。由于这些变化完全由软件控制,便可以混合及搭配各式组合。需要3个32个信箱的CAN模块及2个8个信箱的模块?没问题!和另外一种将所有模块都建置在硬件中的方法相比,这简直是莫大的妙用,后者恐怕必须用到所有架构内的可能配置, 成本也会大幅增加。?

   简化实时设计

  除了提供改善的实时效能,这种双重架构途径也可为实时软件设计者带来意想不到的好处。许多架构式分析及设计工具依赖设计者将资料流处理与实时或控制处理分开。这个方法可以简化高阶设计,但却隐藏了在建置时潜藏的效能问题。有了S12X,设计者可轻易确保实时处理不会互相冲突,因为主CPU可以完全将重心放在主要资料的处理。

关键字:微控制器  兼容  实时 引用地址:改善嵌入式系统实时效能的新途径

上一篇:基于IIS总线的嵌入式音频系统设计
下一篇:VxWorks应用技巧两例

推荐阅读最新更新时间:2024-05-13 18:12

avr+开发环境+linux,win7下avr单片机开发环境的搭建
操作系统:win7 professional x86 开发软件:avr studio 4.19 首先下载avr studio 4.19,因为貌似这是atmel官方最后支持jtag ice的开发环境。而且也就只有这个4的版本才支持win7,正好本人有个jtag,所以果断选择这个版本了。 相关软件下载地址: 貌似这个里面有很多常见的工具下载。 刚开始我是用的avr studio 4.19+WinAVR-20100110这个环境搭建的开发环境。 但是问题出现了,编译文件时出现了找不到编译器。出现如下的错误: make: Makefile: No such file or directory avr-objcopy: 'mai
[单片机]
avr+开发环境+linux,win7下avr<font color='red'>单片机</font>开发环境的搭建
基于C8051F040单片机的CAN总线通信
硬件部分   硬件部分电路结构如下:   CAN收发模块原本采用的是ATA6660高速CAN收发芯片,电路连接如下:      设计电路为:当单片机发送数据时,D18闪烁,并将数据传送给ATA6660芯片;当ATA6660芯片接受到总线上的数据时,D17闪烁,并将数据传送给单片机。   实际调试时,发现C8051F040单片机既没办法发送数据到总线上,也没办法从总线上接收到数据。   用示波器对电路检测发现,当单片机需要发送数据时,ATA6660芯片的TXD引脚上能检测到数据,且D18闪烁。示波器检测总线上的电压,没有变化。PC端显示总线上的数据为FE。当PC端给总线发送数据时,总线上能检测到电压的变化,而ATA6660芯片的R
[单片机]
51单片机C语言编程之内存优化
最常见的是以下两种 ① 超过变量128后必须使用compact模式编译 实际的情况是只要内存占用量不超过 256.0 就可以用 small 模式编译 ② 128以上的某些地址为特殊寄存器使用,不能给程序用 与 PC 机不同,51 单片机不使用线性编址,特殊寄存器与 RAM 使用重复的重复的地址。但访问时采用不同的指令,所以并不会占用 RAM 空间。 由于内存比较小,一般要进行内存优化,尽量提高内存的使用效率。 以 Keil C 编译器为例,small 模式下未指存储类型的变量默认为data型,即直接寻址,只能访问低 128 个字节,但这 128 个字节也不是全为我们的程序所用,寄存器 R0-R7必须映
[单片机]
单片机C51编程入门最好的例子(跑马灯)
#include reg52.h #define uchar unsigned char #define uint unsigned int //延时子程序 void mDelay(uchar Delay) { uchar i; for(;Delay 0;Delay--) { for(i=0;i 123;i++); } } void main() { uchar i,d; P0 = 0; //所以LED点亮。 mDelay(250);//延时250mS(12M晶振) mDelay(250);//延时250mS(12M晶振) while(1) { d = 0x01;
[单片机]
STM8L151C8单片机学习例程(5)——TIMER1定时0.5s
STM8L_5_TIMER: 1.User:工程及main文件 2.Hardware:TIMER,CLK,LED,Delay 3.STM8L15x_StdPeriph_Driver:STM8自带库文件 4.Debug:hex文件存放于EXE文件夹 5.Function: TIMER1定时0.5s和TIMER4定时约0.5s等 /** ****************************************************************************** * @file main.c * @author Alex——小白 * @version V1.0 *
[单片机]
STM8L151C8<font color='red'>单片机</font>学习例程(5)——TIMER1定时0.5s
6502单片机编程代码1
;;============================================================================== ;; Power On Reset Area ;;============================================================================== Reset: LDX #FFH TXS LDA #%01000000 STA R_IntFlags %WakeUpBran
[单片机]
如何学习单片机
经常有单片机爱好者问我们,如何学习单片机?学习单片机的步骤是什么? 我们初略总结了一下,单片机学习的过程基本上可分四个阶段: 第一阶段    是先浏览教科书里的硬件部分,大至了解单片机的硬件结构。如 ROM、RAM、地址、I/O口等,以及看一些厂家的MCU资料(Data Sheet),来加强MCU所提供各项资源的印象。 第二阶段    就是了解二进位数字、十六进位数和软件方面的内容。尽管有很多 高级语言可用于单片机的编程,但我觉得初学还是以汇编语言为好,更有利于和硬件结合,掌握硬件结构。知道汇编语言、机器语言、 指令、 程序等概念后,就从MOV指令开始,学习汇编语言和编程,在此如51的MCU汇编语言系统有 111条指令,简单又好理解
[单片机]
MCU跑AI,谁更牛?
怎么快速判断一款芯片的AI处理性能?那就不得不提到MLperf。MLPerf由图灵奖得主大卫•帕特森(David Patterson)联合谷歌、斯坦福、哈佛大学顶尖学术机构发起成立,是权威性最高、影响力最广的国际AI性能基准测试。该机构也时常放榜,让我们快速了解当今芯片发展情况。 自从2021年开始,MLperf也开始放出TinyML测试基准,简单解释,也就是测试边缘AI系统。更通俗说,就是测试MCU之类嵌入式设备跑分。 这几日,MLCommons公布MLperf Tiny v1.2测试结果。这一次,哪些MCU芯片夺得榜一? M85内核MCU夺冠 MLCommons在榜单表示,MLPerf Tiny基准测试套件主
[单片机]
<font color='red'>MCU</font>跑AI,谁更牛?
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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