原副标题:PDP合作开发中的四种流程内部结构设计
混说Linux
知圈 |进“排序网络平台群”请加微yanzhi-6,附注排序
在PDP软件合作开发,主要包括电脑控制系统合作开发中,软件合作开发对合作开发者是两个要深入细致细致考量的难题。软件架构对控制系统总体的灵活性和安全性是十分关键的,两个最合适的软件合作开发不但内部结构明晰,因此易于合作开发。
我坚信在PDP或电脑控制系统软件合作开发的末期绝大多数合作开发者选用的都是单纯的其间台次序继续执行内部结构设计(我是这种的)。
在PDP软件合作开发中,流程内部结构设计主要分成四种,第一集该文将对这四种流程内部结构设计作出简述。
1、软件合作开发存有的象征意义
可以说两个好的流程内部结构设计,是两个有实战经验的技师和两个新手的分界线。
软件合作开发对合作开发者是亲善的,你期望先继续执行什么各项任务后继续执行甚么各项任务,或是这两个天数点继续执行甚么各项任务下两个继续执行甚么各项任务,又或是甚么该事件会并行到某一各项任务之类,在相同的软件合作开发下,化解前述难题的利皮扬卡都是有所相同的。
软件合作开发对合作开发者最小的协助是:
协助开发者支配整座工程建设的架构,当你娴熟采用当中某两个流程内部结构设计后,对控制系统中再次出现的bug你很大能加速的功能定位并化解。
总之,我提议要依照须要优先选择最合适的软件合作开发展开合作开发,具体内容其原因在该文前面会展开如是说。
2、深入细致如是说四种相同的流程内部结构设计
四种常用的软件合作开发有: 次序继续执行的其间台控制系统、 天数片轮询控制系统和 多各项任务操作控制系统。
为了让大家有两个更为明晰的认识,我分别用四种软件合作开发对两个实例展开如是说说明。这个实例如下:
它有4个各项任务,这4个各项任务为按键扫描、声光报警、显示屏刷新和超声波测距。这个实例的具体内容功能是通过按键设置测量距离的阈值,当测距距离低于设置的阈值时,触发声光报警因此将测量距离实时显示在显示屏上(这个应用是汽车倒车雷达的具体内容体现)。
2.1 次序继续执行的其间台控制系统
循环中展开按键的检测,声光处理也放在主循环中。这种整座流程就以变量标志的并行方式在主循环和后台中断中继续执行,对应的流程代码如图所示:
▲ 次序继续执行其间台控制系统的主函数
▲ 次序继续执行其间台控制系统的中断服务函数
这种内部结构设计的优点是采用单纯易于理解,而缺点是每个各项任务所占的CPU天数过长的话,会导致流程的实时性能差,就比如按键的检测等。
2.2 天数片轮询控制系统
天数片轮询法实际上通常再次出现在操作控制系统中,也是说他属于操作控制系统,但在这里所说的是基于其间台控制系统的天数片轮询。天数片轮询法的实质其实是选出两个定时器,没进一次定时中断对计数值展开自加,在主循环中依照这个计数值继续执行各项任务,这个计数值也是各项任务轮询的天数片。
在这个实例中,如果选用天数片轮询控制系统的话,首先选用主控芯片的任很大时器,定时器定时天数周期由我们决定,为了保证实时性和运行效率,这个值通常取10ms、30ms、50ms等,我会将按键扫描轮值值设置为20ms,因为按键抖动的时长一般为20ms,这种处理既达到了消抖的目的,又不会漏掉按键的检测;而显示屏的刷新设置为30ms,如果你觉得刷新反应慢了也可以修改这一轮询值得到改善;
而超声波测距的轮询值设置为100ms,即每隔100模式触发测距一次,这个测距频率已经能满足绝大多数的情况了。
流程代码如下:
▲ 天数片轮询的控制系统函数
▲ 天数片轮询控制系统的定时器中断函数
可以看出天数片轮询法相比次序继续执行还是有很大优势的,既有次序继续执行法的优点,也有操作控制系统的部分优点。
2.3 多各项任务操作控制系统
操作控制系统的本身是两个比较复杂的东西,各项任务的管理和调度实现的底层是很复杂和困难的。但是呢,我们一般都是把操作控制系统本身作为两个工具两个网络平台,我们的目的是采用它的功能而不是合作开发两个操作控制系统。
我采用过ucos和freertos小型的实时操作控制系统,也采用过Linux大型的操作控制系统,有了操作控制系统,不管是对流程的灵活性和合作开发的效率都会好很多。我们在采用操作控制系统的时候更多的须要去学习和理解它的一些调度和通信的方式。
实际上真正能采用操作控制系统的人并不多,反而是跑裸机的占绝大多数,这也和产品的具体内容要求有关,很多单纯的控制系统只须要裸机即可满足。
在这里本我不过多的如是说操作控制系统本身,因为操作控制系统确实挺复杂的,下面图例中的代码是在freertos中创建按键控制LED亮灭的流程内部结构,大家可以对比一下:
▲ freertos多各项任务控制系统中主函数
▲ freertos多各项任务操作控制系统中的各项任务回调函数
3、如何优先选择最合适的软件合作开发
我采用过多种相同MCU做项目合作开发,例如:STM32、STC15、新唐等,也接触过复杂的设计需求,例如:车载智能控制系统和智能家居,跑过操作控制系统ucos、freertos和Linux之类,在回到裸机合作开发时,就会不然而然的去思考完整控制系统的软件合作开发的设计难题,坚信在读者中合作开发裸机的也占绝大多数。
我认为没有最好的软件合作开发(流程内部结构设计),而是只有最最合适的。因为在相同的应用场景中适合选用相同的流程设计,而单纯的去比较哪种流程内部结构设计是最好的没有甚么实际的象征意义。
那接下来我们来对具体内容的应用场景展开分析,在一些逻辑明晰功能单一的控制系统中就很适合优先选择次序继续执行的其间台内部结构设计,这个软件合作开发往往能满足我们大部分的需求,比如电饭煲、电磁炉和声控灯泡等;
而在一些资源缺乏的电脑控制系统因此对控制系统安全性要求较高的情况下十分适合,因为这种方法的控制系统耗费比较小,只是牺牲了两个定时器而已,但是优先选择此种流程架构须要我们对天数片展开深思熟虑的划分;
最后,在一些功能复杂,逻辑控制较为困难的控制系统中就适合优先选择多各项任务操作控制系统,比如视频监控控制系统、无人机之类应用场景。
作为一名PDP软件技师,掌握这四种软件合作开发是十分有必要的,它们可以让我们在设计流程时拥有更多的优先选择和思考,而每一种相同的流程内部结构设计都具备它自己的优势与不足,这须要我们去用心实践方可体会到它的奥妙。