热度 19
2013-7-2 14:34
2093 次阅读|
4 个评论
国家兴亡匹夫有责,从神九用到CAN总线讲起(16)一块短板与二块短板 我们面临的困难很多,在想到要改进CAN时就有这样的困难:大多数CAN已嵌入到MCU中,而我们能做出满足抗干扰要求的MCU吗?这就是我要说的一块短板与二块短板的问题。 国外公司在汽车电子市场中占的份额有各种统计方法,现在仅就MCU的统计摘录如下Renesas still dominates MCU market 市场与技术、营销有关。从上表看到Freescale在增长,Atmel和Infereon的增长很快,我仅就技术发表点意见。 我听到过有人讲车厂喜欢用Freescale的芯片。后来我也留意了一下。在邵贝贝、宫辉等著的“嵌入式系统中的双核技术”(北京航空航天大学出版社2008)第32页提到了片内容错与纠错技术: 当系统遇到强干扰时,CPU在读取指令或数据时可能出现错误,如果指令或数据仅仅是某一位出现错误,ECC模块会自动纠正这一位的错误,使系统照常运行,如果出现二位或二位以上的错误,则ECC会以中断方式通知CPU,出现了读程序错或读数据错。 该节后面的如何实现我没有查实,但是我查了MC9S12P128.pdf,p19: Up to 128 Kbyte of program flash memory 32 data bits plus 7 syndrome ECC (error correction code) bits allow single bit error correction and double fault detection 4 Kbyte data flash space 16 data bits plus 6 syndrome ECC (error correction code) bits allow single bit error correction and double fault detection 32位程序用7位保护,16位数据用6位保护,为了纠错可能采用了类似BCH码的技术。我觉得要对抗电磁干扰,工艺当然重要,而架构更为重要,有数据与程序的检错是非常重要的。从可信赖性的分析角度,也就是故障的覆盖率问题,缺了这一环就会放过很多错。我在写“MCU需要改进”一文(杨福宇,“MCU需要改进“,《单片机与嵌入式系统应用》,2008, No.4,p.5-6,36)中提到了51单片机指令有一位变化的后果,(发现此问题是1990年代比较早,写文章时我还不知道Freescale已有这种技术。) Bit 第一字节 变化后指令 意义 - 1000 0101 85 50 37 MOV 50,37 0 1000 0100 84 50 37 DIV AB; JNC 37 1 1000 0111 87 50 37 MOV 50,@R1; ADDC A,@R1 2 1000 0001 81 50 37 AJMP 0450; … 3 1000 1101 8D 50 37 MOV 50,R5; ADDC A,@R1 4 1001 0101 95 50 37 SUBB A, 50;ADDC A,@R1 5 1010 0101 A5 50 37 ?; JNC 37 6 1100 0101 C5 50 37 XCH A,50; ADDC A,@R1 7 0000 0101 05 50 37 INC 50; ADDC A,@R1 从表可见,一bit的变化完全改变了原来MOV指令的意义,程序流或数据产生不可予测的变化。例如表中(bit 0, 2 或5发生变化)变为跳转指令,可能不转入死循环,不引起watchdog动作,也有可能跳到非正常指令处,直至死循环。表中变为非跳转的其他指令则有可能改变累加器(bit 0, 1, 3, 4,6或7发生变化)、数据RAM(bit 1,3, 6或7发生变化)或状态寄存器(bit 0, 1, 3, 4,6或7发生变化)的变化。如果错误发生在指令的第二或第三字节,数据的源或目的地址就错了。这些都会造成数据错,因此,即使watchdog没动作,不能保证程序运行正常。对8051其它指令作分析可得到类似的结果。 对其它品种的CPU也可以作类似的分析,即使新的ARM机也一样,因为CPU的指令设计总要使同一长度内尽量多地做不同的工作。采用Freescale的纠错方法固然先进,但是代价大。如果只检错会简单得多,发现错产生中断,单次错则指令重执,多次错还可设计其它的应对方法,总之不让错扩散。数据检错已经是通信和数据存储的成熟的技术。我国已经有较多的CPU设计单位,也已经生产了一些CPU,只要加这一块就可以跳一跳,当你看到大多数国外厂商还没有采用Freescale已用的这一技术时,这跳一跳的意义是不言自明了,所以第二块短板也是可以较快地补长的。当别人还没有补CAN的短板时,你再把CAN的改进提上日程,岂不更好?