主要是被它使用C/C++开发所吸引, 又有强大的ARM作技术垫底, 个人觉得这个系统会比较适合性能较强的MCU开发吧。 当然它目前面向的是有限个的评估开发板, 一些硬件层面上的接口已经做了适应性的封装。 恰巧手头上有一块DISCO_F769NI,话不多说,开撸。
ARM Mbed OS支持多种工具链(toolchain)编译。
ARM Compiler. 对于Mbed OS 5.15,对编译器的最低要求版本是:V6.11或以上。这里坑比较多,尝试过 V6.7和V6.10.1均无法正常运作OS. 主要表现为link警告, 烧录之后程序无法正常运作。
GCC_ARM. 最大特点是开源免费。跟前者的不足在于:
IAR, uARM. 不大了解. 望读者补充
分别使用ARM Compiler V6.13.1和GCC_ARM编译器,对mbed-os-example-blinky项目进行编译,对比如下:
ARM Compiler V6.13.1 | GCC_ARM | |
---|---|---|
编译时长 | ≤ \leq ≤ 7min | ≤ \leq ≤ 12min |
.bin大小 | 52KB | 62KB |
警告数 | 24 | 53 |
注意, 使用旧版编译器(6.11以下)会出现数个链接警告, 烧录后无法正常运行! 主要表现为线程延时不准确, 程序莫名中断等等诡异现象.
这是一个使用Python开发的Command line Interface, 集合了项目管理, 远程库导入, 导出IDE项目文件, 使用外部工具链编译Mbed OS项目的辅助工具.
可以粗略地说, 它是一个Git的超集.
mbed new .
或
mbed import https://github.com/ARMmbed/mbed-os-example-blinky.git
注意后者会把mbed-os项目导入, 如果你已经下载了os, 这是不必要.
你可以使用git直接clone, 或者查询具体参数, 通用帮助格式:
mbed import -h
mbed export -i IDE -t BOARD
mbed export -S //查询支持的IDE和board
MDK-SDK 开发者需要注意, 对于OS V5.15, IDE需要选择uvision6才可以哦.
首先, 你要配置工具链的路径.
mbed config -G ARM_PATH C:\Keil_v5\ARM\ARMCC
\\对于V6编译器, 精确到的bin是必须的
mbed config -G ARMC6_PATH C:\Keil_v5\ARM\ARMCLANG\bin
mbed config -G ARMC6_PATH C:\Keil_v5\ARM\ARMCLANG\bin
mbed config -G GCC_ARM_PATH C:\GCC_ARM\安装目录\bin
带-G
是指配置全局参数.
这里两个必要的概念:
想查询mbed-OS支持哪些主流开发板和工具链, 可以:
mbed compile -S
如果项目目录下有os目录以及程序文件, 那么最简单的指令:
mbed compile -t ARM -m DISCO_F769NI
一般情况下, 我不喜欢把一个几百MB且零零碎碎的mbed-os复制来复制去, 所以更为科学的操作是:
mbed compile -t ARM -m DISCO_F769NI --source ./ --source ../mbed-os
如果不给定--build
参数, 会在当前项目目录下创建BUILD目录, 编译+链接后的程序以.bin
形式保存其中, 你可以使用烧录工具(STM32 STLINK Utility) 进行烧录.
如果编译使用的工具链比较固定的话, 可以这样设定全局参数:
mbed config -G TOOLCHAIN ARM
而对于嵌入式程序而言, 不同的项目可能会被烧录到不同的板子上, 你可以设定针对项目的配置参数:
mbed config TARGET DISCO_F769NI
更多配置可以参考Mbed CLI Configuration options