背景介紹
“你的下一個(gè)項(xiàng)目準(zhǔn)備選用什么語言?”如果誰這樣去問一個(gè)嵌入式工程師,可能會(huì)顯得有點(diǎn)多余。不是只有C語言可以用來搞嵌入式開發(fā)嗎?
差不多十多年前,情況的確是這樣。那時(shí)候還沒有一個(gè)像ARM Cortex-M這樣能占據(jù)半壁江山的統(tǒng)一核心,嵌入式處理器碎片化極為嚴(yán)重。絕大多數(shù)MCU本身性能不高,各種資源都比較有限,業(yè)務(wù)模型通常也比較簡單,連RTOS都用不上,直接裸奔即可解決大部分業(yè)務(wù)邏輯,嵌入式工程師絕大多數(shù)時(shí)間都在跟原廠的底層驅(qū)動(dòng)作斗爭。也只有C這樣接近底層,各種編譯鏈極其完善的語言才能得到所有人的認(rèn)可。
隨著ARM Cortex-M核的MCU逐漸占據(jù)市場主導(dǎo)地位, MCU的性能逐漸追上了90年代中后期的通用CPU,使用原廠提供的API來進(jìn)行開發(fā),逐漸取代了寄存器開發(fā)方式,而底層硬件的操作變得大同小異。
最近幾年,隨著物聯(lián)網(wǎng)、IOT、AI這些概念越來越火熱,MCU的業(yè)務(wù)模型也開始變得越來越復(fù)雜,各種通信協(xié)議棧被塞了進(jìn)去,各種復(fù)雜算法被塞了進(jìn)去,越來越多非EE出身的程序員、DIY愛好者也開始進(jìn)入嵌入式開發(fā)領(lǐng)域。
市場需求
有需求就有市場,Arduino就是在這樣的背景下誕生的。 一些新的開發(fā)者對(duì)MCU底層硬件細(xì)節(jié)并不關(guān)心,只想快速實(shí)現(xiàn)自己的想法和創(chuàng)意,Arduino通過C++對(duì)底層硬件進(jìn)行層層包裝,給最終用戶提供了一套極為簡潔的API。簡潔到什么程度?只要稍微學(xué)習(xí),中小學(xué)生都可以做出像模像樣的作品。 盡管Arduino這種將硬件API化的開發(fā)方式讓資深嵌入式工程師頗為“瞧不上”,它卻實(shí)實(shí)在在地掀起了一陣變革的風(fēng)向。無論業(yè)界巨頭還是創(chuàng)新者,都開始幻想著能有一套較為統(tǒng)一的嵌入式開發(fā)方法。 Arm基于C++做了一套mbed框架,采用類似Arduino的簡潔API,為多種Arm平臺(tái)做了適配移植。 這都是一些較為傳統(tǒng)的嘗試,還有一些更為激進(jìn)的極客開發(fā)者,覺得既然硬件操作都已經(jīng)抽象為標(biāo)準(zhǔn)API了,我為什么還要受限于偏底層的C和讓人無比困惑的C++?為什么不可以用我熟悉的語言去操作MCU?事實(shí)證明,這些想法并不是天方夜譚,以下僅列出部分現(xiàn)代語言的MCU操作框架:
Python: MicroPython
JavaScript: Espruino
Golang: TinyGo
Swift語言介紹
既然已經(jīng)有各種新的嘗試了,為什么又要多一個(gè)Swift?而且聽到Swift,大家第一反應(yīng)可能是“那不是Mac和iOS的專用語言嗎?” 其實(shí)不然,Swift的創(chuàng)始人Chris Lattner對(duì)Swift愿景便是“統(tǒng)治世界” 它從最開始的設(shè)計(jì)就是要成為一門系統(tǒng)級(jí)編程語言,源代碼全部開放,由社區(qū)主導(dǎo)開發(fā)進(jìn)化。
以下僅列出一些Swift的特性:
Swift公布于2014年,極為年輕,無歷史包袱,廣泛吸收了近年各種編程語言的優(yōu)勢
純編譯型靜態(tài)語言,無GC機(jī)制,這是實(shí)時(shí)系統(tǒng)的必要條件
支持系統(tǒng)級(jí)開發(fā),直接生成對(duì)應(yīng)機(jī)器碼,使用ARC機(jī)制來實(shí)現(xiàn)內(nèi)存管理,通過一個(gè)較小的開銷來降低開發(fā)者的心智負(fù)擔(dān)
代碼范式多樣,支持面向?qū)ο螅嫦騾f(xié)議,函數(shù)式編程
學(xué)習(xí)曲線平滑,可作為初學(xué)者的第一門編程語言
語法優(yōu)雅,適合各種挑剔的程序員
背景雄厚,發(fā)展前景無限
綜合以上特性,可以說Swift是為數(shù)不多的極其適合MCU設(shè)備的現(xiàn)代化語言。 另外還有一個(gè)Rust,但Rust的學(xué)習(xí)曲線極為陡峭,喜歡嚴(yán)厲地“虐待”開發(fā)者來保證代碼的正確性,這又有悖于我們簡化MCU應(yīng)用層編程的初衷。 其余絕大多數(shù)現(xiàn)代化語言中,要么帶有嵌入式中絕對(duì)不能接受的GC機(jī)制,要么為解釋性語言,效率極低(即便如此,MicroPython的應(yīng)用場景還是越來越豐富,說明大家對(duì)易用性的需求越來越強(qiáng)烈)。 相信隨著時(shí)間的推移,Swift在嵌入式上的可用性會(huì)逐漸完善。
責(zé)任編輯:lq
-
mcu
+關(guān)注
關(guān)注
147文章
18925瀏覽量
398154 -
嵌入式
+關(guān)注
關(guān)注
5198文章
20449瀏覽量
334048 -
C語言
+關(guān)注
關(guān)注
183文章
7644瀏覽量
145598
原文標(biāo)題:將Swift語言應(yīng)用到MCU開發(fā)中(上)
文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
嵌入式開發(fā)常用函數(shù)速查表
什么是嵌入式應(yīng)用開發(fā)?
C語言單元測試在嵌入式軟件開發(fā)中的作用及專業(yè)工具的應(yīng)用
一個(gè)面向單片機(jī)、事件驅(qū)動(dòng)的嵌入式開發(fā)平臺(tái)介紹
分享一個(gè)嵌入式開發(fā)學(xué)習(xí)路線
C語言在嵌入式開發(fā)中的應(yīng)用
嵌入式開發(fā)的關(guān)鍵點(diǎn)介紹
恩智浦如何攻克兩大嵌入式開發(fā)難題
C語言入門(硬件嵌入式那種不是APP開發(fā)的)
新一代嵌入式開發(fā)平臺(tái) AMD嵌入式軟件和工具2025.1版現(xiàn)已推出
嵌入式開發(fā)就業(yè)還有前景嗎?
嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式
嵌入式開發(fā):高門檻的系統(tǒng)性工程與 996 的行業(yè)困局
不是只有C語言可以用來搞嵌入式開發(fā)嗎?
評(píng)論