模块化开发
在我们学习电子电路、单片机电路及嵌入式软件开发的时候,总喜欢一块一块的学,一块一块的研究调试,这样我们能更快更好的掌握。
同样在做产品设计开发的时候,我们也应该发扬这种模块化开发的思想。比如一个产品的硬件有电源模块电路、主控单元的最小系统、外部数据存储、外部的各种通信接口,以及外围的各种模拟量数字量的采集与控制电路,有的还少不了显示电路等等。所以一个产品会有很多种模块化电路组成,这些功能模块又会对应相应的驱动程序及功能模块程序。
所以在产品开发的过程中我一直要求自己遵循模块化开发的的理念,因为这样会给我们带来很多好处,比如:
1.在产品开发过程中软硬件的调试,我们能更快更好的找出模块内存在的BUG,能更好的避免在做整合的时候出现更多的问题。
2.能更好的优化和升级产品。我们在优化产品的时候只需要优化和调试一部分模块而不会牵一发而动全身,这样对优化后的产品的稳定性也能有更好的保证。
3.能做好更多的技术积累,对公司和对工程师个人而言能做到双赢。积累的技术功能模块能为公司保存更多的技术实力,对新产品的开发和已有产品的维护升级都至关重要。而我们工程师也能积累更多产品开发所需要的功能模块设计。我们可以把这些积累作为一个个我们已经打造好的工具,等到用的时候可以直接拿来用,既方便又稳定可靠。
工具性总结
我一直主张在开发和学习的时候,不要盲目的做和学,要有效的利用我们上面说的模块化,把可以重复利用的电路或程序代码有效的模块化接口化,经过测试和稳定性验证的程序模块,是可以有效重复利用的,我们把这些模块工具化。
我在做开发的时候都针对不同的MCU,都会自己封装一套对应的底层驱动库,比如GPIO,我就做一个gpio.c和一个gpio.h的文件,在不同的项目开发中,我就只需要包含这两个文件,用的时候,只要调用gpio的初始化和操作函数就可以了,如果我们每次都在程序中直接对io的寄存器操作,那么这些代码是不是在其他项目中就不能重复利用了呢,每次我们还都要重复的编写这些代码,这样也会带来很多问题,比如程序的可读性,可修改性以及可测试性等。
随着我们不断的学习总结,我们会积累更多的电路或程序模块工具,在以后的开发过程中,我们就可以拿出我们为自己打造的这些工具,像搭积木一样的来开发产品。
这样一来,我们的产品开发是不是变得更加高效,而且每一个工具化的模块都是以前经过测试验证的,这样也能为我们在产品开发过程中节省大量的测试调试和验证的时间。
做很多事情都是这样,立足当下,思考未来,总结规划,今天的点滴付出,肯定能换来明天的美好结果。