微控制器入門: 程式設計語言與軟體開發環境

LET′S TRY“嵌入式系統編程”: 6之3

正如您可能已經知道的,此「微控制器簡介」系列介紹一些任何想成為嵌入式系統技術專家者皆已熟知的基本概念。這些概念同時適用於系統實作的軟硬體。
在前兩個部分,我們探討了微控制器的硬體。現在我們要探討程式設計語言與軟體開發環境。

機器語言:您的CPU瞭解的唯一語言

微控制器的CPU從記憶體讀取程式碼,每次讀取一個指令,解碼各個指令,然後執行指令。所有記憶體內容,包括程式碼與資料,皆使用二進位格式:1與0構成的字串。指令是告訴CPU做什麼的二進位碼;而資料值是二進位(數字)值,CPU加、減這些值或處理為位址值,或依據指令執行或處理這些值。

以下圖1左側顯示將數值2載入至暫存器A的機器語言指令 (暫存器是位於CPU內部的儲存位置)。

CPU從記憶體讀取這些指令碼。CPU從連續的記憶體位址依序讀取指令,除非指令要求跳躍。例如,假設指令記憶體空間從位址0000開始,那麼在重置之後,CPU將先取得並執行儲存於此位址的指令。它將繼續進行(除非另有指示)以取得並執行來自位址0001、0002、0003等指令。換言之,程式是描述將執行之運算順序的一連串機器語言指令。

機器語言是CPU瞭解的唯一語言。因此,為了驅動CPU,您必須向它提供機器語言程式。

但是,人類程式設計師發現要使用以任意順序的1與0組成的指令,是一件很困難的事。程式設計師必須以此種低階方式設計程式,因此使用組合語言來代替,組合語言利用有意義的文字字串取代任意的二進位字串。以下圖1右側顯示與左側機器語言指令相對應的組合語言指令。

機器語言指令

0 1 0 1 0 0 0 1
0 0 0 0 0 0 1 0

arrow

 

組合語言

MOV A,#02

 

圖1:執行相同運算的組合語言與機器語言表示法

雖然組合語言(對人類而言)顯然比機器語言可行,但是它仍然是相當冗長、非直覺且不易使用。另一個問題是,機器語言的實作在各CPU類型上都是不同的。由於組合碼緊密對映至機器碼,因此組合語言程式設計師在每次變更CPU類型時皆必須重寫程式碼(以上範例為瑞薩的RL78系列MCU)。持續重寫的需求將嚴重降低程式設計師的生產力與工作滿意度。

C程式設計語言:更好的程式設計方式

使用更高階的程式設計語言,例如C,可解決上述問題。以C撰寫的程式具有相當高的可攜性,因為這些程式通常無需修改即可執行於任何CPU類型。C語言程式(對人類而言)也比較容易讀寫,因為它比較精簡並使用更具有描述性的一組英文字與縮寫。圖2 顯示C程式碼與組合碼在相同運算上的差異。

圖2:以組合語言及C語言撰寫的相同運算

圖2:以組合語言及C語言撰寫的相同運算

雖然人們發現C程式碼比較容易使用,但是CPU不瞭解它。因此必須將C程式碼(原始碼)轉換為CPU可使用的機器碼(目的碼)。此轉換是由稱為編譯器的程式所執行。接著必須將產生的目的碼寫入至適當的記憶體位置,以便由CPU執行。

由於現代程式都相當複雜,常見的做法是將程式設計工作區分為多個C程式。將這些程式編譯為物件檔之後,必須將這些物件一併連結至單一機器語言程式。上述連結作業是由稱為連結器的程式所執行。

除錯器:發現並修正錯誤

因為所有人類都可能犯錯,人類撰寫的程式也經常包含錯誤(缺陷或瑕疵)。因此,人類還創造了其他程式,稱為除錯器,可協助發現並修正上述錯誤。以下是可用的各種除錯器類型。


In-Circuit Emulator (ICE):
專屬的評估晶片,安裝用於取代實際的MCU,協助程式碼的除錯工作,以準備將程式碼用於實際的MCU。請注意,「in-circuit emulator」是Intel公司的註冊商標。瑞薩的ICE稱為「完整規格模擬器」(full-spec emulator)。
JTAG模擬器:
內建於MCU的除錯電路。此類型的除錯成本低於ICE除錯,因為可在MCU上直接執行除錯。瑞薩的實作稱為「晶片內建除錯模擬器」(on-chip debugging emulator)。
除錯監視器:
與將執行除錯的程式一併執行於MCU的除錯軟體,並與執行除錯工作的電腦進行通訊。由於MCU除了執行目標程式之外還必須執行除錯監視器,相較於ICE與JTAG的方式,其功能更為受限且執行速度較慢。但是,它的優點是成本更低。

整合開發環境

工程師在開發MCU軟體時通常會使用各種軟體工具,包括但不限於上述的編譯器、連結器及除錯器。過去這些工具都是以獨立程式提供;工程師視需要從命令提示字元或批次程序執行這些工具。但近年來,工程師可改為使用整合開發環境(IDE):包含整組工具的單一套件,所有工具皆可從通用的Renesas CS+執行。

例如,CS+是適用於RL78系列MCU的IDE,其設計可提供穩定性與易用性。CS+提供多種可輕鬆操作的功能,大幅提升軟體開發工作的效率。


* 瑞薩整合開發環境CubeSuite+已自2014年10月1日所推出的V3.00.00版本起改名為CS+。

* 本文內容於2015年3月30日更新。

我們將在本系列文章的第4部分探討MCU硬體控制的基礎知識。