2001年我大学毕业后去了中科院半导体所作业,第一次真实触摸了MCU51下的C言语开发,项目组要求项目中的功用尽或许封装成一个个的功用子函数,便于保护,所以一个项目便是由各个功用子函数组成的。但我由于在所里时刻较短,没有真实参加其间,仅仅触摸了这个概念,觉得这个十分好,也在自己心中暗暗的下了一个决计,往后要树立自己的函数库,以便利项目开发。
2002年我来到深圳做手机软件开发,选用英飞凌手机解决计划,有一套标准的软件架构渠道,RTOS选用Nucleus,GUI等其它部分都是英飞凌自己完结的,其时国内山寨手机职业还没有开端,所以这套手机解决计划还不是很完好,功用比较少,但便是由于不完好,功用少,许多还需求咱们自己开发,所以让我有了更深化的了解整个软件架构的时机。
我担任的是手机驱动部分,所以能够比较明晰的了解整个手机的软件架构,代码是怎么安排的,加上本来便是做硬件的,所以相对较快的完结了作业,在手机公司呆了半年之后就有比较多的空余时刻,想着把MCU51了解一下,把根底打好,便于开发一些小项目,所以收购了一套周建功公司推出的MCU51开发板:DP-51开发板。
按DP-51开发板供给的比方如GPIO、串口、按键等走了一遍,基本上了解了MCU51芯片的特性,对MCU51的编程就不再奥秘,可是这种一个个比方,一个个功用子函数的方法,现已瞧不上了,究竟之前是做手机计划的,所以就想着怎么借用手机的渠道架构思维,把这些功用函数都整合起来,构成一套根据MCU51下的软件开发渠道。
手机驱动开发中,常常用到RTOS供给的体系节拍,5ms一次,用来处理一些例行程序,觉得很好,所以把这个功用引进到软件渠道中,把MCU51的定时器2作为体系时钟来处理。手机软件中还有一个十分好的东西便是软件定时器,由于硬件定时器只要十分有限的几个,比方MCU51一般只要三个硬件定时器,一个用于体系时钟,一个用于串口通讯,只要一个了,若需求处理超时、动画、闹钟等,底子不行用,所以需求用软件扩展出许多个软件定时器,一般根据体系节拍来扩展,所以把这个软件定时器功用引进渠道。尽管手机中有Nucleus这个RTOS,可是被封装了看不到,所以那个时分对RTOS的特性并不了解,实践手机开发中也感触不到它的存在。而RTOS中常见的音讯机制也不是从手机渠道中知道的,而是源自大学时期的VB编程,觉得作业触发这种方法十分好,点一个按键,点一下鼠标,发生一个作业,所以把VB中的作业处理方法,也便是音讯机制引进渠道中。
音讯机制、体系节拍、软件定时器,再加标准的前后台,构成了一个根据MCU51下的软件开发渠道:有用单片机体系(McuSystem,缩写为MS)。第一版2003年放到网上同享。从今天视点来看,这个粗陋的不能再粗陋的,命名标准乌烟瘴气的软件渠道,居然被不少MCU51初学者所喜爱,常常发邮件问询一些问题。这个作业让我理解,自己的水平尽管不怎么样,但触摸的东西相对高端,还有太多的不如我水平的人,他们很需求点拨入门。所以在阅历几个项目进一步完善软件功用之后,对MS1做了精简、优化,去掉了指针等相对难一些的东西,专门针对初学者,让他们十分简单看懂,这便是MS2。在MS2的根底上丰厚了功用,引进了指针,针对中级用户的,变成MS3,应该说MS3的客户集体最多,深受网友喜爱。
2011年,我规划了一款6KW高频感应加热设备(简称高频机),高频机是一款典型的中低端嵌入式项目需求,实时性要求高,作业要求安稳牢靠,128*64是非LCD屏显现界面,高速中止呼应,高低速例行节拍处理,事务需求处理,如下图:
硬件上考虑到MCU51速度现已不行用了,所以晋级为Cortex M3。软件上由于存在高低速处理需求,一开端想着引进uC/OS-II完结多任务处理,但那个时分关于RTOS了解不多,又没有用过,细节点太多,一个处理欠好,或许会引起高频机炸机,所以心里没有掌握,最终在搭档的主张下抛弃而挑选了自己拿手的MS3,仅仅把MS3移植Cortex-M3中,增加了一些菜单界面编程的功用及多级速度体系节拍功用。
项目开发过程中开端感觉到MS3架构的规划现已无法满意这类功用相对较多,菜单界面相对杂乱的需求,尤其是用传统的状态机或许是函数指针来完结的菜单界面编程现已超出了这个结构的才能规模,修正或许扩展功用适当杂乱,有时分连自己都会搞晕,编程适当苦楚。尽管如此,这个项目仍是一步步的完结,产品也安稳批量生产了。
项目转变为产品之后,需求找一个人来接手,解放自己去开发新的东西,这个时分却发现接手人尽管重复看了多遍,自己也跟他讲解了多遍,但当客户有需求需求微调整菜单界面的时分,他往往无从下手或许常常犯错误,传承性十分差。
在高频机市场化获得成功之后,客户对咱们的研制决心十分之高,要求环绕客户的机械自动化设备开发周边的电子设备以降低成本,主要有电源类设备如高频机、火花机,传感器类设备如红外温度传感器、激光测距仪、挨近开关,驱动类设备如步进电机、伺服电机等,操控类设备如PLC。面临这么多品种的不同需求,需求许多人协同开发,若仍是按MS3架构规划,则现已无法满意客户需求,那么新的软件架构渠道,该怎么规划?