文章類型
開發平台
解決方案
關注主題
文章類型
開發平台
解決方案
關注主題

【Quark D2000入門】搞懂這四個關鍵詞,讓開發事半功倍!

作者:陸向陽

對一般電子應用嗜好的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++。

Intel ISSM軟體畫面,畫面左編可看到開發人員自己撰寫的程式碼,右邊則是程式碼反組譯後所得的組合/機器語言碼,右下為程式執行後的暫存器數值/狀態。(圖片來源:Intel)

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的專有詞。

QMSI所涵蓋的硬體,有些只有SE C1000才有,而D2000所沒有的,例如Mailbox、ARC support等;其他多數是D2000與SE C1000所共通的。(圖片來源: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),其實就是與層層通訊協定對應的收發處理、解析軟體。

Quark D2000、SE C1000、ISSM、QMSI、Zephyr等定位,本文暫不討論較細的Libs(函式庫)、TinyCrypt(加解密)、IPPM(效能)等。(圖片來源:Intel)

 

Zephyr結構示意圖,Application以下,Power/Device Management以上的四層,統稱為Comms. Stack。(圖片來源:Intel)

附帶一提的是,其實微控制器晶片中,也要有些硬體資源、硬體效能的,才能執行作業系統,硬體資源非常缺稀、硬體效能差的微控制器晶片,是沒有能力執行作業系統的,只能直接執行控制程式,這稱之為Bare Metal,是專業領域通用詞,此有機會再述。

最後還有一個誰都知道的泛用詞:範例程式碼(Sample Code),參考範例程式碼,比較有頭緒自己該如何撰寫,或者乾脆以範例程式碼為基礎進行修改等。

Intel為Quark提供多種程式碼,最入門的莫過於簡單輸出的Hello World與Blinky。(圖片來源:Intel)

了解上述四個詞後,再去瀏覽Quark官網、Quark相關說明文件,就比較能進入狀況了。

更多與Quark開發相關的軟體,如程式除錯相關的OpenOCD、省電分析Energy Analysis等。(圖片來源:Intel)

(責任編輯:賴芳如)

1:開發者板僅指電路板,但與電路板相關的尚有軟體或其他硬體配件,這一些合稱開發者套件(Developer Kit),而電路板的整體設計也被稱為開發平台(Developer Platform),但意涵相去不遠。

2IntelQuarkBSP軟體開放,放在GitHub上供人下載,可從此下載。

陸向陽

陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。
陸向陽

上一篇: | 下一篇:

468 ad

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

成城共創股份有限公司版權所有、轉載必究.Copyright(c) 2017 MakerPRO