作者:陸向陽
對一般電子應用嗜好的Maker而言,可能已很熟悉Arduino、Raspberry Pi,只要依據一些教學示範撰寫幾行程式,操作IDE當中的幾個選單步驟,就可以看到燈亮、聲響、東西動,很有成就感。
不過,對於專業的電子控制產品開發來說,可就沒有這麼簡單了。以Intel Quark D2000為例,就是針對專業開發者提供,因此若使用者過往只接觸過Arduino、Raspberry Pi的話,在學習摸索上有很高的難度,很有可能搞不清楚什麼是什麼,甚至可說是從零重新開始。
因此,筆者嘗試先解釋與Quark D2000程式開發相關的四個名詞,大家對這幾個詞有些了解後,再來接觸摸索Quark D2000,應該能更快進入狀況。
1. BSP
Intel Quark D2000是一顆微控制器(Microcontroller Unit, MCU)晶片,但只有晶片其實不好試製其應用電路、控制電路,所以會以晶片為基礎、為核心設計出一片開發者板(Developer Board,註1),開發者對開發者板進行接線,就可以快速、容易地試行與驗證控制電路。
但是只有開發板是不夠的,開發板能開機,其實是要有開機載入程式(Boot Loader)的。而除了主控晶片(這裡是指Quark D2000)外,板子尚也可能放有其他與主控晶片連接的晶片,或相關的硬體電路設計等,這些主控晶片外的晶片與電路,若想要能驅動與操控,還需要配套的驅動程式(Driver)。另還有一些操控板子所需的工具程式(Utility)等。
與開發板相關的各種軟體(也包含韌體,已燒在板子上的晶片內),就統稱為Board Support Package(BSP),其實就是指一整掛與這片開發板相關的韌軟體。
若根據維基百科,BSP這個詞起源自1981年,但時至今日已是電子產業專業開發領域的常用詞,當一個專業的開發設計人員拿到一片新的系統開發板時,通常會順便問:這片板子的BSP(附帶相關軟體)呢?
值得一提的是,BSP軟體通常是開發板廠商(有時就是晶片商本身,有時則是晶片商的協力業者)自己開發完成後隨板子一同附上的;專業的BSP軟體通常是封閉原始程式碼的,因為撰寫得相當好,可以完全發揮硬體功效,具有商業競爭力。
然而隨著Maker風氣興起,有些晶片商也開始推出開放原始程式碼的BSP,Quark D2000所附的即是(註2),但是,為了保有商業競爭力,晶片商所開放原始程式碼的BSP,只是讓硬體能正常動作,通常不會達最佳化(優化)運作的水準。
2. ISSM/IDE
已經使用過Arduino的人,可能知道開發Arduino控制應用程式(也稱為Sketch)的軟體叫做Arduino IDE,而IDE指的是整合開發環境,這個詞筆者過去解釋過,請參考此篇文章。IDE跟前述的BSP一樣,是專業開發領域常見的廣泛通詞。
如果說,開發Arduino用的控制程式,其軟體開發工具、開發環境稱為Arduino IDE,那麼,用來開發Intel Quark D2000、Quark SE C1000用的控制程式,其軟體開發工具、開發環境則為ISSM,即Intel System Studio for Microcontroller。
老實說,ISSM並不是Intel從無到有100%自己開發的,而是以開放原始程式碼專案「Eclipse」(日蝕)為基礎所修改、衍生開發成;過往有專業程式學習、撰寫經驗者,通常已接觸過Eclipse,特別是Java程式語言學習時。Quark D2000/SE C1000的控制程式撰寫需使用ISSM開發環境,而使用的程式語言則為C/C++。
IDE通常是開發時的主工具,透過這個工具來開發程式,但實際上業者通常在此工具之外,也隨附其他與開發相關的軟體,如此整個含括來說,會統稱為工具鏈(Toolchain)或軟體開發套件(Software Development Kit, SDK)。用Toolchain來統稱時,通常是這些隨附的東西比較鬆散、尚待完整或更緊密的整合;反之則稱SDK。
3. QMSI/HAL
BSP、IDE是專業領域的通用詞,ISSM則是Intel專屬的詞,再來這個詞也是Intel專屬的,即QMSI(Quark Microcontroller Software Interface)。QMSI其實是個硬體抽象層(Hardware Abstraction Layer, HAL)。
所謂抽象,其實有簡化的意思,這裡簡單譬喻一下為何要簡化。假設有一間餐廳,餐廳內有20個客桌、5個服務生、1個店經理,這個經理把每4個客桌設定給1個服務生,例如桌1~桌4是由服務生A負責,桌5~桌8是服務生B的責任區,依此類推。
一旦桌5有客人抱怨,店經理就呼喊服務生B前來服務;一旦桌3有客人弄翻東西,店經理就呼喊服務生A前來服務。而服務生A/B/C/D/E這5個人,其實隨著人員加入、離職、調班、臨時工讀等,可能由不同人擔任,店經理可能也無法詳記每個人名,只要懂得桌X有狀況,對應呼叫A~E即可,A~E即是個簡稱。
程式撰寫也是如此,要程式設計師詳記每個硬體的對應位址,實在太多、太雜、太痛苦,倘若新的晶片修改了硬體位址,程式設計師就需重頭檢視過往所撰寫過的,並再逐一對應修改。
為了避免這種麻煩,Intel為晶片內的各種硬體功能,逐一給予簡稱,程式設計師只要引用這套簡稱來撰寫,也可以適用於未來的新晶片,不再需要逐一檢視修改,而這一套簡稱即是HAL,Intel為Quark D2000/SE C1000設計的HAL就稱為QMSI。HAL也是專業領域的通用詞,而QMSI是Intel的專有詞。
4. Zephyr/RTOS
大家都知道PC最常用的作業系統是Windows,Windows是一套資料處理取向的作業系統,運用微處理器(Microprocessor Unit, MPU)晶片來執行,資料處理即是指跑Word文書處理、Photoshop影像處理等應用程式。
但對微控制器晶片而言,其硬體資源、硬體效能不若微處理器晶片;且應用取向不同,並非資料處理,而是控制,控制燈號亮滅、控制馬達轉動等,而不是跑Word、Photoshop。
控制取向的作業系統,有別於資料處理的作業系統,一是要求輕巧,須在很少的硬體資源、硬體效能下也能運作;另一是要求即時反應,必須在限定的毫秒時間內完成燈號點亮,或閘門放行等,不得有延誤,否則後果嚴重,可能會發生事故,例如交通號誌控制、工廠產線控制。
相對的,資料處理取向的作業系統,追求同時間能執行很多東西,追求硬體資源與效能的最大化壓榨,執行慢一點不要緊,所以大家有時會看到Word執行緩慢、Excel也執行緩慢的情況。
所以,微控制器用的是輕巧的嵌入式(Embedded)作業系統,若還要兼顧控制反應,則要使用即時作業系統(Real-Time Operating System, RTOS)。
對於Maker而言,可能已經接觸過ESP8266,ESP8266的作業系統即是開放原始程式碼的FreeRTOS,本質上就是一套即時作業系統。
而Quark D2000/SE C1000也有其對應的即時作業系統,稱為Wind River Rocket,其實是2009年Intel購併Wind River(溫瑞爾)公司,成為下轄部門,而2015年Wind River針對嵌入式應用、物聯網應用發展出一套即時作業系統,稱為Rocket。
2016年Rocket轉交給Linux基金會接手發展,並改名為Zephyr開放專案。不僅Intel Quark D2000/SE C1000支援與使用Zephyr(或稱Zephyr OS),NXP(恩智浦)公司、Synopsys(新思科技)也支持與使用Zephyr。
所以,ESP8266晶片的即時作業系統是FreeRTOS(也是一個開放專案),Quark D2000/SE C1000的即時作業系統是Zephyr。RTOS這個詞是專業領域的通用詞,FreeRTOS、Zephyr則是專有詞。
Zephyr目前已支援多種硬體,Quark只是其一,但其實Quark未來也有機會支援多種作業系統,只是目前Intel官方只屬意Zephyr。另也因為Zephyr是為物聯網應用而發展,所以Zephyr已經內含許多通訊協定的軟體堆疊(Communication Protocol Stack, Comms. Stack),其實就是與層層通訊協定對應的收發處理、解析軟體。
附帶一提的是,其實微控制器晶片中,也要有些硬體資源、硬體效能的,才能執行作業系統,硬體資源非常缺稀、硬體效能差的微控制器晶片,是沒有能力執行作業系統的,只能直接執行控制程式,這稱之為Bare Metal,是專業領域通用詞,此有機會再述。
最後還有一個誰都知道的泛用詞:範例程式碼(Sample Code),參考範例程式碼,比較有頭緒自己該如何撰寫,或者乾脆以範例程式碼為基礎進行修改等。
了解上述四個詞後,再去瀏覽Quark官網、Quark相關說明文件,就比較能進入狀況了。
(責任編輯:賴芳如)
註1:開發者板僅指電路板,但與電路板相關的尚有軟體或其他硬體配件,這一些合稱開發者套件(Developer Kit),而電路板的整體設計也被稱為開發平台(Developer Platform),但意涵相去不遠。
註2:Intel將Quark的BSP軟體開放,放在GitHub上供人下載,可從此下載。
- Ollama官方模型分類觀察 - 2025/06/13
- COMPUTEX Taipei 2025量子技術展示觀察 - 2025/05/29
- Arduino Cloud Editor加入大語言模型幫手功能 - 2025/05/28
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!