MSN:kingreat.net[AT]hotmail[DOT]com
QQ:24736136
DATE:
声 明
本人负责的项目是一种机械设备的故障诊断仪器,主要针对的是机械振动对设备的影响,说白了,就是测量机械振动的仪器,通过对振动的频谱分析、动平衡校验等来分析和减小机械设备的振动。本人在北京盛迪振通科技有限公司工作,负责项目的代号为“振通904”,以下统称为“904”,“904”采用基于ARM7的AT91SAMS7S256作为CPU。春节将之,写此文的目的是对自己工作的阶段性总结。如有您看过此文,那么很感谢。如果您对本文有何建议或意见,欢迎访问我的BLOG或在QQ上留言。我将洗耳恭听并虚心的和您探讨。
一、心得体会之万事开头难
我接手“904”是以调AD开始。可以说从调试AD到LCD的驱动是经历了一个漫长的过程,最后发现通常是一些小问题阻碍了工作的进展,当问题得到解决的怨恨着自己是如此的笨拙。
AD采样不对——原因是初始化AD的采样保持时间小于规定的最小值。
LCD(基于T6963C)的显示总是“晃来晃去”——原因是液晶的字体选择引脚悬空,接到高或低即可。
在到后来,写好的程序经过了一个晚上再次烧写到芯片里突然就不好用了,经测试所有的IO线都正常,所有的外围芯片都可以正常工作,只是液晶无任何显示,于是换液晶、换数据线、换接口等等都没有解决问题(就是没有换芯片,因为我坚信芯片没有坏)。当在没有信心找出问题所在的时候,一个偶然的尝试——用手按住与液晶的数据线连接的(3.3V转5V)芯片的时候问题解决了,原来是虚焊。这些问题足足耽搁了我3~4周的时间。
从这些问题可以看出,我的工作方法有问题,没有去多方面的想问题,只是自己认为它是对的,但没有去测试它。如果有一个正确的工作方法和开阔的思维,工作效率将大大提高。
二、心得体会之“界面”设计
我认为一个产品的界面的设计很重要,包括仪器的外观在内,他们是仪器的“脸”。我认为人们对仪器的认识分为三个阶段:
第一认识往往是它的外观而并不是它的功能有多强大;
第二认识是仪器工作起来是否稳定可靠,是否易于操作;
第三则是问其功能;
我认为我和我公司其他型号最大区别产品就是在我的界面的设计里引入了“GUI”的概念。我把液晶的菜单设计增加了按钮效果,一改其他产品的那种呆板的纯文本的操作。它可以和用户做些基本的交互,能做到易于操作。当然,这个真正“GUI”的概念还相差甚远。
三、心得体会之编程篇
现在说说程序。算法是程序的灵魂。一个好的算法不仅仅可以提高程序的运行效率和降低程序的复杂度,而且可以使工作的效率也大大提高。
对I/O口的操作大多数都要经过三步:首先定义I/O的功能(外设功能还是I/O功能);其次定义输入输出方向;然后对I/O口赋值或接收来自I/O口的值。可惜的是AT91SAMS7S256的I/O口的操作并不能像51单片机那样方便,AT91SAMS7S256没有位操作的功能,但是我们可以通过软件来时间位操作的功能呢?当然可以,利用结构体、联合体和位域就可以实现,这个灵感是来自我师兄的一篇文章和公司面试的一道题。这样操作的优点是可以提高工作效率,不用在为操作1个I/O而对其他的31个I/O的状态思来想去、绞尽脑汁了,缺点是这将降低I/O的速度,但是我相信我们的不会对I/O有很高的速度要求。但是当我发现这个“秘密”的时候已经晚了,我的程序已经快接近尾声了。
很高兴在我接触的产品里有数字信号算法的东西在里面,这对我来说不仅是个挑战也是一种学习。现在很后悔为什么大学时候不好好学习一下数字信号处理过程。要是学的好点,也不至于对“傅立叶”如此“恐惧”。还好,FFT是一个通用的程序。FFT的算法程序里会有相对较多的乘除操作,这对于一个没有专门乘法单元的CPU来说是一种负担,这CPU将耗费大量时间去完成乘除的操作。但是,如果你把FFT中的乘除操作换为左移右移操作,你会发现您的代码长度将大大缩小(大约有5K的大小),毫无疑问,仪器的工作效率将大大提高。
我发现公司的每个开发人员都有一套自己编程风格,作为一个开发团队,每个人的代码之间基本没有“兼容性”。编程风格的不统一,成了我们代码交流的困难,也影响了开发的进度和工作的效率。我这样说不是说别人的编成风格不好,而是我们需要一个统一的编程风格,需要一个编程的规则,这里的规则包括变量、函数的命名方法,函数体的书写规范,甚至是括号的位置,空格的多少等等,我想这完全可以作为入职人员的培训。
四、心得体会之总结
从今年八月份毕业到现在,五个月光阴匆匆而过。一路走过来,走过很多弯路也得到很多教训何启迪。个人认为,一个产品的开发应该力求方便、快捷、稳定与高效