項目框架
原生Swift編譯器是不支持生成Cortex-M機器指令的,但得益于LLVM框架的模塊化架構,僅需少許Hack即可為其添加一個現成的Cortex-M后端。
得到了Cortex-M平臺的機器指令后,代碼實際已經可以在該平臺上運行,但這樣的空中樓閣用處并不大,Swift的很多高級特性還是需要底層基礎庫(libc, libstdc++)和基礎算法(比如堆的管理,線程的管理)來支持。
在實踐中,我們沒有選擇自己去實現所有的細節,而是選擇了Zephyr這個新興的RTOS來做底層支撐。下面逐層來介紹項目的框架。
硬件平臺
我們的項目是一個更關注應用層開發的創意實現平臺,開發者當然不能受到硬件性能的局限。因此我們選擇了全球性能最強,性價比也極高的NXP i.MX RT系列MCU作為第一款開發板芯片,其核心參數如下圖:
另外,我們外掛了32M SDRAM和16M Hyper Flash,板載DAPLink下載器,板載microSD讀卡器。這樣的硬件性能,在MCU界可以算是“頂配”了。排母外側引出了所有常用的外設,包括一組攝像頭接口,排母內側還有完整的RGB信號輸出,無論是做熱門的視覺項目或者GUI項目,硬件性能上是有充分保障的。
下面是該模組的引腳配置圖:
Zephyr RTOS
在嵌入式底層的硬件世界,碎片化的現狀還將持續相當長的一段時間,我們沒有必要與各家芯片廠的原生API甚至寄存器較勁。“計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決”,我們的解決方案便是選用了一款兼容并包,前景無限的RTOS—Zephyr
Zephyr項目是一個采用Apache 2.0協議許可,Linux基金會托管的開源RTOS項目,于2019年4月份發布了第一個長期維護版本v1.14.0。
RTOS有上百種,為什么選擇了Zephyr這個新興的RTOS?
跨架構,良好適應嵌入式底層硬件的碎片化。到目前為止,Zephyr一共可以支持6種架構:X86架構、ARC架構、ARM架構、NIOS II 架構、RISC V架構和Xtensa架構
純C語言編寫,代碼框架與Linux框架類似,統一的設備驅動模型為上層提供了一致的API接口
兼容POSIX標準,很容易為Swift的多線程提供底層支持
不僅僅是一個RTOS,承諾了各種軟件協議棧的持續加入及其可用性
巨頭的站臺及活躍的社區熱度,保障了項目的持續性與前景會越來越好
恩智浦i.MX RT系列芯片在Zephyr上得到了NXP官方的支持,很容易便可以將各種驅動直接拿來使用。
SwiftIO
因為有了Zephyr的支持,這一層反倒變得比較簡單。
Swift可以與C無縫銜接,我們所做的僅僅是將Zephyr驅動,API用C語言打包封裝,然后套上一層Swift的外殼,僅僅是簡單的調用關系,沒有任何復雜的戲法。
我們給這一層API框架取名為SwiftIO。
至此,開發者僅需在代碼里import SwiftIO(類似C語言的#include),便可以利用其中的API來方便的操作底層硬件了。
詳細的API列表可在以下站點獲得:(依然在不斷地更新中)
https://madmachineio.github.io/SwiftIO/
項目現狀
到目前為止,該項目的Alpha版本已經進行了內部測試,預計于11月發出第一版公測硬件。
-
SWIFT
+關注
關注
0文章
112瀏覽量
23788 -
Cortex-M3
+關注
關注
9文章
269瀏覽量
59433
發布評論請先 登錄
相關推薦
評論