當前位置:才華齋>計算機>C語言>

微控制器的程式語言和開發環境

C語言 閱讀(1.75W)

導語:在《嵌入式程式設計之微控制器的基本構成、工作原理》和《嵌入式程式設計之微控制器的外圍功能電路》我們介紹了微控制器硬體方面的知識。本文將介紹微控制器的開發環境和程式語言。

微控制器的程式語言和開發環境

  CPU懂的機器語言

微控制器的CPU從儲存器讀取程式,但是一次只能讀取一條指令,然後解釋每條指令,並執行。儲存器中儲存的內容,不管是程式還是資料,都是二進位制程式碼“0”和“1”組成的字串。指令二進位制程式碼告訴CPU要做什麼,而資料二進位制程式碼則是CPU操作或處理指令時要使用的值。CPU的操作包含加、減運算等指令。這些像密碼一樣排列的“0”和“1”字串就是機器語言。比如圖1左邊顯示的就是一個機器語言指令,意思是“將2放入暫存器A(暫存器是CPU內部的儲存區域)。

CPU總是按儲存器地址的順序讀取指令程式碼,除非遇到跳躍指令。例如,如果復位後的地址是0000,則從0000開始按0001、0002、0003的順序讀取並執行指令。也可以說,一個程式就是按處理要求排列一系列的機器語言。

CPU只能理解如上所述的機器語言。因此,為了使CPU執行,就必須使用機器語言的程式。但是,機器語言不易為人們識別和讀寫。因此,人們用了更簡單易懂的字串來代替機器語言,這就是組合語言。例如,在“給暫存器A賦值2”這樣的處理時,如果用匯編語言來表示,就很簡單,請看圖1的右邊部分。組合語言中,用MOV字串表示賦值,所以“給暫存器A賦值2”的處理就可用“MOV A,#02”表示。

  圖1:機器語言和組合語言的比較

雖然組合語言比機器語言更加簡單易懂了,但是人們讀起來還是挺難理解的。而且,組合語言還存在另一個問題,就是不同的CPU,機器語言的描述方式也不同。因此,如果更換了CPU,就必須改寫與機器語言有著密不可分關係的組合語言,工作量比較大。(以上例子中的機器語言和組合語言均為瑞薩的RL78族微控制器中的語言。)

如上所述,每更換一次CPU都必須對程式進行改編,不但造成生產性低下,還加重了程式設計人員的負擔。

  人性化的C語言

能夠解決上述問題的程式語言就是C語言。C語言具有不依存於特定的CPU,又具有程式移植性高等的特點。另外,由於程式設計時可使用人們熟悉的英文單詞,所以對程式設計人員來說C語言是最容易使用的程式語言。下面我們將C語言和組合語言做一個簡單地比較。(圖2)

  圖2: 組合語言和C語言的比較

雖然C語言不依存於CPU而且還是人們最容易使用的程式語言,但對於CPU來說,C語言卻是一種完全無法理解的語言。因此,就需要一種可以將C語言翻譯為機器語言的軟體,這就是被稱為編譯器 (編譯程式) 的軟體。 經過編譯器翻譯的程式的檔案格式被稱為目標檔案格式。如果目標檔案格式最終沒有被配置到儲存器中,CPU就無法執行該程式。

另外,近來由於程式越來越趨於複雜化,所以幾乎都採取了將一個程式分割為多個C語言程式檔案的結構。所以,還需要一個工具將多個目標檔案格式彙總成一個機器語言並配置到儲存器上,能夠擔當起此重任的就是連線編輯程式(linkage editor,也被稱為“linker(連結器)”)。

  能夠找出程式錯誤的偵錯程式

由人進行程式設計的應用程式難免會存在錯誤(bug)。而用來發現和幫助人們修正程式錯誤的'工具被稱為偵錯程式(Debugger)。下面簡單介紹偵錯程式的型別。

電路內模擬器(In-Circuit Emulator , 簡稱:ICE) :ICE可取代實際的微控制器,與模擬專用的評價微控制器(evaluation chip,評價晶片)連線並進行除錯。其中,“In-Circuit Emulator”為美國英特爾公司的註冊商標,瑞薩將其命名為“Full-spec Emulators”並向市場提供。

J-TAG模擬器:J-TAG模擬器使用微控制器內事先預留的除錯電路進行除錯。也就是說通過實際使用的微控制器來進行除錯。和ICE相比,J-TAG模擬器的價格較低。瑞薩將其命名為“On-chip Debug Emulator”並向市場提供。

簡易模擬器:簡易模擬器是使除錯用的監視程式在微控制器上執行,在與PC通訊的同時進行除錯。除了除錯物件的程式之外,還需啟動其他監視程式,所以,與ICE或J-TAG模擬器相比,簡易模擬器的程式執行速度慢而且還有各種功能限制。其最大的優點是價格非常低廉。

  綜合開發環境

正如上面所講的,在進行微控制器的軟體開發時,使用了上述的編譯器、連線編輯程式、偵錯程式等各種工具。以前,這些軟體都是作為單個軟體分別提供的,一般是通過命令提示符調出各個程式、或是通過批處理程式調出使用。但是,最近開始以綜合開發環境的方式給予提供,綜合開發環境就是將各種程式綜合到一個程式包中,只需通過Renesas CS+ 等便可很容易地將程式調出使用。

例如,瑞薩針對RL78族產品提供了“簡單”“快速”“安心”的“CS+”的綜合開發環境。在綜合開發環境中,只需進行簡單操作便可利用各種功能,因此,綜合開發環境最適合用來提高軟體開發的效率。

* 在2014年10月1日釋出, 瑞薩電子整合開發環境CubeSuite+的產品名稱已經從V3.00.00版本中改為“C++”。