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
    +关注

    关注

    147

    文章

    18605

    浏览量

    386932
  • 嵌入式
    +关注

    关注

    5186

    文章

    20146

    浏览量

    328774
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144601

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一个面向单片机、事件驱动的嵌入式开发平台介绍

    EventOS,是一个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:一是事件驱动,二是超轻量。EventOS以及其母项目EventOS,目标是开发一个企业级的嵌入式开发平台,以事件总线
    发表于 12-05 06:26

    分享一个嵌入式开发学习路线

    如果你想要学习嵌入式开发,我建议按照这个学习路线准备: 1. 基础铺垫期(1-2个月) 理解嵌入式系统的“硬件基础”和“编程入门”,能看懂简单电路,写出基础C语言代码。这一阶段的学习
    发表于 12-04 11:01

    C语言嵌入式开发中的应用

    C 语言在汽车电子控制系统开发中的主导地位。 2、设备驱动程序 设备驱动程序是嵌入式系统中连接硬件和软件的桥梁,它负责实现嵌入式系统与
    发表于 11-21 08:09

    嵌入式开发的关键点介绍

    嵌入式系统的应用非常广泛,例如:智能家居、智能手表、智能手机、智能汽车等等。嵌入式开发需要开发人员具备深入的硬件知识和编程经验,但是也有一些嵌入式开发工具
    发表于 11-13 08:12

    恩智浦如何攻克两大嵌入式开发难题

    在我们的身边,嵌入式系统无处不在。而随着技术的进步和应用的拓展,今天的嵌入式开发也面临着诸多新课题、新挑战。
    的头像 发表于 10-27 09:28 1176次阅读

    C语言入门(硬件嵌入式那种不是APP开发的)

    C语言入门(硬件嵌入式那种不是APP开发的),有没有对初学者很友好的书籍、视频等资料推荐一下,一直以来看了正dian原子、野火等的视频、文档
    发表于 09-27 12:03

    嵌入式开发就业还有前景吗?

    嵌入式的发展前景如何呢?随着科技的飞速发展,嵌入式开发在各个领域的应用越来越广泛,因此嵌入式开发的就业前景也备受关注。以下将从智能家居、医疗设备、工业控制、汽车电子、航空航天等方面,探讨嵌入式
    发表于 07-16 10:47

    嵌入式开发入门指南:从零开始学习嵌入式

    特定功能的计算机系统,广泛应用于智能家居、工业控制、医疗设备、车载系统等领域。 2. 学习嵌入式开发的前置知识熟悉C语言编程掌握基本的数据结构与算法了解数字电路与微控制器原理熟悉Linux操作系统
    发表于 05-15 09:29

    嵌入式开发:高门槛的系统性工程与 996 的行业困局

    嵌入式开发的门槛,往往被培训机构和表象所掩盖。许多人误以为 “用 C 语言写个跑在 ARM 上的程序” 就是嵌入式,实则连皮毛都未触及。真正的嵌入式
    的头像 发表于 04-09 11:06 677次阅读
    <b class='flag-5'>嵌入式开发</b>:高门槛的系统性工程与 996 的行业困局

    BlackBerry QNX推出通用嵌入式开发平台

    BlackBerry有限公司(纽交所代码:BB;多伦多证券交易所代码:BB)旗下部门QNX今日宣布推出QNX 通用嵌入式开发平台(General Embedded Development
    的头像 发表于 03-11 16:04 940次阅读

    如何成为嵌入式开发工程师?

    和使用方法。- 掌握接口标准和总线协议,如UART、SPI、I2C、CAN等。 3. 编程能力:- 精通至少一种编程语言,尤其是C/C++,因为它们是
    发表于 02-19 10:39

    为什么嵌入式驱动开发工程师可以拿高薪?

    。 这些基础知识有助于更好地理解嵌入式系统的工作原理。 2)精通编程语言: 在嵌入式开发中,C语言是最重要的编程
    发表于 01-07 16:56

    嵌入式开发必备-RK3562演示Linux常用系统查询命令(上)触觉智能出品

    实用干货!嵌入式开发学习必备-RK3562演示Linux常用系统查询命令(上)关注触觉智能持续为大家带来更多嵌入式开发内容
    的头像 发表于 12-31 10:51 117次阅读
    <b class='flag-5'>嵌入式开发</b>必备-RK3562演示Linux常用系统查询命令(上)触觉智能出品

    新手怎么学嵌入式?

    的运行机制。例如,了解数据结构中的链表、栈和队列,对于在嵌入式编程中管理数据非常有帮助。 2. 选择合适的编程语言 嵌入式开发中常用的编程语言
    发表于 12-12 10:51

    如何使用 RISC-V 进行嵌入式开发

    RISC-V指令集等因素。 安装IDE :可以选择基于Eclipse的Nuclei Studio IDE,它支持RISC-V架构的嵌入式开发
    的头像 发表于 12-11 17:32 2747次阅读