CMSIS框架
【mbed OS API 给开发者提供的功能】
1. Hardware inputs and outputs: analog, digital, bus, port, PwmOut and interrupts.
2. Digital interfaces and USB: serial, SPI, I2C, CAN and USB.
3. Networking and communication: network stack, BLE, Ethernet, WiFi and radio.
4. Device and networking security: mbed uVisor and mbed TLS.
5. Task management: timers and RTOS(基于CMSIS-RTOS API).
【mbed 提供的在线开发工具online IDE】
ARM为mbed OS开发者提供一套基于云计算的在线网页编译工具,可以在Windows、Linux、Mac等各种可以网页浏览的设备上进行编程。所以不需要安装调试工具,只要选好指定的开发板,就立即可以进行编程,编译后直接生成一个bin文件,直接烧写到设备即可运行。
其主要功能如下:
(1)代码编辑,包括语法高亮显示,快捷键,撤消/重做,剪切/复制/粘贴,标签,块/行注释,代码格式化等;
(2)版本控制,包括代码提交,对比,回溯,分支和合并等功能;
(3)代码导入,支持用户导入各种mBed库及应用程序用于修改开发;
(4)代码编译,在线工具默认使用ARM RVDS 进行编译,用户可以支持查看编译后flash和ram的使用情况,其编译后的二进制在使用上没有任何显示;
(5)导出代码,用户可以把在线工程导出到各类离线编译工具,包括Keil,GCC,IAR等,在导出文件中,mBed库是作为二进制文件提供的,用户代码则还是源代码方式。
缺点:不具备Debug功能,不能离线编辑。可以使用Command Line Tool(mbed CLI)或者第三方IDE。虽然不能使用在线IDE进行Debug, 但是由于支持第三方IDE,我通常将项目导出为µVision5工具链,使用Keil_uVision5打开和调试程序。
【mbed library的层次结构】
其中对应在代码目录里有:
1. 三个与MCU无关层(MCU independent directories):
mbed/api: 包含定义了实际的mbed library API的头文件
mbed/common: 源文件(mbed common sources)
mbed/hal: 包含了目标MCU需要实现的硬件抽象层接口(HAL API)
2. 两个与MCU相关层(MCU dependent directories):
mbed/targets/hal: 针对不同MCU,实现HAL接口
mbed/targets/cmsis: CMSIS-CORE 源文件
【mbed OS分层结构】
mbed OS分层结构
上图是mbed OS的分层结构,我认为不必要过多的解读它的结构,主要是我们可以看到mbed OS所提供的具有物联网需求的功能和协议,包括6LoWPAN,Web 传输受限制的应用协议(CoAP) 和超文本传输协议 (HTTP),用于机器对机器 (M2M) 连接的消息队列遥测传输 (MQTT),密码协议传输层安全协议 (TLS) ,数据包传输层安全性协议 (DTLS),开放移动联盟轻量级 M2M (OMALWM2M) 标准。开发人员的工作量将会大量减轻,从而可以专注于编写尤其适用于 mbed OS 内核顶层的安全和通信协议的代码。