0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

不是只有C语言可以用来搞嵌入式开发吗?

MCU开发加油站 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2021-03-04 10:03 次阅读

背景介绍

“你的下一个项目准备选用什么语言?”如果谁这样去问一个嵌入式工程师,可能会显得有点多余。不是只有C语言可以用来搞嵌入式开发吗?

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

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

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

市场需求

有需求就有市场,Arduino就是在这样的背景下诞生的。 一些新的开发者对MCU底层硬件细节并不关心,只想快速实现自己的想法和创意,Arduino通过C++对底层硬件进行层层包装,给最终用户提供了一套极为简洁的API。简洁到什么程度?只要稍微学习,中小学生都可以做出像模像样的作品。 尽管Arduino这种将硬件API化的开发方式让资深嵌入式工程师颇为“瞧不上”,它却实实在在地掀起了一阵变革的风向。无论业界巨头还是创新者,都开始幻想着能有一套较为统一的嵌入式开发方法。 Arm基于C++做了一套mbed框架,采用类似Arduino的简洁API,为多种Arm平台做了适配移植。 这都是一些较为传统的尝试,还有一些更为激进的极客开发者,觉得既然硬件操作都已经抽象为标准API了,我为什么还要受限于偏底层的C和让人无比困惑的C++?为什么不可以用我熟悉的语言去操作MCU?事实证明,这些想法并不是天方夜谭,以下仅列出部分现代语言的MCU操作框架:

Python: MicroPython

JavaScript: Espruino

Golang: TinyGo

Swift语言介绍

既然已经有各种新的尝试了,为什么又要多一个Swift?而且听到Swift,大家第一反应可能是“那不是Mac和iOS的专用语言吗?” 其实不然,Swift的创始人Chris Lattner对Swift愿景便是“统治世界” 它从最开始的设计就是要成为一门系统级编程语言,源代码全部开放,由社区主导开发进化。

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

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

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

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

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

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

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

背景雄厚,发展前景无限

综合以上特性,可以说Swift是为数不多的极其适合MCU设备的现代化语言。 另外还有一个Rust,但Rust的学习曲线极为陡峭,喜欢严厉地“虐待”开发者来保证代码的正确性,这又有悖于我们简化MCU应用层编程的初衷。 其余绝大多数现代化语言中,要么带有嵌入式中绝对不能接受的GC机制,要么为解释性语言,效率极低(即便如此,MicroPython的应用场景还是越来越丰富,说明大家对易用性的需求越来越强烈)。 相信随着时间的推移,Swift在嵌入式上的可用性会逐渐完善。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16009

    浏览量

    343527
  • 嵌入式
    +关注

    关注

    4981

    文章

    18271

    浏览量

    288319
  • C语言
    +关注

    关注

    180

    文章

    7528

    浏览量

    128339

原文标题:将Swift语言应用到MCU开发中(上)

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是
    发表于 04-07 16:03

    如何成为一名嵌入式C语言高手?

    如何成为一名嵌入式C语言高手? 嵌入式系统是当今科技领域的核心,而C语言则是
    发表于 03-25 14:12

    嵌入式人工智能的就业方向有哪些?

    的发展方向有很多,门槛高低不一样。下面给大家列举一些相应岗位所需具备的技能: 一:嵌入式Linux,C语言开发工程师,Linux软件开发工程
    发表于 02-26 10:17

    嵌入式自学好书推荐

    科技的发展和市场的扩大,嵌入式系统在未来仍将是一个重要的方向。 嵌入式开发的薪资待遇也较为优厚,工作时间相对前端和Java开发较少,且享有五险一金。对于应届生来说,一般薪资在6-8k;具备1-2年
    发表于 01-11 15:13

    嵌入式开发常见的C语言技巧与方法分享

    嵌入式开发中,常常要操作寄存器,对寄存器进行写入,读出等等操作。每个寄存器都有自己固有的地址,通过C语言访问这些地址就变得尤为重要。
    的头像 发表于 12-26 09:55 241次阅读

    嵌入式开发学习的十三法则分享

    嵌入式开发学习是一个不断积累和总结的过程,来自一个嵌入式开发高级工程师为我们总结的关于嵌入式开发学习的十三法则,大家不妨参考一下: 一、冗余度法则 在嵌入式系统具有足够的冗余度
    发表于 12-21 06:32

    嵌入式开发C语言中的uint8_t科普

    嵌入式开发中的C语言代码中,经常可以看到类似uint8_t、uint16_t、uint32_t、uint64_t这种数据类型,在教材中却从来没见过。
    的头像 发表于 12-13 16:30 1192次阅读
    <b class='flag-5'>嵌入式开发</b>C<b class='flag-5'>语言</b>中的uint8_t科普

    c语言嵌入式开发

    电子发烧友网站提供《c语言嵌入式开发.zip》资料免费下载
    发表于 11-17 14:11 2次下载
    c<b class='flag-5'>语言</b><b class='flag-5'>嵌入式开发</b>

    嵌入式软件开发常用工具有哪些?

    ::Blocks是一个开源的、跨平台的集成开发环境(IDE),支持C/C++等语言开发,并且可以
    发表于 11-10 11:03

    如何成为一名优秀的嵌入式工程师?

    来分配和释放内存。同时,也需要理解指针的概念及用法,以及指针在内存管理中的作用。 2.掌握指针:指针是C语言的一个重要特性,它允许你直接操作内存。理解指针的概念和用法对于嵌入式开发非常重要,你
    发表于 11-07 15:36

    Linux系统的嵌入式开发是什么

    嵌入式开发听起来很高大上,但其实它就在我们身边。   嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家居等。   随着物联网时代的到来,嵌入式开
    的头像 发表于 10-12 15:40 1023次阅读

    STM32嵌入式开发中的RTOS,你用过哪些?

    STM32嵌入式开发中的RTOS,你用过哪些?
    的头像 发表于 09-18 16:21 816次阅读
    STM32<b class='flag-5'>嵌入式开发</b>中的RTOS,你用过哪些?

    什么人适合学习嵌入式开发

    ,所以学习嵌入式开发必须具备一定的C语言基础。 其次,女生适不适合加入嵌入式行列呢?那是一定的,现在嵌入式这一领域还处于人才缺口相当大的现状
    发表于 06-07 15:55

    嵌入式开发成本高的原因有哪些

    这里先问下大家:你觉得嵌入式开发成本高吗? 答案:是的,对于普通人来说,很高。当然,部分富豪除外。 下面给大家罗列一下嵌入式开发成本高的几点原因。
    的头像 发表于 06-02 10:24 606次阅读
    <b class='flag-5'>嵌入式开发</b>成本高的原因有哪些

    嵌入式用什么语言编程?

    具有高级语言的易编程性,具代表性的应用就是UNIX操作系统,从20世纪80年代中期C语言涉足实时系统之后,就受到了普遍的欢迎,是目前使用广泛的嵌入式系统编程
    发表于 05-18 10:08