漫谈 Mbed OS(1)

使用Arm 公司的Mbed OS 已经有一段时间了。前一阵参加了物联网博览会,发现国内的开发人员对这个操作系统并不了解。我打算系统地介绍该操作系统。

 Mbed OS 的优点

  -比arduino 强大,比树莓PI 好用

嵌入式程序员或多或少了解了一些流行的arduino 和树莓PI开发板。它们一个是基于8位处理器的单板电脑,另一个是基于linux 的单板计算机。arduino的最大优点是上手容易,只要具有C语言和简单硬件的知识,就很快就能开发各种各样硬件装置。网络上也有大量的源代码和项目可供参考。事实上,我也经常拿这个小板子来测试新的芯片。使用起来十分方便。

   而树莓PI 实际上就是一个廉价,完整的linux 电脑,可以连接LCD 显示屏,键盘和鼠标,安装ubuntu OS,NodeJS,python,C语言开发环境。但是,linux 上面编程对于初学者和嵌入式工程师来讲,显得不是那么容易了。个人感觉,树莓PI 是为软件人员准备的。我喜欢在树莓PI 上安装一个NodeJS ,开发各种HTML5/JAvascript 程序。作为显示大屏的控制器。当然也可以写一些网关类的程序。不过重来没有编写硬件控制程序。

  相比之下,我更喜欢将Mbed OS 比作arduino 的大兄弟。

    1 mbed OS 面向arm 公司Cortex-M 系列处理器,例如STM32F429,STM103 等等。这是一个32位的处理器,目前的cortex-M 7主频已经达到了200MHz,内存到达1M ,这和arduino 的8位单片机已经不是一个数量级的处理器了。

    2 MbedOS 编写应用程序却和arduino 一样简单,而且它使用了C++作为程序设计语言,C++面向对象程序设计的能力可以更好地实现软硬件的抽象,继承。实现模块程序设计和分享源代码。我们来看看Mbed OS 的闪灯程序是怎样的吧!

#include "mbed.h"
DigitalOut LED(PC_5)
main()
{
   printf("Hello The World!\n");
    while(1)
    {
     
     LED=1;
     wait(1);
     LED=0;
     wait(1);
    }
}

非常简洁,好像比arduino 的代码还要简约一点。

     Mbed OS 比arduino更强大是显而易见的。首先cortex-M 系列的硬件资源更丰富,它们会支持更多的GPIO,SPI,I2C,UART ADC接口,也支持CANBUS,Ethernet 网络接口。Mbed OS 为这些硬件资源封装了C++的类,应用程序可以方便的使用。

  和ST 公司的HAL 库不同,Mbed OS的应用程序不需要对硬件进行设置和初始化,唯一要做的就是指定硬件的管脚。一个为STM32F103 编写的程序可以方便地切换到STM32F746上面,最多你需要修改管脚定义。

下面我们来看一个CAN 总线的应用程序

#include "mbed.h"

DigitalOut myled(D8);
CAN can1(PD_0, PD_1,500000);
int main() {
     CANMessage msg;
    while(1) {
   if(can1.read(msg)) {
            printf("Message received:id=%d,type=%d,%d\n", msg.id,msg.type,msg.data[0]);
            myled = !myled;

    }
    }
}

上面的程序只是指定了CAN TxD和RxD 的管脚定义,这么一小段程序就完成了CANBUS数据的接收。一开始我都没想到是如此的简单。裸机编程惯了,限制了我的想象力。

-适合编写更专业的程序

在Mbed 上可以编写更加专业的应用软件,比如http Requet 来访问Web 网站的RestFull API,或者是https。也可以使用Mbed TSL(Open SSL) 实现网络安全协议。也可以实现CoAP 这样的物联网协议,支持访问中国移动的onenet,arm 公司的Pelion 物联网云端服务。同时像微软的Asure Iot Hub 也为Mbed 开发了Client 端。

 Mbed OS 适合专业程序编写的原因有两方面:

 arm 公司希望Mbed 成为物联网领域的android,所以在Mbed 开发方面还是蛮拼的。在Mbed OS 中注入了大量的最新技术,并且极力打造Mbed OS的生态系统。

另一方面,Mbed OS 在国外已经有了大量的开发者,特别是欧洲。Mbed OS 的社区上有大量的应用程序和程序库可以使用。

    的确,我们在百度上也可以搜到许多STM32F 的应用程序源代码,但是基本上无法直接利用,不是处理器不同,就是库不兼容,或者年代久远。但是应为Mbed OS 基本上完全抽象了硬件层,就是修改,还是相对轻松的。

Mbed OS 的不足

 Mbed OS 的不足之处,特别是在中国的不足之处,也是非常明显的。

1. 官方没有中文网站,这对国人来讲还是不方便的,阅读还可以,但是社区使用英文交流就吃力了。

2. Mbed OS 之前搞了个 2.0,现在变成了5.0版本,2.0 版本变成了包袱,在网站上造成了混乱

3 在线编译器的服务器在美国,国内使用起来太慢了,我一般是在线配置好项目,然后export 成keil uvision 5 项目离线编译,修改和调试。

4 .同样地,它们的云服务pelion 也是在国外,影响了国人的应用。

5 arm 公司在国内的推广,特别是大学计划还是不给力的。

因为喜欢,我包容了Mbed OS的这些不足。

猜你喜欢

转载自blog.csdn.net/yaojiawan/article/details/82789970