我想了很久,就是没想到一句很好的开场白,本来那么久没写博客,想文艺一点的,没办法,没这细胞,开门见山入正题。
最近在整理物联网操作系统,大家就不理解了,你一个最终的产品厂商,整这个有意思吗,操作系统不是那些IC厂商或者说平台方案商该考虑的事,我们这不是瞎掺合吗,我们投入人力、物力、财力去做这个有意思吗。很多同事、朋友都问我这个问题,我回答到实在不知道怎么回答了,所以今天再累,我也得整篇文章出来,把大家忽悠过去。
什么是嵌入式操作系统?Linux、ucos、FreeRTOS等等。是的,他们是典型的嵌入式操作系统,提供嵌入式系统的全部软、硬件资源的分配、任务调度、控制、协调并发活动。仔细看几遍前面一句话,发现没有,他做的其实是对接硬件、提供软件基本操作。那么具体到我们的设备上,比如做多媒体娱乐系统、做数据通讯系统,那是不是少了点啥,是的,多媒体娱乐系统需要音视频解码,数据通讯系统需要数据的解析、通讯等。那么这些新的功能该怎么加进去,以怎样的形式加进去,就是系统架构的学问了,我们下面会提到,将这些功能整合进去之后,所形成的的就是一个新的系统,一个针对我们产品的系统,也就是我们物联网产品在做的物联网系统。Understand ??如果还不懂,那说明我的表达能力太差,你发QQ给我,我慢慢给你讲。
目前的物联网芯片厂商,比如MTK、Realtek、QCM、BCM、汇顶等等,他们都在做无线射频的模块,推出来的产品都是以FreeRTOS为内核,加上一个LWIP,然后运行一些简单的逻辑控制,封装几个接口,就推出市场,让用户去做产品开发,对于芯片厂商来说,真是too young,too simple!!我资历不够,只评论这两句。那用户要做什么?云对接、各种物联网协议开发、各种场景应用控制。That is too complicated !!
一个平台的开发还好,一个不升级的软件还好,只有一种协议,不用考虑扩展性还好,可是市场不是这样的,我们有很多的平台要开发,市场在变化,我们的软件要升级,我们有很多协议要兼容,怎么办?做好软件系统架构,建立自己的物联网系统。我们的物联网系统要做什么呢?都有哪些功能?在这之前,我们先说说上面提到的系统软件架构。
软件架构要做什么呢?
从静态的角度,架构要回答一个系统在技术上如何组织,直观的表现就是我们常见的软件架构图,如图1;
从变化的角度,架构要回答如何支持系统不断产生的新功能、新变化以及适时的重构;
从服务质量的角度,架构要平衡各种和用户体验有关的指标;
从运维的角度,架构要回答如何充分利用系统资源、平衡资源管理及其扩展策略;
从经济的角度,架构要回答如何在可行的基础上降低实现成本等等。
好吧,写到这里我都不知道我在写什么了,再详细一点吧:
软件架构对产品开发的作用:
软件架构是沟通现实世界和微机世界的一座桥。
1.上乘业务目标。软件架构担负着为完成业务目标而进行大局规划的职责。
2.下接技术决策。将面向业务的需求转向面向技术的软件架构设计方案,为后面的技术开发工作提供切实的指导和限制。
3.分化复杂性。基于‘分而治之’的思想,控制问题的复杂性。
4.迭代开发和增量交付。
5.突出核心知识。
6.充分利用可重用资产。
7缩短推出产品周期。
8降低开发和维护总成本。
9.产品质量。
好吧,大概就是这样,那么架构好的软件是什么,对的,就是一套系统,我们的物联网操作系统,如下图
图一,物联网系统架构图
我发现我越描述自己越糊涂了。针对这个物联网系统,我大概的描述一些各个层次吧,硬件CPU层就是那些IC了,涉及到的都是与非门,电平控制,我不懂,懂我也不想说,太复杂了。接下来的系统BSP层就是我们常说的linux kernel、ucos、FreeRTOS了,作用我就不想说了,如果你不懂的话,我这文章你也看不懂,我说了也白说,然后往上看,左边第一个driver,就是系统对硬件的控制了,一般都是以一个.s文件开始,然后加上若干的.C组成接口,可移植性还是挺高的。再往右看,你肯定要问了,WiFi、BLE为什么没放在driver里面,这个....其实这个里面包含一些基础协议,就是WIFI/BLE数据上来的时候经过了一层转换,不是简单的硬件操作那么简单,所以我就把他剥离了,至于你们想了解详细情况的话,等我有时间再说吧,我最近忙着过双11呢。然后再往上看就是网络协议了,LWIP是轻量级的TCP/IP,欲知详情请找度娘。最上面就是协议了,连到device的协议,以及提供出来的一些逻辑开发的API,开发者通过这些API连接到网络服务器,比如京东云、阿里云之类的,还有就是APP的连接。
好了,啰嗦了一大堆,我自己的都不知所云了,如果我还是没讲清楚什么是物联网系统,请跟帖灌水,或者私信给我,我QQ解答。
其实我在这个架构里面留了伏笔,用于整个系统的安全管理,不便透露,以后再聊!!