嵌入式应用中软硬件结合的调试体会

    嵌入式工程师往往都是全才,系统方案,硬件设计,软件设计,一直到硬件安装,在NIOS II应用中还需要写HDL模块,最后进入调试。一上电一切OK这种事毕竟是少数,调试就是要找问题,问题来了首先要有耐心,什么问题我都不怕,说来奇怪你要有这样的准备,那么一切都会”车到山前必有路“,该改的改,原有方案有缺陷的想办法修正(尽量保护已经投入的东西),实在不行该放弃的还得放弃。心态要好,不然往往会陷入”程序很小,错误不少,心浮气燥,乘早拉倒“的境地而失去信心,或者疑神疑鬼,怀疑器件坏了,电路板设计缺陷,甚至电源不稳,环境不好,当然这些都有可能。人对自然一旦无法理解和解释,神鬼就来了。那么我们应该如何调试走一条捷径呢?一家之言,我说一些体会:
1、 硬件设计的时候尽量有参考,有个案例,这个很重要,省去了可行性分析阶段,也给最后调试阶段增强信心,这个一定行,他们不都行了吗?我们也行。如此看来美国人怀疑中国人的进展,其实缺乏考虑这一点。原创什么都需要摸索,有个参考,起码是黑夜里远方的一盏灯,虽然照不亮路,方向是正确的。
2、尽量使用自己积累的成熟的模块或程序。现在可用的资源很多,网上有很多现成的代码或设计,我就听一个人说:他有什么,都是网上抄来的。言下之意,网上抄来就很容易,其实,拿来就能用,而不费思量的东西也不多的,总有个吸收消化的过程吧,不然调试中出现问题,吃不了兜着走吧。特别是重要的设计,大单,不能有取巧的潜意识,人还是实在的好,特别是做技术的。用自己已经使用成熟的程序和模块吧,用别人的也要消化吸收后使用。
3、制定调试计划,步步为营,分块调试。忌急功近利,想硬件一安装好就上电,然后一切顺利(当然我们希望如此),但另一种情况:通电冒烟的也情况也就在心急的时候出现的多。心态要稳,做个调试计划,要设想一下大概调试次序,先静态检查,查电源地是否短路,关键器件引脚是否有短路等等,然后上电,马上检查电源输出是否正常(最好选用有过流保护的供电电源),用手摸器件是否过热,用鼻子闻是否有特殊气味等等,望闻诊切样样用上(这个时候我的耳朵也特别灵敏,有一次刚好风把门带上,”碰“,整个人都跳起来,第一反应就是关闭电源:),通电正常后,往往检查一下晶体震荡是否有输出,有示波器当然好,没有也用万用表量一下(50%方波,电压减半)。做完上面的功课,可以进入我们制定的调试计划了,对关键器件都要想好调试步骤,分步调试,比如:我们在调FreeDev Audio Dsp板(详见www.freefpga.com)音频芯片,就设想了几个调试步骤:1、模拟信号旁路测试,通过设置让模拟信号通过芯片内部切换到输出,这一步可以测试控制端口和芯片是否工作。2、数字硬件环路,让DIN和DOUT信号在FPGA内部连接,通过控制接口,听播放声音是否正常,从而确定数字音频接口部分是否正常 3、通过双口RAM系统接口实现软件环路播放,这样就完整的测试了语音的整个通道。
4、充分理解器件资料,是调试顺利的保证。很多时候,表现出硬件的问题,其实是没有透彻的领会datasheet(或data manual),设置参数不正确,有些参数确实不好理解(也许只有设计者自己知道),那就需要不断的尝试,看看会有什么影响。有时候我们千调万调,突然,哎呀,好了,这个时候千万不要得意,好了就行,不再深入,要抓住这个学习的机会,去寻找为什么会好的设置是什么原因,有时候重新去尝试弄明白这个需要花费很多精力,很多人会放弃尝试。我也经常犹豫,但应该明白机会也许就在这里产生的。
5、让黑盒子尽量变的白一点。很多模块是无名英雄,在幕后默默工作,调试的时候看不见摸不着,总有隔靴搔痒的感觉,抓不到关键之处,我们在不影响模块工作的前提下,引出一些信号,让外界可以观察和分析,在NIOS II设计时这个比较方便,可编程的嘛,加个信号容易。计算机还没有到量子力学的阶段,泡利测不准定理不适用哦,加个测试端或信号也许就象多了双眼睛。
6、悟性和耐心,很多人实验条件也许并不好,有一只万用表,有示波器可能也不高档,甚至根本没有示波器,我就是如此,现在很多信号大于50M的,要测量总得3次谐波,总得150M示波器吧。没条件咱就想吧,爱因斯坦说过比光还快的是人的思维想象,对有问题的模块器件会苦思冥想,想出各种可能,然后用各种对策去试一下,也许你会经常体会到山穷水尽的,我就经常说哎呀黔驴技穷了,怎么办呢? 如果有上帝的话一定会感动,他经常给我柳暗花明的机会。你这样做,一定也垂青你的:)。
   调试是件苦差使,调试成功了也有乐趣。无限风光在险峰,在深夜,独自欣赏正确运行的系统吧!

你可能感兴趣的:(嵌入式系列)