KeilμVision4是Keil軟件公司為8051系列微控制器及其兼容產(chǎn)品設(shè)計的集成式軟件開發(fā)環(huán)境。μVision4集成了C51編譯器和A51匯編器,其界面類似于Microsoft VS,支持C語言和匯編語言程序的編寫和調(diào)試,功能強(qiáng)大。
2009年2月發(fā)布Keil uVision4,Keil uVision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺監(jiān)視器,并提供了視覺上的表面對窗口位置的完全控制的任何地方。新的用戶界面可以更好地利用屏幕空間和更有效地組織多個窗口,提供一個整潔,高效的環(huán)境來開發(fā)應(yīng)用程序。新版本支持更多最新的ARM芯片,還添加了一些其他新功能。2011年3月ARM公司發(fā)布最新集成開發(fā)環(huán)境RealView MDK開發(fā)工具中集成了最新版本的Keil uVision4,其編譯器、調(diào)試工具實(shí)現(xiàn)與ARM器件的最完美匹配。
將源程序加入工程后,必須生成可執(zhí)行的目標(biāo)文件,并將其下載到單片機(jī)的程序存儲器中,該程序才能執(zhí)行。而在這之前,必須保證程序沒有基本的語法錯誤,如指令格式錯誤和變量重復(fù)定義等。在μVision4中,可以通過“編譯(Translate)”查找程序中的語法錯誤,通過“生成目標(biāo)文件(Build)”功能或“重建目標(biāo)文件(Rebuild)”功能將沒有語法錯誤的源程序轉(zhuǎn)換為“HEX”格式的目標(biāo)文件。需要特別強(qiáng)調(diào)的是,若沒有編譯錯誤的程序不能產(chǎn)
生預(yù)期的運(yùn)行結(jié)果,則意味著程序中存在邏輯錯誤,此時可以利用μVision4的調(diào)試“Debug”功能查找和修正錯誤。
程序的編譯和鏈接
1.程序的編譯
可以通過鼠標(biāo)左鍵單擊快捷菜單中的“Translate”(見圖7-13a)或“Project”→“Translate”子菜單(見圖7-13d)進(jìn)行源程序編譯。若程序沒有語法錯誤,則“Build Output”窗口的輸出信息為:“test.c–0 Error(s),0 Warning(s)”,表示“test.c”文件中有0個警告(Warning)和0個錯誤(Error),如圖7-14a所示。若程序中存在基本語法錯誤,軟件會在“Build Output”窗口輸出錯誤提示信息。如圖7-14b所示,“test.c–1 Error(s),0Warning(s)”表示“test.c”文件中有0個警告(Warning)和1個錯誤(Error);錯誤提示信息“TEST.C(13):error C202:'j':undefined identifier”表示錯誤出現(xiàn)在“TEST.C”文件的第13行(若用鼠標(biāo)單擊錯誤提示信息,則在源程序窗口中對應(yīng)行的行首會出現(xiàn)綠色箭頭),“error C202”表示錯誤編號為C202,而C202號錯誤為“Undefined Identifier”,提示信息“‘j’:undefined identifier”表示變量j沒有定義。由圖7-14b所示源程序可以看出,出現(xiàn)這個錯誤的原因是,文件第10行的變量j定義語句前加上了注釋符號“//”,成為注釋信息;去掉注釋符號“//”后再次編譯,錯誤提示將消失。
圖7-13程序編譯鏈接的相關(guān)菜單
a)“Translate”編譯快捷菜單b)“Build”鏈接快捷菜單
c)“Rebuild”重新編譯鏈接快菜單d)“Project”菜單
需要注意,“Error(s)”錯誤將導(dǎo)致無法生成目標(biāo)代碼,“Warning(s)”警告是程序中不嚴(yán)重的小問題,不影響目標(biāo)文件的生成。但是最好消除所有的警告,因?yàn)榫骖惖男栴}可能會導(dǎo)致潛在的、不易發(fā)現(xiàn)的嚴(yán)重問題。另外,編譯不能產(chǎn)生目標(biāo)文件,若要生成目標(biāo)文件,還需在編譯的基礎(chǔ)上進(jìn)行鏈接操作。
圖7-14編譯鏈接相關(guān)菜單和界面
a)編譯無錯誤的提示信息b)編譯錯誤提示信息
2.程序的鏈接
單擊“Build”快捷圖標(biāo)(見圖7-13b)或“Project”→“Build”子菜單(見圖7-13d),可以完成對源程序的編譯和鏈接,并生成目標(biāo)文件。單擊“Rebuild”快捷圖標(biāo)(見圖7-13c)或“Project”→“Rebuild”子菜單(見圖7-13d)也可以完成編譯鏈接操作?!癇uild”與“Rebuild”的區(qū)別是,“Build”僅編譯鏈接新的源程序文件或源程序文件中被修改的部分,而“Rebuild”將重新編譯鏈接源程序文件。