调试复杂电子系统从来都不是一项简单的工作,但至少是可以实现的。您要找到问题所在。采用您最相信的“示波器”,通过模拟电路到数字转换,您可以追溯到问题的源头。然后,编写测试小程序,检查驱动和外设,增加一些逻辑探针,再回到外设控制器和CPU总线上,最终解决问题。当然,这需要利用别人的一些代码。
而芯片系统(SoC)集成从根本上改变了这一切。今天,微处理器、总线、外设控制器以及大部分存储器和模拟电路都被包封在一个封装中。它可以是ASSP、高级微控制器、FPGA,或者您自己设计的ASIC。不论SoC是什么,事实上是,除非芯片设计团队愿意帮助您,否则,您不可能深入了解芯片内部。
在嵌入式CPU中调试硬件,为您提供断点和准实时跟踪等传统调试功能,从而帮助您完成调试工作。但是,对于他们自己,调试内核也只是给出了您系统的CPU外观视图。如果不能针对系统总体状态来更广泛的定义某一事件,那么,当事件发生后,您可能需要编写诊断短代码,使系统暂时停止工作,将相应的数据写回CPU。这一过程最好的情况是仅仅耗费了您的时间,而最差的情况是,耗费了时间却不一定能解决问题,效率非常低。
硅片知识产权(IP)供应商提供越来越精细的SoC仪表调试手段,从而解决了这一难题。但是,当今的产品是个性化的,而不是标准化的。系统设计人员需要在芯片设计早期阶段独立作出选择,而另一公司的其他团队则根据产品能否及时面市、管芯面积等来确定自己的目标,并不关心能否方便的进行系统调试。而芯片设计人员、软件开发人员和系统设计人员等参与者还是有一个共同点——互相协作,在系统级找到问题所在。
从一开始就做好规划
实际上早已决定了您是否能够成功的找到系统中的问题——两年前,在您目前正在使用的SoC的开发阶段。Brad Quinton是泰克公司嵌入式验证的首席规划师,他认为在芯片设计早期阶段进行规划非常关键,不仅仅是能够充分探查芯片,而且还涉及到采用什么样的调试硬件。然而,这并不常见。
芯片设计团队的确在测试结构中开展了前端工作,但却是出于其他原因。芯片中置入了测试设计和内置自测试硬件来支持IC测试。但是,这些资源并不是用于调试,一般只提供很少的诊断信息。芯片设计人员会专门针对硅片开发团队而内置工具,但是,这些工具可能只有内部文档,硅片一旦发布后,就会禁用这些工具。高速串行端口上会有边界扫描,甚至是非常复杂的仪表功能,必须在系统中对其进行调整。但是,这些手段是为了在电路板级建立并验证连接能力,而不是用于系统调试。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)