打印

嵌入式微系统(msOS)正式发布

[复制链接]
43688|153
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lldwsw|  楼主 | 2013-8-4 18:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lldwsw 于 2015-7-13 00:05 编辑

嵌入式微系统(msOS)是王绍伟先生(网名:凤舞天,标识:wangsw,21ic代号lldwsw)基于早期开发的“实用单片机系统,标识MS”,经过多年的MTK手机开发经验,结合自己具体的项目应用,整合uC/OS,编程风格向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设计过程介绍:
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开发的过程中一直给予强大的声援,尤其是山东-行千里路、深圳-智能家电、中山-阿雄,msPLC DEMO发布的第一时间来购买支持msOS开发,在群内相互交流。

msOS里面涉及太多的指针、结构体、面向对象、OS、链表、分层等概念,不适合初学者,而是面向有工作经验的嵌入式群体,初学者建议从msOS-Mcu51(MS3)开始开始入手学习。

感谢大家的支持,欢迎网络交流,发现Bug请联系作者QQ:26033613,或加入msPLC/msOS开发群:291235815

msOS文档,从嵌入式软件架构入手讲解,这样对初学者来说,可以避开繁琐的语法和寄存器问题,达到自然而然的学习,目前主要讲解了MS部分,长期更新
msOS_Doc_V0.11_20150706.part2.rar (2.22 MB) msOS_Doc_V0.11_20150706.part1.rar (3 MB)
原实用单片机系统MS3.21的升级版本MS,编码风格上按C#设计,跟msOS兼容,并且进一步完善了代码质量,请各位今后用这个MS版本。
MS_V0.10.rar (111.15 KB)

msOS版本,支持双任务RTOS及GUI
msOS_V0.11_20150711.rar (588.26 KB)
以上两个下载文件会及时更新最新版本,使用的时候,看看是否有最新版本,文件名最后的是日期。

目前开始写文档,主要从嵌入式发展的历史、需求、市场角度描写,而不是单纯从技术角度描写,把本人长期企业经营中接触到的认识写入其中,让技术人员不仅仅懂技术,还懂需求、产品定义、市场的复合型人才。

//********************************************************************************************************
    很多新入群的网友,都在问一个问题,msOS跟uC/OS有什么区别,觉得有uC/OS就已经足够了啊,为什么还要msOS

呢?其实大家都忘了一件事情,当嵌入式人员熟悉嵌入式之后,往往有一个来自内心的呼唤:“我要搭建属于自己的平

台系统,为将来开发产品定下统一的框架”,但往往因为工作的紧张、生活的压力,最后都没有腾出时间来实现自己当

初的想法。今天群内“破浪前行”再一次的提到,让我想起当年写“实用单片机系统”的时候,记录里面就有类似这样

的话,本书前言里面也有这样的话,只是随着msOS的发展而遗忘了。这是最原始的内心需求,msOS存在最好的理由:

Myself OS。
    我们需要的是一个开发平台,并不是RTOS,我们之所以把RTOS当作我们的需求,是因为之前嵌入式行业还没有一

个真正的为中小嵌入式行业提供通用的开发平台,大家只有借助RTOS建立自己的开发平台,花大量精力学会RTOS,之后

再在这个RTOS上添加按键、串口、屏幕、等必要的设备,通过消息、信号量等整合成为一个为自己所用的开发平台。

    这么做,对于一个高手,没什么问题,但对于绝大部分只有一定基础的嵌入式群体来说,这么一个复杂的平台是

搭建不好的,甚至可以说能否把复杂的uC/OS用好都值得怀疑,还谈什么平台,谈什么可靠性,最后往往与初衷相悖而

失败。此外,就算是自己把平台建起来了,一个公司十个人,十个平台,大家代码如何统一又是一个大问题。

    msOS是我内心的呼唤,也是我实际的需求,经过与公司内多位具有大型软件经验的同事思维碰撞之后,借助当前

比较领先的一些理念,尤其是C#中一些理念引入到嵌入式中建立初步模型,再在QQ群中与大家一起讨论修改而成现在这

个版本,可以说msOS是我们大家的嵌入式开发平台,它来源于大家,服务于大家。





msOS起源于21ic,走进开源操作系统年度大会
感谢网友对msOS的支持,尤其是21ic,msOS的前身“实用单片机系统”首发于21ic,第三版本MS3成功于21ic,今天的msOS活动于21icc,也因为获得21ic网友的广泛支持让我长期的改进升级,才让它脱胎换

骨,才让msOS获得资格参加在18号在清华大学举办的第二届开源操作系统年度大会。
msOS源于21ic,敬请21ic网友关注!
这段时间都在写msOS的书,于年底可以发布,明年把msOS推广开。
网址:http://soft.cs.tsinghua.edu.cn/os2atc2014/rc.html





相关帖子

沙发
lldwsw|  楼主 | 2013-8-5 12:02 | 只看该作者

此界面对应程序中的WorkForm

此界面对应程序中的SetupForm

此界面对应程序中的ServiceForm

使用特权

评论回复
板凳
lldwsw|  楼主 | 2013-8-7 00:43 | 只看该作者

嵌入式微系统-前言

本帖最后由 lldwsw 于 2013-8-10 22:47 编辑

1、C语言初探 - 库的思想

2001年大学毕业后经兰州大学周庆国教授介绍进入中科院半导体所工作,师从祝宁华教授、谢亮研究员,第一次真正接触到了MCU51单片机的C语言开发(大学时期接触过单片机汇编),听到谢研究员讲解C语言的优点,尤其是可以写很多子函数,一个个形成库,便于今后复用,觉得C语言非常好,那个时候就想,我应该设计一套属于自己的C语言库。所里的研发氛围很好,思想开放,什么都可以谈,尤其是祝教授与谢研究员不仅不看重我不高的学历(在所里大部分博士硕士的环境下,我只是一个学位都没有的临时工),反而在很多技术问题上的讨论,很看重我的观点,这让我感受到被尊重,也让我的自信心得到了极大的提高。

2、入门手机驱动

所里毕竟不适合我,因为那儿是讲学历,并且不重视实际的地方,这不符合我的长远发展,在工作了将近半年之后,在周庆国教授的介绍下来到了深圳市经纬科技有限公司跟他以前的导师现在这家企业的老板周荣洁博士做手机设计,因为周博是负责公司软件开发的,于是我就从硬件设计人员转变成了一个软件设计人员,主要负责驱动,比如LCD、Melody。可以说第一款真正国产的彩色手机屏驱动就出自我之手。那个时候刚进入经纬,C语言没有真正写过,却直接面对这么大规模的手机软件,难度可想而知,是周博手把手教我如何看代码,如何理解每一句话的含义,尤其是字库显示部分代码分析,现在这个场景还历历在目。

3、“实用单片机系统McuSystem”的诞生

因为有周博的帮助,加上自身对硬件的理解,很快就上手干活并获得了公司的认可,这样日子就轻松了很多,有了空闲时间。因为掌握了C语言,加上之前接触过MCU51,这个时候就想把以前建立一套软件库的想法实现,于是在2002年11月份附近从周立功公司购买了一套MCU51开发板DP51,按着教程的例子一个个例子的练习,这就是之前谢研究院说的子函数的应用。学了半个月之后,就觉得这些太简单了,因为一个个例子、子函数各自独立,分散开,无法合在一起,还需要专门给这些子函数建目录来管理很麻烦,时间一长可能就丢失等等,因为做过了手机,毕竟手机技术层次远远高于单片机,尤其是这个平台思想,觉得非常的好,于是想引入平台概念,把这些可能会用到的例子、子函数都在这个平台下管理起来,形成一个有机的整体,尤其是很多常用的例子,是这个平台的基础,比如按键、串口打印等等,于是就开始构思这个平台了,这也就是“实用单片机系统McuSystem”(简称“MS”),思想来的来源。

4、MS1:消息机制、节拍控制、串口调试

想法虽好,不见得能做到,做的难度往往远大于想,虽然那个时候身边有一帮软件高手,但他们都看不上MCU51,因为相对手机软件确实如此,所以MS可以说完全是靠个人完成的。如何构建这个平台,把这些例子衔接起来,则取材于大学时期做过的VB开发,因为它是典型的消息事件驱动的,我觉得这个消息机制很好,简单、易用,于是就自己设计了一套消息作为核心。在做手机驱动的时候,经常用到系统节拍、软件定时器、Trace串口调试,我觉得这三个很好,系统节拍固定时间来一个中断回调,可以用它实现按键、数码管等例行扫描程序,软件定时器可以用在一些功能超时处理方面,比如进入某一个菜单超时退出、按键音,闹钟或者一些游戏、动画,尤其是可以实现一定时间间隔的自我循环,类似一种伪任务。Trace串口调试是因为手机平台过于庞大,无法通过仿真器DEBUG,所以一般都用串口来打印信息了解测试,这个适合不想买仿真器的朋友,后来因为Flash技术成熟,尤其是STC的单片机,支持在线编程ISP,根本不需要用仿真器,那么Trace就显得很有价值。依靠以上四点,通过大约2、3个月的开发,MS第一版本基本上成型了,这个时候还没有系统接触过RTOS。

5、MS2:简单、易用、分享

MS出来的时候,恰好祝教授有项目要做,测量激光器的特性的,于是基于MS1做了两个项目,进一步完善了程序细节升级到MS2,过了一年在深圳周立功分公司认识一位朋友,他需要开发基于CAN通讯的轮胎硫化设备,但因为没太多钱,让我只帮他完成框架,具体的他自己来做。他只懂一点点C语言基础,我基于MS2完成框架后让他自己设计,本来以为他不可能实现最后还会来找我的,没想到后面他自己搞定了,根本不需要我,这让我意识到MS2的价值:简单、易用,后来我把MS2分享给身边的人,尤其是当时还在周立功深圳分公司的陈茂华先生对MS2大大赞赏,认为MS2简单易用,非常适合入门,很有价值,毕竟陈茂华先生在周立功公司,见识方面比我强一些,有他的认同让我感觉到需要进一步完善,并且应该通过网络分享给大家,2003年放在21ic的Ftp上共享。

6、MS3:21ic结缘、逐渐成熟

2006年来到深圳市华禹高科技有限公司,因为是研发负责人,需要招聘,经常在21ic出没,过了一年“程序匠人”搞了一个侃单片机版面的竞选版主活动,我一时兴起,也去参加,竞选的作品是MS3,当时为了提高MS3的代码质量,还专门让我妻子刘颖按标准优化(她是计算机系研究生、曾在华为手机部门工作,代码编写远比我规范)。竞选活动很是激烈,参与者众多,大家对 MS3印象较深,感觉不错,受到多数人的肯定与支持,但这个跟21ic的一个元老级网友“农民讲习所”的一个“通用处理程序 ”碰上了,两派都有较多的支持者,于是争吵比较激烈,进一步推动了MS的扩散。客观的讲,“通用处理程序”跟MS有一定的理念接近,但出发点来源完全不同。“通用处理程序”的基本思想来自于RTOS方面,加上作者软件功底较好,模块化思想比较重。相反,MS缘自手机的平台思想,是一个开发平台架构,因为当时作者软件功底不强,所以很少用高级有难度的东西,甚至都没用指针,编写的代码都很简单,易用,架构很清晰,让人一目了然,所以很适合初学的嵌入式群体,也获得他们的最大支持,所以这个在后来的推广中,MS应该说是胜出的。尤其是华禹工控现在的Android负责人陈永强(21ic代号high,当时是21ic版主之一),就是在那个时候看到MS3,很惊讶原来MCU51还可以这么写程序,于是来到了华禹工控。2007年那段时间的争论,现在还可以在21ic上搜索到。

有了这些基础之后,经常收到邮件询问MS3问题的,也有QQ加我问一些问题,这个过程中,有个别网友很好奇我是如何把这些元素融合起来的,他们在溯源我当时的想法是什么,但可惜的是,只有很个别的几个,而大部分的网友只是看代码而已。在询问问题中,我发现大部分网友做的项目过于简单,没有接触过复杂的需求,尤其是软件定时器,他们无法理解它是干什么用的,为什么要加入这个功能,而这些问题导致今后的文档注重讲解功能的来源及作者当时的想法。后来,我们经常把MS3作为公司内部软件招聘、培训之用,一些单片机项目,也都以它为基础开发,可以说整个公司都熟悉MS3,带来了较大的沟通便利性。

MS1因为刚出来,处理的很不成熟,尤其是那个时候,代码写的不多,所以很多细节处理显得幼稚,甚至包括编写规范性,但其思想已经体现。MS2把一些没必要的东西都去掉了,弄成了一个很简单,甚至都不包含指针,只需要一颗MCU51即可,可以在Keil仿真器下直接运行,通过UART模拟仿真,入门最好从MS2入手。MS3是比较成熟的一个版本,尤其是3.20版本之后,因为版主竞赛打下的基础,所以客户群体比较广泛,实际使用最多,2011年高频感应加热初期基于MCU51的,用的就是MS3。

7、MS4:精准控制,稳定可靠

随着高频感应加热项目的深入,涉及到高速信号例行处理(10K/S),这个时候被迫放弃MCU51而迁徙到Cortex M3平台,于是基于NXP的LPC1343把MS3升级为MS4,除了保留原来的功能外,主要引入了函数指针做界面设计,对于简单的项目来说,比较容易实现。此外还引入了跟这个项目有关的采样执行速度分级处理。IO等状态检测用系统节拍扫描,并且把系统节拍设置在10K速度上。把项目需求按时间要求分级处理,这样系统节拍再细分为10K/S、1K/S、100/S、10/S。一般最高响应用中断,IO状态检测、高速执行用10K/S,水压、数码管扫描显示之类的用1K/S,按键扫描用100/S,LCD屏、数码管数据显示用10/S。这个一般的规律是基于项目的实际速度需求,没必要大**打蚊子。并且一般响应外界速度要高,这样还可以做一些滤波处理,但执行不需要很快,可以相对慢一些。对于外部检测,一般不建议用中断,尽可能用扫描方式,一是没有这么多中断口,二是中断容易因为毛刺,导致多次中断无法识别。高频感应项目曾经一度想上RTOS实现实时响应,但遭到大家反对,因为那个时候我们对RTOS都不太熟悉,虽然有了解,怕不稳定,反而认为深入分析透彻项目需求才是出路,后来准确分析项目需求后,提出了系统节拍的速度分级,非常好的解决了实时性问题,系统稳定可靠。

8、重构:从MS4到MS5

MS4基本上没怎么对外宣传,只是在博客中发布过,没怎么推广,主要是本人没有精力了。随着高频感应项目的深入,需求越来越多,而这些需求大部分都是来自界面设计,原有的架构体系不足以支撑复杂的界面,代码写着写着甚至会让自己都晕,不仅仅要设计业务逻辑,还要花很多时间在界面设计中,而这个界面设计又干扰了我正常的业务逻辑设计,甚至处理的不好,会导致系统混乱,而这不是我想看到的,于是就想要改变了。

界面设计对于小项目来说不复杂,但对于稍微大一些的项目,界面一多,尤其是一些动态数据需要显示,参数需要设置,界面设计就变得相当复杂,此外LCD驱动一般总线速度不高,显示刷新还不能太快,不然动态数据无法看清,这些导致界面显示必须要与业务逻辑独立分离。复杂的界面需求没有一个简单、统一的标准开发模版,导致在大部分嵌入式项目中,界面部分的代码最难被别人看懂,传承性差。虽然现在有uc/GUI等标准化的界面设计库,但它适合于彩色点阵屏,并且系统过于复杂而没有多少人会用。而很多工业类嵌入式项目,一般都用黑白屏,具有简单、可靠,开发难度低,对处理器要求低的优点,毕竟重点不是界面的色彩,而是系统本身的性能。高频感应加热项目就采用128*64点阵的黑白字库屏,支持8*4个汉字或者是16*4个字母。

因为界面的这些需求,导致项目修改的越来越复杂,时间长了自己都迷糊,而现实又逼我不得不抽身离开高频感应项目组去开拓新的业务:机械自动化控制系统(一种基于CAN通讯的组合嵌入式PLC,代号为msPLC),所以必须要把这些软件教给继承者,而他的软件基础基本没有,虽然在我的指点下加上他对高频感应设备本身的熟悉,所以能看懂业务逻辑并能稍做修改,但对于界面设计基本上一头雾水。这些都促使我不得不重新设计全新的系统,解决界面问题,再加上msPLC的软件需求,想把两者的需求统一起来一并解决。

因为MS4是基于NXP的芯片,这是因为我原来的朋友圈都是推广NXP的,想着好采购,但通用性,资料毕竟没有ST强,客户群体也没有ST的广泛,所以在设计升级的时候,就基于ST最常用的STM32F103来设计。先是基于STM32F103的驱动库把MS4移植上来,再增加一些功能,如为串口设计了一个发送BUFFER,把要发送的数据打印到BUFFER中来,再用系统节拍SystemTick每秒1000次的把数据发送走。引入了高频感应加热项目中做的一些界面分层设计思想,让界面显示与业务逻辑实现独立,但这个是基于消息机制的,没有实现优先级。升级后的叫MS5,在去年年底发布推广。

为了进一步解决界面的分层独立显示,去年年底着手学习RTOS,参考了多家RTOS,最终选择客户群体最为广泛的uC/OS-II,因为它有书可以参考。很多网友向我抱怨uC/OS看都看不懂,谈何用啊,心里抵触感很强。分析发现他们主要是被过多的宏定义、数据结构、指针、过多的不常用的附属功能所困扰,严重的影响了对程序的阅读,他们甚至不知道那些函数是重点,这个问题对我来说,同样头疼,导致思维不清晰,于是我从精简入手,先把跟系统关系不大的一些不常用的附属功能去掉,再去掉一些没用的宏,甚至在开发msOS时期,把任务数从64个变成了8个,去掉了复杂的优先级计算,去掉了复杂的链表结构而改用数组,去掉了很多删除函数,如删除任务、删除事件之类,最后一个uC/OS只剩下最核心的内核和必要的功能函数,文件只有3个,看起来简单易懂,语法非常简单。之后把MS5与初步精简化的uC/OS整合在一起出了一个版本,MS5作为uC/OS的最低优先级任务,当时就叫msOS,也放在了网上,但考虑到种种原因,尤其是感觉有点两个东西强行合在一起的感觉,所以基本上没有推广而放弃了。

做到这儿,自己迷惑了,如何把MS5的优点与uC/OS完美的结合起来,解决GUI与业务逻辑的分层问题,但第一版的msOS这种粗粗的结合,很不协调,不能解决分层问题,还需要深入分析GUI到底是什么,于是转向跟华禹工控的几位软件负责人沟通,我把我的需求告诉了苏鹏,他长期做Linux,曾师从RTLinux/GPL维护人Prof. Nicholas McGuire,具有对开源和互联网天然的敏感性。因为长期负责MTK手机开发和JAVA设计,所以对界面有非常深入的理解,我们讨论之后,他建议我在MS4下重新构建高频感应加热设备的程序,尤其是界面部分, GUI与业务逻辑要想实现分层,在MS4的消息机制下,会导致一个问题,那就是每次刷屏显示都要从头到尾来一次完整的程序执行,中间不能打断退出,这会导致业务逻辑响应速度降低,此外这个从设计思维上讲属于并行设计,每次进来都需要全部解析一遍,费用很高,而C语言程序设计常规的是串行设计思维,顺序执行下来的,所以在编程初期非常痛苦。经过将近一个月的开发,在MS4上实现了独立的GUI(此时的GUI概念还不是很清晰,跟后来msOS的GUI完全两码事情)设计,完成了高频感应项目的界面需求,但感觉很是别扭,一是没有彻底的基于RTOS优先级的分层设计,二是并行再入写法,让思维不适应,别人很难学。所以最后这个版本就停了,没有再继续下去。

9、引入C#

虽然这次GUI的设计失败,但让我有了实际经验,进一步加深了对GUI的理解,于是我再一次开始寻找我想要的GUI。GUI在PC上位机编程中技术非常成熟,早期有VB、DEPHI、VC等,现在流行的有JAVA、C#。我之前接触过一点点JAVA,虽然也类此C语言,但差异还有点大,用起来觉得不是很爽就没学了,恰好华禹工控有WINCE项目,一般用C#开发,而C#则是微软总结了自己这么多年的开发经验,吸收了VB、DEPHI、JAVA、VC的优点整合起来的接近C语言的一门新语言,特点是简单、易用、接地气,这个符合我的理念,于是向他们请教了一些C#的概念,在网上搜索了不少资料对比了一下当前的这些语言特性,觉得C#很适合我,一是语法来自于C语言,具有兼容性,二是它的命名法则非常好、长命名看词识意,提高了阅读性,三是整个架构设计非常完美,命名空间给我留下很深的印象,可以很好的解决大一些项目的重名问题,尤其是全局变量,四是面向对象设计,各种GUI控件,可以很好的解决GUI问题、五是若按照C#模版设计,这样公司内若普及msOS,则同时把上位机C#编程也学了,今后公司内部可以有很好的语言统一性,而C#跟JAVA又类似,这些都可以水到渠成,这些正是我想要的,之后买书学习了2个月差不多时间.

有了C#作为参考模版之后,接下来的问题就是如何把C语言写成C#风格?C语言没有命名空间这一说法,如何表达?C语言没有直接的面向对象概念,如何建立?于是我把这些问题跟华禹工控的软件人员交流沟通,最后确定下来选择结构体为核心解决命名空间和面相对象设计,代码写作规范一律参考C#,这样便于标准化,再结合精简化的uC/OS,基础概念都有了,于是今年6月份正式在msPLC DEMO上开始编写msOS。

10、msOS诞生

因为准备工作做的比较充足,前期开发比较顺利,首先遵循ARM Cortex™ 微控制器软件接口标准CMSIS提出的分层结构,把整个系统分为App和System两个目录,App是应用层,存放具体项目需求,System是系统库。System下一般包含三部分:Device、OS及GUI。Device是设备层,为OS、GUI及App提供底层设备接口,它包含了ST提供的硬件驱动标准库。OS为uC/OSII的精简版本,支持8个任务,去掉了很多动态连接的链表而以数组代替,代码精简明了,非常易懂。GUI是为App提供MMI设计的标准设计库,目前硬件支持128*64点阵黑白字库屏,控件支持页面背景字体(BackText)、图标(Chart)、标签(Label)及文本(TextBox)。

后期开发过程中,GUI部分,尤其是TextBox让我花了将近一个月时间才真正分析透彻,因为TextBox设计太多需求,比如显示数据、按键响应、光标移动、焦点闪烁等等。其次是分层设计开始理解的不是很准确,还有一些指针的用法上,整个软件开发完后,有一种豁然开朗的感觉。

msOS可以说是完全基于自身的需求推动的,因为自己需要这些功能,所以不停的去寻找,而在解决这些的过程中,受到了很多人帮助、肯定与支持,在此深深的表示感谢并把它开源共享出去,希望对后来者有参考作用。我希望这个作用,不仅仅只限于代码方面的作用,更多的应该是这种思维方式,因为这种思维方式很务实,用现在的话讲很接地气。

感谢您的支持,感谢您的选择!


msOS群:291235815,欢迎加入

使用特权

评论回复
地板
通宵敲代码| | 2013-8-7 10:20 | 只看该作者
不错不错,Good Job!

使用特权

评论回复
5
原野之狼| | 2013-8-7 10:58 | 只看该作者
两个小建议:
1  用四个空格做缩进,或者TAB做缩进,首选前者。  千万不要混排。
2  每行字符数不要超过80

使用特权

评论回复
6
yesiqi| | 2013-8-7 12:31 | 只看该作者
等待文档,

使用特权

评论回复
7
lldwsw|  楼主 | 2013-8-7 13:51 | 只看该作者
原野之狼 发表于 2013-8-7 10:58
两个小建议:
1  用四个空格做缩进,或者TAB做缩进,首选前者。  千万不要混排。
2  每行字符数不要超过80

第一点基本上支持了,除了早期的,后续调整过来。
第二点争取。

msOS前身McuSystem实用单片机系统尤其是MS2、MS3,当年在本版面引起较大的讨论。后来看到不少网友参考MS系统发表了不少类似的**,可以说给本版带来了一定的影响。

现在msOS进一步把MS推进,希望各位多多支持。

使用特权

评论回复
8
lldwsw|  楼主 | 2013-8-7 13:52 | 只看该作者
MS系统当年是通过侃单片机版让大家了解的,现在msOS继续以前的道路,第一时间在这儿发布。

使用特权

评论回复
9
草民| | 2013-8-7 16:19 | 只看该作者
楼主辛苦了,下来看看

使用特权

评论回复
10
原野之狼| | 2013-8-7 17:10 | 只看该作者
lldwsw 发表于 2013-8-7 13:51
第一点基本上支持了,除了早期的,后续调整过来。
第二点争取。

关于第一点  王总还是找一个工具来看看  大面积的混排  看着好费劲

使用特权

评论回复
11
hwk612167| | 2013-8-7 19:44 | 只看该作者
顶一个,mark

使用特权

评论回复
12
four_zhg| | 2013-8-7 20:52 | 只看该作者
不错,学习中

使用特权

评论回复
13
woshixiaowen| | 2013-8-7 22:21 | 只看该作者
顶!

使用特权

评论回复
14
reille| | 2013-8-7 22:49 | 只看该作者
顶礼膜拜……

使用特权

评论回复
15
dirtwillfly| | 2013-8-7 23:08 | 只看该作者
膜拜一下,原来楼主就是顶楼里介绍的人

使用特权

评论回复
16
lldwsw|  楼主 | 2013-8-8 01:22 | 只看该作者
本帖最后由 lldwsw 于 2013-8-8 01:41 编辑
原野之狼 发表于 2013-8-7 17:10
关于第一点  王总还是找一个工具来看看  大面积的混排  看着好费劲

刚改过,你再看看,确实以前的有不少没有改过来,SourceInsight下看不出来。

使用特权

评论回复
17
lldwsw|  楼主 | 2013-8-8 14:41 | 只看该作者
前 言

2001年大学毕业后进入中科院半导体集成光电子学国家实验室工作,师从祝宁华教授、谢亮研究员,第一次真正接触到了MCU51单片机的C语言开发(大学时期接触过单片机汇编),听到谢研究员讲解C语言的优点,尤其是可以写很多子函数,一个个形成库,便于今后复用,觉得单片机下的C语言很好,那个时候就想,我应该设计一套属于自己的C语言库。所里的研发氛围很好,思想开放,什么都可以谈,尤其是祝教授与谢研究员不仅不看重我不高的学历(在所里大部分博士硕士的环境下,我只是一个学位都没有的临时工),反而在很多技术问题上的讨论,很看重我的观点,这让我感觉到被尊重,也让我的自信心得到了极大的提高。
所里毕竟不适合我,因为那儿是讲学历,并且不重视实际的地方,这不符合我的长远发展,在工作了接近半年之后,在兰州大学周庆国教授的介绍下来到了深圳经纬科技有限公司跟他的导师现在这家企业的老板周荣洁博士做手机设计,因为周博是负责公司软件开发的,于是我就从硬件设计人员转变成了一个软件设计人员,主要负责驱动,比如LCD、Melody。可以说第一款真正国产的彩色手机屏驱动就出自我之手。那个时候刚进入经纬,C语言没有真正写过,却直接面对这么大规模的手机软件,难度可想而知,是周博手把手教我如何看代码,如何理解每一句话的含义,尤其是字库显示部分代码分析,现在这个场景还历历在目。
因为有周博的帮助,加上自己本身对于硬件的理解,很快就上手干活了,获得了公司的认可,这样日子就轻松了很多,有了空闲时间。因为掌握了C语言,加上之前接触过MCU51,这个时候就想把以前建立一套软件库的想法实现,于是在2002年11月份附近从周立功公司购买了一套MCU51开发板DP51,按着教程的例子一个个功能的练习,这就是之前谢研究院说的子函数的应用。学了半个月之后,就觉得这些太简单了,因为一个个例子、子函数各自独立,分散开,无法合在一起,还需要专门给这些子函数建目录来管理很麻烦,时间一长可能就丢失等等,并且因为做过了手机,毕竟手机技术层次远远高于单片机,尤其是这个平台思想,觉得非常的好,于是想引入平台概念,把这些可能会用到的例子、子函数都在这个平台下管理起来,形成一个有机的整体,尤其是很多常用的例子,是这个平台的基础,比如按键、串口打印等等,于是就开始构思这个平台了,这也就是“实用单片机系统McuSystem”(简称“MS”),思想来的来源。
想法虽好,不见得能做到,做的难度往往远大于想,虽然那个时候身边有一帮软件高手,但他们都看不上MCU51,因为相对手机软件确实如此,所以MS可以说完全是靠个人完成的。如何构建这个平台,把这些功能例子衔接起来,则取材于大学时期做过的VB开发,因为它是典型的消息事件驱动型的,我觉得这个消息机制很好,简单、易用,于是就自己设计了一套作为核心。在做手机驱动的时候,经常用到系统节拍、软件定时器、Trace串口调试,我觉得这三个很好,系统节拍固定时间来一个中断回调,可以用它实现按键、数码管等例行扫描程序,软件定时器可以用在一些功能超时处理方面,比如进入某一个菜单超时退出、按键音,闹钟或者一些游戏、动画,尤其是可以实现一定时间间隔的自我循环,类似一种伪任务。Trace串口调试是因为手机平台过于庞大,无法通过仿真器DEBUG,所以一般都用串口来打印信息了解情况,这个合适不想买仿真器的朋友,后来因为Flash技术成熟,尤其是STC的单片机,支持在线编程ISP,根本不需要用仿真器,那么Trace就显得很有价值。依靠以上四点,通过大约2、3个月的开发,MS第一版本基本上成型了。

待续

使用特权

评论回复
18
p04050405| | 2013-8-8 15:20 | 只看该作者
顶一个。

使用特权

评论回复
19
原野之狼| | 2013-8-8 15:26 | 只看该作者
再提一个建议:
既然是玩开源,那么就不要搞个xxx.rar上传就完事了。
要玩就玩得再专业点,把资源放到 google code 或者  sourceforge 或者  github 上面托管。

使用特权

评论回复
20
原野之狼| | 2013-8-8 15:29 | 只看该作者
参考一下国内的rt-thread团队是怎么玩的:
https://code.google.com/p/rt-thread/

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:致力于设计开源网络化组合式PLC系统(msPLC),目前推广嵌入式微系统(msOS),欢迎加入QQ群:291235815

96

主题

859

帖子

49

粉丝