早先(arm7时代),有资深工程师就对我说过:ARM处理器不适合搞控制。但是由于pxa270,ep9315的成功,还是开始在控制系统中使用arm7,arm9了。
后来,在实用过程中不断发现了新的问题,这里顺带回答一位坛友的问题。
arm7,arm9:由于内核中断结构设计就不合理,对快速中断响应,或多个中断源的处理都不好,导致了著名的伪中断问题。在搞NXP的lpc系列和atmel的at92时总会导致长时间工作出现问题。
arm926对中断部分修改了,增加指令,中断处理有所改善,但效率依然不高。
针对控制的cortexM系列对中断做了重要修改,就是一直作为广告宣传的中断尾链,但早期的部分芯片很可怜
LM3系列的功耗和可靠性一直就不好,当然这是所谓第一版的cortexM内核,之后又有了nxp和stm32,但随后arm公司自己发布了设计问题,这个在早期的MDK中的补丁可以看到,这个问题依然是那种平时碰不到,长期工作才出现,而且很难知道什么时候出现的问题。
搞应用,不是专职的bug测试员,但这种小问题很多时候导致产品上市时间延期或产品可靠性降低。对于一些长期无人值守的设备,可靠性尤为重要,当然不去苛责某内核,不过对于设计者来说,cortex系列的可靠性还有待讨论,至少目前来说还没有完全成熟。
这里也说一下芯片bug问题,国外的叫法好像叫什么硅产品功能缺陷这类词,通俗的叫法我觉得还是叫芯片bug。香水城一直害怕这个词,有时候真有stm32的新闻发言人的作风,但是我觉得作为代理,不是设计芯片的,这种问题也不是自己责任。其实很多芯片都有设计问题,有些所谓的芯片手册勘误表实际就是芯片bug,zlg早期推nxp21xx时也搞过一次这种事情,总说设计人员问题,没有好好用芯片。最后证明就是nxp的内部稳压器出了问题。
现在开个帖只是希望总结一下价廉物美的arm处理器的半导体缺陷,为以后的应用做好准备。
先说几个
atmel的arm920内核系列的部分芯片会有串口伪中断,nxp的arm7,lpc21xx和lpx22xx也有串口伪中断
stm32的iic中断模式问题
cortexM3的某个加载指令在中断发生时会出现问题
cortexM0的断点问题
这些都是现象,细节只有arm或芯片生产公司才会知道。最为底层应用人员来说,用实践来做了小白鼠,为厂家做了测试工程师。
|