msOS(嵌入式微系统)是王绍伟先生(网名:凤舞天,标识:wangsw)基于早期开发的“实用单片机系统(MS)”,经过多年的MTK手机开发经验,结合自己具体的项目应用,引入RTOS分离业务逻辑及菜单界面,业务逻辑基于消息机制,菜单界面采用面向对象。引入主流PC机编程思想,代码编写风格及程序架构靠近C#,简单而又优雅。面向高可靠、高质量、可复用、标准化、开发、维护简单的行业,适合中小企业多人协同开发、长期维护的嵌入式C语言架构平台,主要定位于工业控制及仪器设备等领域。
msOS主要为了配合msPLC嵌入式PLC项目而开发,以作者前年开发的大功率6000W、1MHz超高频感应加热设备为具体设计对象设计,例子也是以它为参考设计。
作者介绍:
凤舞天,原名:王绍伟,标识:wangsw
1997年—2001年 毕业于兰州大学电信专业。在大学期间担任电子协会会长,为学校同学维修随身听、收音机等电子设备,奠定焊接、维修和做事一看、二想、三做、四检测的基础。
2001年 进入中科院半导体所光电中心工作。
2002年—2003年 基于MCU51开发了实用单片机系统(MS)并开源推广,获得广大嵌入式初学者的好评。
2004年 创业做逆变器,虽然失败,但是从技术上、物料采购上、生产上积累了宝贵的经验。
2005年 再次创业,但是由于对市场不了解和对产品定位不明确,最终导致失败。
2006年—2009年 在深圳市华禹高科技有限公司工作,引入了MTK方案,开始手机开发。
2008年 发明了“电阻电容电感样品本”,解决广大电子爱好者基础元器件的采购、调试、存放问题。
2009年 创立了华禹工控科技有限公司,推出了P1300手机开发模块及相关手持POS产品。
2011年 与东莞市俊知机械有限公司合作,研发大功率(6KW)超高频(1MHz)感应加热焊接机。并于2012年,全面投入生产,同时获得工业自动化经验。
2013年 开始研发msPLC,针对工业自动化行业开源设计嵌入式PLC,并开发了通用开源平台架构嵌入式微系统(msOS)。
2014年 应邀参加清华大学第二届开源操作系统技术年会推广msOS,编写msOS书籍,推广msOS。
msOS设计过程介绍:
msOS主要是为了msPLC设计开发的一套嵌入式微系统,面向嵌入式人员,是作者以前“实用单片机系统(MS)”的升级版本。在MS开源推广过程中,获得广大嵌入式群体的认可并大量使用,认为简单、易用,比较接地气。而简单易用接地气是作者的一贯风格,但随着项目的深入开发发现,基于前后台系统的MS,在开发大一些的中型项目,存在一些不足,提供的资源不够,分层不清晰,阻碍了项目的快速开发,并且产品的可靠性、可维护性也大大降低,这些都促使作者需要对MS系统进行进一步的升级,适合中型项目。
msOS相比MS,主要引入了以下功能特征:
1、全面引入C#标准开发风格,这样以C#编程风格为依托,采用长命名设计风格,便于软件编程风格长期的维护与统一,还能够提高英语用词的准确性,并且C#与JAVA风格类似,代表当前最先进的编程风格,这样学习了msOS,等于把上位机编程的基础也学会了,而具备C#、JAVA基础的,则比较容易接受msOS。
2、引入了RTOS,把业务逻辑与GUI界面设计分开,实现清晰的程序设计思路,RTOS的优先级提高了系统响应速度,目前参考uC/OS,彻底的精简,只保留了实际有效的部分,同时把容易引起混乱的宏定义尽可能的去掉,支持最多8个任务(实际不建议超过4个),只要做稍微的修改,就可以避开版权问题,当然也可以用其他第三方RTOS。
3、采用两个大的结构体:System和App,实现了类似C#的系统库与应用的完美分离,同时彻底解决了全局变量混乱问题。
4、引入GUI库,采用面向对象及链表方式设计方式如Form、Label及TextBox等控件,让图形界面设计非常简单而让设计者只关心业务逻辑设计。
5、完全按照CMSIS推荐的分层设计,便于维护程序。
6、保留MS系统的消息机制、软件定时器,实现完美升级。
7、MCU基于STM32F103最常用Cortex-M3开发
在msOS整个开发过程中,华禹工控的各位软件负责人提供了大量宝贵的经验,分别是郑德智、皮云仙、苏鹏、田飞峰及侯德平,他们各自擅长MTK手机平台、Linux、JAVA、C#及嵌入式,他们把他们认为精华的部分重点向我阐述,比如GUI面向对象的设计,结构化编程,程序的分层,在我向他们描述我想要的软件需求的时候提供咨询,尤其是苏鹏深入分析msOS架构,提出了不少宝贵的建议。此外华禹手持PDA交流群(群号15762255)的众多技术高手,提出了自己的一些意见和看法,在msOS开发的过程中一直给予强大的声援,尤其是山东-行千里路、深圳-智能家电、中山-阿雄,msOS的硬件开发板msPLC-DEMO发布的第一时间来购买支持msOS开发,在群内相互交流。
msOS里面涉及太多的指针、结构体、面向对象、OS、链表、分层等概念,不适合初学者,而是面向有工作经验的嵌入式群体,初学者建议从MS开始入手学习。
感谢大家的支持,欢迎网络交流,发现Bug请联系作者QQ:26033613,或加入msPLC开发群:291235815
msOS版本说明
MS: 原“实用单片机系统”MS3,基于MCU51开发,因MS3的客户群体广泛,为了引导客户向msOS方向转移,所以按照C#编程风格标准化,跟msOS风格统一,为msOS的基础入门版本。
msOS: 基于Stm32开发,引入C#编程风格,引入uC/OS-II,基于CMSIS软件架构模型设计,业务逻辑与菜单界面分离,菜单界面采用面向对象设计,是msOS体系的标准版本。
作者blog:
http://forum.eet-cn.com/BLOG_wangsw317_1268.HTM
配套开发板msPLC-DEMO
http://52edk.taobao.com
********************************************************************************
重要贡献者名单:
苏鹏(Tomsu): 参与msOS框架设计,对msOS模型深入分析,提出具体的GUI、分层、面向对象设计思想,引入开源思维,对msOS的整体规划提出了重要贡献。
贡献者名单:
王修全(剑客): 参与msOS成型后的细节改进,尤其是FlashRom存储部分,对msOS进一步面向对象、分层提出建设性意见。
周磊(独钓千古愁):
参与msOS成型后的细节改进,在Lite版本中,对无OS的中断优先级处理作出改进。
王国君(传说中的火枪手): 提出Lite版本需求,部分采用其代码。
彭祖云(claude): 基于PC端用C#开发虚拟屏原始模板,配套msOS,替代msPLC-DEMO中的LCD。
********************************************************************************
代码编写风格说明:
代码编写的风格,从根本上讲,应该要简单、易懂、无歧义为目的,此外因为编写大量代码是一个相对枯燥的工作,整天对着屏幕,一句一句的分析,很容易疲劳,所以代码编写还要重视优雅,符合自然审美,不为了过份追求严谨而破坏审美、扭曲人性为上,一些需要严谨的地方,可以通过编辑器,或者第三方检测手段实现。
msOS以C#命名规范为标准,以长命名为主,符合简单、易懂、优雅、无歧义的特点,以下是C#的三条命名规范
Pascal 规则,每个单词开头的字母大写(如 TestCounter)。
Camel 规则,除了第一个单词外的其他单词的开头字母大写(如 testCounter)
Upper 规则,仅用于一、两个字符长的常量的缩写命名,超过三个字符长度应该应用Pascal规则(如E,IO,PI,SN)
约定俗称,非常通用,英文字典中可以查到的一些缩写,比如Max,Min,Pwm,IO,SN,ID等,可以采用缩写字。
应用层定义的App结构体内的数据库,因为数据意思要表达清晰,所以尽可能长命名,除非十分通用缩写名(如Pwm)。为了方便其它地方使用,可以在数据库定义时,注明缩写方式,如下:
int Frequency; // Frq
int SerialNumber; // SN
int ProductionDate; // PD
int IdentifyNumber0; // ID0
int IdentifyNumber1; // ID1
int IdentifyNumber2; // ID2
一些太长的全命名,确实不利于书写,可以在不影响阅读的情况下缩写(SetFrequency -> SetFrq),Frequency的缩写