《国产嵌入式微系统msOS成型记》之三 msOS的需求来源
2001年我大学毕业后去了中科院半导体所工作,第一次真正接触了工字电感器MCU51下的C语言开发,项目组要求项目中的功能尽可能封装成一个个的功能子函数,便于维护,所以一个项目就是由各个功能子函数组成的。但我因为在所里时间较短,没有真正参与其中,只是接触了这个概念,觉得这个非常好,也在自己心中暗暗的下了一个决心,今后要建立自己的函数库,以方便项目开发。
2002年我来到深圳做手机软件开发,采用英飞凌手机解决方案,有一套标准的软件架构平台,RTOS采用Nucleus,GUI等其它部分都是英飞凌自己完成的,当时国内山寨手机行业还没有开始,所以这套手机解决方案还不是很完整,功能比较少,但就是因为不完整,功能少,很多还需要我们自己开发,所以让我有了更深入的了解整个软件架构的机会。
按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架构的设计已经无法满足这类功能相对较多,菜单界面相对复杂的需求,尤其是用传统的状态机或者是函数指针来实现的菜单界面编程已经超出了这个框架的能力范围磁环电感器,修改或者扩展功能相当复杂,有时候连自己都会搞晕,编程相当痛苦。虽然如此,这个项目还是一步步的完成,产品也稳定批量生产了。 平面变压器厂家 | 平面电感厂家
求助关于TL431在48V电路应用中耐压的问题请教各位大师:关于TL431在48V电路中应用的问题,如何增加TL431的耐压。图1温度升高后,满载电压从48V慢慢升高到55V,此电路不行。图2温度升高后,满载的电压会有1.5V左右的升高,电压
基于单片机STC89C52RC的汽车中网扫描灯设计 摘 要:生活水平的不断提高使汽车逐步走进了千家万户。追求时尚个性的心理使车主们*尽心思装扮自己的爱车。汽车LED中网扫描灯既彰显个性,又可以起到警示作用,甚至还有一个好听的名字叫游侠灯。本文介绍一款
移相全桥的问题最近在调试一个移相全桥DCDC电路,输入300V,输出48V45A,频率75KHZ,UCC3895控制,测试发现,谐振电感取值偏小了一些,因为负载到了20A滞后桥臂还没有进入软开关,后臂发热比较厉害,这个先