您的位置 首页 厂商

《国产嵌入式微体系msOS成型记》之四 嵌入式微体系msOS的诞生

为了解决多人协作,多种需求产品的开发,并且还要长期维护,必须要把这些产品的共性提取出来。1、不需要低功耗设计。2、传感器类和驱动器类属于单一功能的设备,传统前后台架构的MS3即可。3、电源类及控制类设

为了处理多人协作,多种需求产品的开发,而且还要长时间保护,有必要要把这些产品的共性提取出来。

1、 不需求低功耗规划。

2、 传感器类和驱动器类归于单一功用的设备,传统前后台架构的MS3即可。

3、 电源类及操控类设备都归于功用杂乱的,实时性要求高,带有屏幕显现,外扩多路传感器或许驱动器的设备,这两类能够一致为一类,是规划的要点,需求树立全新的渠道。

那么这个新渠道应该做成什么姿态,脑子里仍是没有概念的,仅仅知道在高频机规划中,传统的状态机或许函数指针方法的菜单界面编程方法是要改进了。我尽管在手机公司做过近两年的手机驱动开发,但尔后一向做硬件方面的作业,后来创业运营公司,所以嵌入式软件水平一向停留在MS3这个层次没有进步,关于这个新渠道的规划,首要需求向软件专家讨教,尤其是曩昔这么多年,软件开发也有极大的改变。

幸亏我公司的根柢是做手机的,干流是MTK手机计划,此外根据Wince做了一款工业手持机,所以有各类专业软件人员,对C、JAVA、C#都十分了解。在许多软件人员中,特别要感谢的是苏鹏,他拿手Linux,之后是担任MTK手机开发渠道的保护,也需求开发JAVA运用,要害那个时分他也刚好参加了根据MS3的红外温度传感器的开发,所以对嵌入式有必定的概念,对大型软件编程又很拿手,所以当我提出我的需求的时分,他很清楚我想要干什么。

苏鹏以为MS3是一个很好的东西,简略、易用,不能简略扔掉,所以第一步在MS3上重构,引进当时干流的面向对象菜单界面编程思维,这个重构花了将近一个月,由于MS3是前后台的,只需一个大循环,根据音讯机制,许多工作都是在大循环中处理,菜单界面放在大循环中解析的时分,由于菜单界面显现归所以低速工作,会严峻影响高速的工作,让MS3中的音讯机制失效,所以无法完美的完结面向对象菜单界面编程,仅仅形式上的完结了一些功用,没有实践运用这个代码,但这也为后来的真实完结面向对象菜单界面编程打下了根底,而且也认识到MS3这种只需一个大循环的架构无法完结真实的面向对象菜单界面编程,有必要要引进抢占式多使命操作体系,把菜单界面放在最低优先级的使命中,其他的音讯工作处理(音讯工作处理,也叫事务逻辑处理,后续用事务逻辑表述)放在一个高的优先级中,这样最少需求两个使命,所以接下来的工作便是挑选RTOS,而且深化了解它。

首要考虑的是uC/OS-II,由于它的材料最多,用户集体广泛,而且之前也触摸过一点,尽管没有深化,但感情上首选它。此外有搭档引荐了FreeRTOS和国内的RT-Thread,FreeRTOS跟uC/OS-II相似,但知名度太低,材料及客户集体都很少,尽管它是免费的,仍是扔掉了。RT-Thread编程风格是Linux的,我不喜欢Linux风格,感觉不好看,不行高雅,其次知名度也远不如uC/OS-II,而且可靠性、稳定性怎么也值得置疑,它带的GUI合适彩屏,相对杂乱,也不合适黑白屏的工业场合运用,所以也扔掉了。

选定uC/OS-II后,有必要要深化了解它的每一个细节,首要碰到的便是uC/OS-II有太多的宏界说,由于要可裁剪、可装备,但实践上有许多的功用是用不到的,所以我就从精简下手,把在新渠道中或许用到的函数保存下来,其它的一概去掉,这样就没有了烦人的宏界说,有许多网友也诉苦这些宏界说,严峻的搅扰了uC/OS-II的代码阅览。

经过精简uC/OS-II,深入把握了它的原理,而且这个时分新渠道的需求也越来越明晰,绝大部分的需求只需两个使命即可,一个为菜单界面使命,一个为事务逻辑使命,底子不需求64个使命,所以对uC/OS-II大做修正重构,去掉了闲暇使命和计算使命,把菜单界面解析安排在最低优先级上,事务逻辑放在高优先级上,这样只需求两个使命即可。

为了考虑今后使命的扩展性,仍是保存了使命表,仅仅精简为支撑8个使命。为了下降OS的内存占用,进一步精简OS内核,把本来根据链表结构的使命块改成数组结构。这样一个十分简略的uC/OS-II就出炉了,仅仅两个文件即可。

精简、重构后的内核仅仅保存了uC/OS-II的使命切换功用罢了,而一切的RTOS都有这个功用,而且都是相似的,所以现已脱离了uC/OS-II,仅仅这个内核开端源自uC/OS-II,风格相同,所以还保存其名,但本质上现已不归于uC/OS-II了,所以也不存在版权问题,若想进一步避开,也能够参阅其它的RTOS精简或许直接用其它的RTOS。若只需求用两个使命,新渠道还供给了一种软中止的方法完结双使命,彻底不需求RTOS。

引进RTOS完结了多使命之后,新渠道的架构有些显现,接下来要做的是确认软件架构,而这个有必要要从现代老练的软件架构中寻觅。在跟搭档沟通后,他们都提到了面向对象规划,但这个需求选用C++,而嵌入式中C++却不盛行,我也不会,所以不或许挑选C++。后来想到用惯例的C言语写成相似C++的面向对象风格,但参阅了网上的代码之后,觉得把C言语弄的更杂乱了,很别扭,变成了怪样子。之后又了解了JAVA,但感觉这个风格也不是很合适,直到有一位担任C#的搭档侯德平主张选用C#,而且给我演示C#的优点的时分,让我眼睛一亮,这便是我想要的东西。

1、 高雅的编程风格,简略易用的长命名命名规范很简略被开发者承受,扔掉杂乱的匈牙利命名法。

2、 System这个命名空间概念,能够很好的封装整个体系层,把运用层独立出来,这样能够进步代码的复用性和稳定性。

3、 C#是面向对象,但比C++简略许多,彻底能够使用C言语中的结构体模仿命名空间和类,把C言语写成C#风格。

4、 微软的编程环境,特别合适工业职业,不管PC机仍是WINCE嵌入式设备,C#都能够通用。这样嵌入式端用新渠道开发之后,自身便是C#风格的,很简略把握PC端的C#编程。

到了这儿,整个结构根本成型,可是体系层怎么进一步细分呢?这时苏鹏主张参阅ARM的CMSIS规范,如下图:

为了进步可移植性,在硬件驱动层与OS、GUI等中间件层引进了设备层,至此整个软件架构的结构根本树立完结,如下图:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/242270.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部