用MBed开发物联网应用

分享到:

最近,ARM公司低调的发布了Mbed OS 5.1,将Mbed再次进行了升级,为今后的物联网应用做好准备。

大家知道,在嵌入式领域,现在ARM内核的芯片是主流,ARM公司将它的内核授权给其他芯片公司,制造出各种不同的MCU,如ST的STM32、TI的 Sitara™ Processors、NXP的Kinetis系列和LPC系列等,几乎除了Microchip公司外,其他生产MCU的厂家都有ARM内核的芯片,包括 现在很多国产的芯片公司也开始提供ARM内核的微控制器了。

现在ARM内核的芯片非常多,不同厂家现有的型号可能有上千种,每年还在推出很多新的型号。但是开发ARM芯片不像以前的8x51那样,只要一个通用的汇 编或者Keil C51软件就可以完成开发。因为ARM芯片比51复杂太多,所以现在基本上每个厂家都为自己的芯片提供了专用的函数库,提供了芯片的底层模块驱动,方便开 发者快速进行开发。

比如,开发ATMEL的程序,一般我们使用Atmel Studio作为IDE,并使用Atmel自己的ASF( Atmel® Software Framework)进行开发,使用ASF提供了各种库函数和驱动,实现芯片的底层功能。ASF的功能很强,除了提供芯片的大部分底层模块驱动,还提供了 一些高级的应用模块(如USB),可以加快开发速度。Atmel的大部分芯片都可以使用ASF进行开发,ASF不但代码效率高,而且移植性较好,很多函数 在不同芯片中的名称和用法是一样的,这给程序的移植带来了方便。

但是现在的芯片实在太多太复杂,也各有特色,那么就有一个比较大的问题,就是大家不可能每种芯片都去学习,等学习好了在去使用。我们也很难只去使用一个厂 家的芯片,不去使用性能更好、功能更丰富,更加适合项目应用的芯片。例如因为某个项目,我们需要将STM32的程序或者NXP的程序移植到ATMEL的 MCU上,虽然它们都是ARM内核的芯片,但是因为寄存器各不相同,库函数也不相同,程序是不能简单的直接移植过来运行的。

针对这个情况,同时也是为了适应新的物联网时代的变化,ARM提供了一个全新的开发方式:MBed。Mbed包括了云服务、客户端、Mbed OS等几大部分。
 
 
 
对于传统的嵌入式工程师,Mbed OS是最直接有帮助的,它提供了许多有用的组件。Mbed OS是由Mbed Drivers、Mbed Online IDE、HardwareComponents、Libraries等部分组成。Mbed Drivers提供了简单易用的API,让控制器内部的各种模块起来非常简单;而Mbed Online IDE提供了一个在线开发环境,只要通过浏览器就可以开发程序,无需在计算机上安装开发软件;Hardware Components、Libraries提供了各种硬件、传感器的库,使用起来比Arduino更加容易。
 
使用Mbed开发,可以加速和简化开发工作,降低开发难度,让复杂的底层驱动变得非常简单,同时保证了程序的可移植性,无论使用哪种芯片(需要是能够被所Mbed支持),同样的外设功能都可以使用相同的用法。

下面就简单介绍使用Mbed开发程序,并和ATMEL传统的开发方式相比。

首先我们需要到Mbed网站上注册一个账号,这样才能使用它的Online IDE(在线开发环境)和其他资源。然后在Mbed的开发平台中(https://developer.mbed.org/platforms/?pvend=42),我们可以看到已经有4种型号的芯片支持Mbed了,这也是比较有代表性的几个型号:
 
AT SAMR21-XPRO  AT SAMW25-XPRO  AT SAML21-XPRO-B    AT SAMD21-XPRO

我们以AT SAMR21为例,先在Online IDE中创建一个新程序,使用BlinkyLED Hello World模块。
 
 

创建后打开主程序,可以看到如下代码:
 
#include"mbed.h"
 
DigitalOutmyled(LED1);
 
intmain() {
    printf("RESET");
    while(1) {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
        printf("TEST");
    }
}
 
使用GPIO作为数字方式输出,只要将它定义为DigitalOut,输出高低电平直接直接将它赋值为1或0,既直观,又简洁。作为对比,在ASF的Delay例程中,是这样使用的:
 
#include<asf.h>
 
intmain(void)
{
   system_init();
   delay_init();
 
   struct port_config pin;
   port_get_config_defaults(&pin);
   pin.direction = PORT_PIN_DIR_OUTPUT;
 
   port_pin_set_config(LED0_PIN, &pin);
   port_pin_set_output_level(LED0_PIN,LED0_INACTIVE);
 
   while (true) {
       for (int i = 0; i < 5; i++) {
          port_pin_toggle_output_level(LED0_PIN);
          delay_s(2);
       }
}
 
两者对比,Mbed的方式无疑更加简单方便,更适合初学者。而且Mbed的程序可以非常容易的在Mbed支持的芯片上移植,因为用法都是一样的,也就是说在 STM32、NXP、Silabs、Nordic等芯片上,都可以使用相同的代码(只是GPIO的名称不同),这样就可以极大降低了程序移植的难度。例 如:
 
在nordic nRF1822上:
DigitalOut myled(p18);
 
在STM32F030上:
DigitalOut myled(PA_5);
 
在KL25Z上:
DigitalOut myled(PTB18);
 
 
上面是GPIO的数字输出功能,其他功能也是类似的,如:
  • 数字输入就是:DigitalIn
  • 双向GPIO:DigitalInOut
  • 总线方式输出:BusOut
  • 端口输出:PortOut
  • 中断输入:InterruptIn
  • 模拟输入:AnalogIn
  • 模拟输出:AnalogOut
  • PWM:PwmOut
  • 定时器:Ticker
  • 串口:Serial
  • SPI和I2C:SPI/I2C
  • ……
简单的程序可以直接在Online IDE中开发,复杂的程序,使用Online IDE就不够方便了,这时可以将程序导出来,使用Atmel Stduio或者Keil进行开发。
 
 
注:要在SAMR21-XPRO上使用Mbed的完整功能,需要升级开发板的固件,安装最新版本的AS7,并连接开发板时,会自动更新开发板固件的。

传统嵌入式和单片机的开发,深入学习并掌握一种或数种芯片的用法后,就可以解决很多问题,完成一些项目。但是在物联网时代,芯片硬件本身将越来越被弱化, 开发者对硬件底层的关注越来越少,大家更加侧重于应用层,怎样快速实现多变的应用需求成为主要矛盾,这时传统的开发方式就不太容易满足要求,而且随着芯片 性能的提升和价格的降低,开发工具在芯片的选型时带来的影响也越来越大,各种快速便捷的开发方式将越来越多,几分钟就能开发一个应用将变为可能。

当然现在的Mbed也还不够完善,部分外设驱动还没有完成,支持的芯片种类也不够多,代码的执行效率也没有原生库函数高。但是它为程序的通用性、模块化开 发带来很多便利,为今后的图形化开发、积木式开发提供了可能。就像C语言取代汇编成为嵌入式主流开发语言一样,Mbed这样的开发方式也会逐渐成为嵌入式 开发的趋势。
 
 

更多Atmel及科技资讯请关注:  
Atmel中文官网:https://www.atmel.com/zh/cn/
Atmel技术论坛:https://atmel.eefocus.com/
Atmel中文博客:https://blog.sina.com.cn/u/2253031744
Atmel新浪微博:https://www.weibo.com/atmelcn

 

继续阅读
英特尔的芯片问题还没完,ARM又出安全漏洞了!

据VentureBeat报道,继承认不安全的内存漏洞会影响数以百万计的英特尔处理器后,ARM今天证实,许多Cortex系列处理器也存在漏洞。ARM的Cortex技术被用于各种各样的Android和iOS设备,以及部分Nvidia Tegra产品、高通骁龙芯片以及索尼的PlayStation Vita上。

Microchip专家访谈 —— 嵌入式系统解决物联网应用的五大核心问题

Microchip开发了一个由产品、软件和设计合作伙伴组成的生态系统,旨在解决全部五个核心功能,从而确保我们的客户成功部署IoT。对于Microchip而言,客户的成功与提供合适的半导体产品同样重要。

ARM:人工智能学习的未来是分散式AI

人工智能(AI)现在以机器学习与深度学习技术,让性能提升到更高端段,但英国半导体设计大厂安谋(ARM)指出,由于人工智能的学习仍面临网路频宽、耗电、隐私、资安等种种课题待克服,解决这些课题的方式,就是分散式人工智能(Distributed Intelligance)。

Microchip的MPLAB Harmony软件升级,不但提高了代码效率,而且还增强了图形开发工具

Microchip Technology Inc.(美国微芯科技公司)日前宣布,现在可以从Microchip网站免费下载MPLAB® Harmony 2.0——适用于PIC32单片机的全功能固件开发框架。这一屡获殊荣的软件平台经过此次重要升级,使客户能够开发出更精简、更高效的代码,让器件速度更快,更具成本效益。除了质量更好的代码,此次升级还增加了许多可在MPLAB X集成开发环境(IDE)中使用的新工具。

ARM Cortex-A55,Cortex-A57, 从端到云实现高效能

ARM Cortex-A75 和Cortex-A55,即首批基于新近发布的DynamIQ 技术的Cortex-A系列处理器。本文我们讨论的就是 Cortex-A55:一款对为未来数字世界举足轻重的处理器。

©2019 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss