请选择 进入手机版 | 继续访问电脑版
查看: 28|回复: 0

将Swift语言应用到MCU开发中(上)

[复制链接]
  • TA的每日心情
    开心
    2019-7-29 13:53
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    453

    主题

    1357

    帖子

    0

    金豆

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3992
    最后登录
    2019-8-20
    发表于 5 天前 | 显示全部楼层 |阅读模式
    背景介绍


    “你的下一个项目准备选用什么语言?”如果谁这样去问一个嵌入式工程师,可能会显得有点多余。不是只有C语言可以用来搞嵌入式开发吗?
    差不多十多年前,情况的确是这样。那时候还没有一个像ARM Cortex-M这样能占据半壁江山的统一核心,嵌入式处理器碎片化极为严重。绝大多数MCU本身性能不高,各种资源都比较有限,业务模型通常也比较简单,连RTOS都用不上,直接裸奔即可解决大部分业务逻辑,嵌入式工程师绝大多数时间都在跟原厂的底层驱动作斗争。也只有C这样接近底层,各种编译链极其完善的语言才能得到所有人的认可。


    随着ARM Cortex-M核的MCU逐渐占据市场主导地位, MCU的性能逐渐追上了90年代中后期的通用CPU,使用原厂提供的API来进行开发,逐渐取代了寄存器开发方式,而底层硬件的操作变得大同小异。


    最近几年,随着物联网、IOT、AI这些概念越来越火热,MCU的业务模型也开始变得越来越复杂,各种通信协议栈被塞了进去,各种复杂算法被塞了进去,越来越多非EE出身的程序员、DIY爱好者也开始进入嵌入式开发领域。


    市场需求


    有需求就有市场,Arduino就是在这样的背景下诞生的。


    一些新的开发者对MCU底层硬件细节并不关心,只想快速实现自己的想法和创意,Arduino通过C++对底层硬件进行层层包装,给最终用户提供了一套极为简洁的API。简洁到什么程度?只要稍微学习,中小学生都可以做出像模像样的作品。


    尽管Arduino这种将硬件API化的开发方式让资深嵌入式工程师颇为“瞧不上”,它却实实在在地掀起了一阵变革的风向。无论业界巨头还是创新者,都开始幻想着能有一套较为统一的嵌入式开发方法。


    Arm基于C++做了一套mbed框架,采用类似Arduino的简洁API,为多种Arm平台做了适配移植。


    这都是一些较为传统的尝试,还有一些更为激进的极客开发者,觉得既然硬件操作都已经抽象为标准API了,我为什么还要受限于偏底层的C和让人无比困惑的C++?为什么不可以用我熟悉的语言去操作MCU?事实证明,这些想法并不是天方夜谭,以下仅列出部分现代语言的MCU操作框架:
    32.png
    Python: MicroPython
    33.png
    JavaScript: Espruino
    34.png
    Golang: TinyGo


    Swift语言介绍
    35.png
    既然已经有各种新的尝试了,为什么又要多一个Swift?而且听到Swift,大家第一反应可能是“那不是Mac和iOS的专用语言吗?”


    其实不然,Swift的创始人Chris Lattner对Swift愿景便是“统治世界”


    它从最开始的设计就是要成为一门系统级编程语言,源代码全部开放,由社区主导开发进化。


    以下仅列出一些Swift的特性:


    Swift公布于2014年,极为年轻,无历史包袱,广泛吸收了近年各种编程语言的优势


    纯编译型静态语言,无GC机制,这是实时系统的必要条件


    支持系统级开发,直接生成对应机器码,使用ARC机制来实现内存管理,通过一个较小的开销来降低开发者的心智负担


    代码范式多样,支持面向对象,面向协议,函数式编程


    学习曲线平滑,可作为初学者的第一门编程语言


    语法优雅,适合各种挑剔的程序员


    背景雄厚,发展前景无限


    综合以上特性,可以说Swift是为数不多的极其适合MCU设备的现代化语言。


    另外还有一个Rust,但Rust的学习曲线极为陡峭,喜欢严厉地“虐待”开发者来保证代码的正确性,这又有悖于我们简化MCU应用层编程的初衷。


    其余绝大多数现代化语言中,要么带有嵌入式中绝对不能接受的GC机制,要么为解释性语言,效率极低(即便如此,MicroPython的应用场景还是越来越丰富,说明大家对易用性的需求越来越强烈)。


    相信随着时间的推移,Swift在嵌入式上的可用性会逐渐完善。

    下期预告

    恩智浦的i.MX RT系列,已经把Cortex-M为核心的MCU的性能提高到了很高的水平,可以允许在她上面开发更高级的编程语言。

    本文下期将介绍在i.MX RT1050上实现的对Swift语言支持的软硬件框架,并将预告公测的计划。




    作者:刘鹏                  文章出处:恩智浦MCU加油站

    今天天气不错!签到!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|恩智浦技术社区

    GMT+8, 2019-8-20 13:31 , Processed in 0.060445 second(s), 13 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表