源程序編譯及調試-最新課件_第1頁
源程序編譯及調試-最新課件_第2頁
源程序編譯及調試-最新課件_第3頁
源程序編譯及調試-最新課件_第4頁
源程序編譯及調試-最新課件_第5頁
已閱讀5頁,還剩16頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第6章 源程序編譯及調試第6章 源程序編譯及調試學習嵌入式系統,需要有一個基本的硬件軟件環境。一個適合入門的硬件軟件環境應該具有硬件可拼接、實例程序豐富、操作簡單。蘇州大學Freescale嵌入式系統實驗室在飛思卡爾公司的大力支持下,研發成功的MT-IDE For HC08 / S08集成開發套件,適用于Freescale公司各種08芯片,具備上述特點。本書的所有程序都是在該環境中編寫及調試的。MT-IDE是中文版的,可以在網上免費下載最新版本,對程序編譯和下載沒有任何限制,也用于實際項目的開發,已經在國內得到較廣泛的使用。希望快速入門的讀者可以選用MT-IDE,隨MT-IDE開發環境所附有大

2、量的樣例程序,含有規范的中文注釋及封裝合理的子程序,對于Freescale MCU的初學者來說是一個寶貴的資源。同時本章也對Metrowerks公司的CodeWarrior軟件做了簡要介紹,CodeWarrior是一個針對Freescale MCU的商業軟件,其功能強大,價格也很高。用于免費教學的特別版有代碼量的限制,生成的代碼不能超過12KB,包含的工程文件數不超過30個。對于Freescale MCU的初學者需要花費更多的時間入門,因為CodeWarrior功能強大,所以相對復雜,并且是英文版的,在短時間內難以掌握其用法。本章還講述匯編及08C源程序編譯過程、編譯時產生的相關文件及調試方法

3、。閱讀本章內容之后,應該立即進行實踐,或邊閱讀,邊實踐。從實踐中理解工程的含義、S19文件的含義、List文件的用處等內容,從實踐中學會編輯程序、編譯程序、下載程序、調試程序。通過初步實踐后,你會發現使用MT-IDE通用開發套件進行的嵌入式程序的調試與在PC機上進行的PC機的一般高級語言程序調試區別并不大,也許你看到的區別主要是嵌入式程序需要下載到目標對象中才能調試。MT-IDE中的調試是真實的調試,不是早期的仿真方法,這得益于Flash存儲器的發展與調試手段的進步。為了今后調試程序的順利,不僅要熟練操作過程,還要能夠理解S19文件、List文件,能夠在S19文件與List文件中找到一個語句或

4、一段程序產生的機器碼。6.1 MT-IDE集成開發套件蘇州大學Freescale嵌入式系統實驗室研發的MT-IDE For HC08 / S08 /S12等一系列Freescale 8位和16位MCU的集成開發套件由硬件系統和軟件系統組成。硬件系統包括寫入調試器、核心板和擴展板,軟件系統具有工程管理、源程序編輯、編譯等功能,同時通過USB接口與寫入調試器通信,完成下載及調試。開發套件的結構框圖如圖6-1所示。本開發套件可作為Freescale系列MCU教學和培訓班的實驗器材,也可以作為技術人員開發項目時的開發工具。6.1.1 硬件平臺MT-IDE通用開發套件硬件及接口部分主要包括擴展板MT-E

5、xtend Board I、核心板MT-Core和HC08寫入調試器MT-Programmer三個部分。擴展板核心板PC寫入調試器圖6-1 MT-IDE集成開發套件結構框圖(1) 擴展板MT-Extend Board I圖6-2 MTExtend Board I型擴展板實物圖MTExtend Board I型擴展板適用于HC08、HCS08、HC12、HCS12等系列MCU的核心板,提供160Pin核心板底座接口、LED燈、蜂鳴器、繼電器、8段數碼管、LCD、4×4鍵盤、8組開關、模擬電位計、紅外傳感器、光敏傳感器、熱敏傳感器、串行口、USB、CAN、IIC、SPI、以太網口等接口,

6、基本包括了08和12系列MCU所具有的模塊接口。擴展板硬件實物如圖6-2所示。這些模塊接口大致可以分成下面幾類: 電源模塊:MTExtend Board I型擴展板提供3.3V、5V、12V三種直流電源。 基本I/O模塊:MTExtend Board I型擴展板上的調試小燈、拔碼開關和蜂鳴器等模塊均屬于基本I/O模塊。調試小燈模塊:擴展板用LED提供8位數字量的輸出。拔碼開關模塊:擴展板用撥碼開關提供8位數字量的輸入。蜂鳴器模塊:當控制點為高電平時,蜂鳴器響;為低電平時,蜂鳴器不響。 串行口模塊:利用串行線可以將擴展板的串行口與計算機的串口連接起來,實現通信。 復位按鈕:利用擴展板上的復位按鈕

7、可以向MCU的復位引腳輸入低電平,實現MCU的復位。 其他模塊:擴展板上還包括LCD、4×4鍵盤、8組開關、模擬電位計、紅外傳感器、光敏傳感器、熱敏傳感器、USB、CAN、IIC、SPI、以太網口等模塊接口,在實際使用時請參照實驗指導書,也可以在網站Http:/或Http:/上下載相關資料。(2) 核心板MT-CoreMON08接口Core1Core2GP32最小系統Core3Core4電源開關晶振開關圖6-3 MC908GP32CB核心板實物圖本開發套件采用擴展板+核心板的模式,特別是適合于Freescale的芯片型號多,并且由于新型號MCU不斷涌現的優點,針對不同類型的MCU,只

8、需要更換核心板就可以立即開展工作。對于不同MCU,需要設計相應的核心板,目前本實驗室已經配備的核心板有MC908GZ60、MC908GP32、MC908JB8、MC908MR8、MC9S08GB60、MC9S12DG128、MC9S12NE64、MC9S12UF32,對于這些核心板具體內容請見附錄F。下面以GP32核心板為例進行分析,圖6-3是MC908GP32芯片的核心板的實物圖。如圖所示,核心板主要由以下幾個部分組成:芯片的最小系統:使芯片能工作起來的最小結構,它一般由MCU、晶振電路、電源供給、濾波電路和復位電路等組成。電源開關與晶振開關:電源開關和晶振開關撥動到擴展板端,則核心板電源來

9、自擴展板,晶振來自核心板自身的晶振電路。電源開關和晶振開關撥動到寫入器端,則核心板電源來自寫入器,晶振也來自寫入器,此時寫入調試器可以對主控MCU進入寫入和在線調試工作。編程接口:HC08MCU的編程接口就是MON08接口,S08MCU的編程接口是BDM接口。8路A/D口LCD接口鍵盤口SPI接口Core1接口Core2接口通用I/O口LED接口Core3接口Core4接口圖6-4 GP32核心板和擴展板接口原理圖與擴展板的接口:圖6-4所示。圖中Core14為GP32核心板和擴展板接口。除了在核心板上可以直接使用的普通I/O口(PTA、PTB、PTC、PTD),其它的都是核心板與擴展板的接口

10、,并在擴展板上有相應的擴展口,可用于接口模塊的手動連線。(3) HC08/HCS08寫入調試器MT-ProgrammerMT-Programmer For HC08/HCS08(如圖6-5所示)是針對Freescale 08系列MCU而研制的寫入調試器,它支持目前HC08/HCS08系列各種不同型號的MCU。MT-Programmer是目標核心板和PC機之間的聯系紐帶,它以USB接口同PC機通信,通過MON08接口或BDM接口和目標核心板相連,配合PC方軟件實現擦除、下載、調試、讀Flash數據等功能。MON08BDM圖6-5 MT-Programmer圖6.1.2 軟件概述1MT-IDE軟件

11、系統的功能和特點調試工具欄常用工具欄菜單欄編譯下載工具欄代碼編輯區工程文件列表區編譯調試信息區調試數據區狀態欄圖6-6 MT-IDE運行界面MT-IDE For HC08集成開發環境的軟件系統(如圖6-6所示),是針對Freescale HC08系列MCU的開發工具,采用Windows風格,提供友好的操作界面,具有編輯、編譯、下載、調試等功能,通用性強,使用方便。具體功能如下:支持Freescale HC08系列的所有MCU以工程的方式管理文件支持C和匯編語言的源文件編輯、編譯支持HC08系列MCU的Flash操作(擦除寫入和讀出)支持C和匯編語言的斷點調試與單步調試支持內存與寄存器觀察支持S

12、-Record文件軟件運行環境:Windows2000及更高版本的Windows操作系統。2MT-IDE軟件系統的安裝(1) 安裝MT-IDE軟件該軟件的安裝十分方便簡單,只要運行“Setup.exe”文件,然后根據安裝向導的提示,就可以輕松完成。當成功安裝本軟件后,將會在安裝目錄下產生如下文件夾:bin:可執行程序文件夾。Docs:說明文檔文件夾。包含軟件使用的說明文檔。Include:08C頭文件夾。包含08C編譯器用到的C的頭文件。Lib:08C庫文件夾。包含08C鏈接時用到的庫文件。Stationary:框架程序文件夾。包含各種芯片的基本的框架程序,在新建工程時,作為空工程的模板。(2

13、) 安裝USB驅動MT-IDE軟件集程序的編輯、編譯和調試功能于一體,工程源文件在該軟件系統中,被編譯、連接形成目標文件后,還要通過寫入調試器,下載到核心板上的芯片中運行。初次將寫入器與PC的USB口相連時,會彈出“找到新的硬件向導”對話框,因為PC并不識別該硬件設備,需要安裝相應的驅動程序。注意在安裝過程中,當詢問“Windows可以連接到Windows Update以搜索軟件嗎?”時,應選擇“否,暫時不”,以便從列表或指定位置安裝,實際所要安裝的驅動程序是安裝目錄下bin文件夾中的usbio_el.sys,該驅動程序將安裝在C:WINDOWSSystem32Drivers中。完成安裝后,設

14、備管理器中增加了USBIO controlled devices一項,且其下有USBIO-Device 1(查看屬性可知這就是08 Programmer)。6.2 MT-IDE集成開發環境的使用這一節,將逐步講述在MT-IDE集成開發環境中,怎樣打開、編輯、編譯、運行和調試匯編工程和C工程,力圖使讀者在學習完本節后,就能輕松駕馭MT-IDE集成開發工具,這對以后開發工程項目是十分必要的,此所謂“工欲善其事,必先利其器”。6.2.1 運行第一個匯編工程實例在08教學資料目錄下的“MC08Ex2007”文件夾中,存放了本書中出現的所有實例工程,如果需要運行這些程序,可以將這個文件夾拷貝到用戶的工作

15、目錄下。注意,若要調試某個工程,不要在“MC08Ex2007”文件夾中直接運行,而應將相應的工程做一個備份,然后調試、運行這個備份工程。始終保留一個最近調試成功的工程,而每次修改僅在相應的備份上進行,這樣做是十分必要的,因為一旦修改錯誤,而又找不到癥結所在時,還可以使調試工作還原到一個最近的正確點上,以便重新開始。下面,將使用這個方法,運行在第四章中已分析過的第一個匯編工程PrgFrame。1打開工程運行MT-IDE軟件,選擇文件菜單下的打開工程選項,在彈出的“打開”對話框中,選擇PrgFrame工程所在路徑,打開該工程中的“PrgFrame.prj”文件,即可打開整個工程。在運行界面左邊的工

16、程文件列表區顯示了PrgFrame的文件組織情況,可以看到該工程由頭文件(GP32ASM.h、Includes.h和LED.h)、源程序文件(GeneralFun.s、LED.s、Main.s、MCUinit.s和Vectors08.s)以及其他文件(僅為 .txt類型,是工程的說明文檔)組成。這些文件已在第四章分析過,這里不再詳述。初始時,編輯區顯示的是主程序文件(Main.s),如果要在編輯區顯示其他工程文件,只需雙擊列表區相應的文件名即可。2編譯工程選擇編譯菜單下的編譯源程序選項,或直接單擊編譯下載工具欄中的編譯圖標(如圖6-7所示),就可以完成源程序的編譯。編譯圖6-7 編譯下載工具欄

17、編譯結果信息(編譯成功、出錯或警告等信息)將在運行界面下方的編譯調試信息區顯示出來,這個區域將幫助程序員定位出錯點。3下載機器碼現在要把編譯后產生的機器碼燒寫到芯片中。PrgFrame工程的控制芯片是MC908GP32 MCU,所以打開教學實驗箱后,第一步要檢查所使用的核心板是GP32核心板。將08寫入器的USB一端與PC相連(之前已裝過USB驅動,現在PC是能識別該寫入器的),另一端與核心板上的MON08接口相連。將核心板上的電源開關、晶振開關撥向“寫入器”一側 ,使核心板上的電源和晶振都來自寫入器。點擊MT-IDE編譯下載工具欄上的“USB擦除/下載”按鈕,彈出“通過USB下載”對話框,對

18、芯片進行擦除、寫入操作;也可以在Flash操作菜單中,執行以上動作。4連接硬件對象PrgFrame工程的功能是用A口的1引腳控制小燈閃爍,所以只要用導線將A口的1引腳與擴展板上的一盞小燈相連即可。注意:普通I/O口AD,可在核心板上直接找到;而MCU的其他引腳則通過核心板與擴展板的接口,引到了擴展板上。5運行芯片中的程序有兩種方法:在MT-IDE軟件系統中點擊運行圖標,通過寫入器向MCU發送運行命令,使程序開始運行。注意這時核心板上的電源開關和晶振開關還是撥在寫入器一側的。將核心板上的電源開關和晶振開關撥向“擴展板”一側,這時核心板電源來自擴展板,晶振來自核心板自身的晶振電路。現在,要確保實驗

19、箱中擴展板的電源已經連接好,此時,按動擴展板上的復位按鈕,芯片中的程序就執行起來了,正如工程描述中所說,小燈在不停的閃爍。6調試程序這里介紹兩種實用的調試方法:(1) 跟蹤法寄存器跟蹤窗口變量跟蹤窗口存儲器跟蹤窗口圖6-8 匯編工程調試界面首先,編譯源程序并下載到MCU中,并保持核心板上的電源開關、晶振開關撥向“寫入器”一側。其次,將光標停留在需要設置斷點的程序代碼上,點擊菜單欄上的調試菜單,下拉選擇設置斷點即可;也可以通過點擊工具欄上的圖標來設置斷點。然后,點擊菜單欄上的調試菜單,下拉選擇開始調試,進入調試界面,如圖6-8所示。點擊菜單欄上的調試菜單,下拉選擇單步步過或者單步步入,就可以逐步

20、監控程序的執行過程,也可以選擇工具欄上的相應圖標實現相同的操作。單步步過和單步步入的區別在于:當遇到子程序時,單步步過將子程序當作一條語句執行,不跟蹤子程序的內部執行過程,單步步入則進入子程序的內部,逐條語句執行。在單步步過或者單步步入的執行過程中,可以通過觀察寄存器跟蹤窗口中寄存器的值的變化來判斷程序是否正確執行。寄存器窗口中列出了HC08中的所有寄存器。如果想觀察某個存儲器單元的內容,可以在存儲器跟蹤窗口中輸入相應的地址,鍵入回車后,進行觀察。例如,在匯編工程中定義了如下語句:.org RAMstartAddr /RAM的起始地址為0x0040I1: . blkb 1若在調試過程中想知道當

21、前全局變量I1的值,就可以在存儲器跟蹤窗口中輸入I1的地址0x0040,再鍵入回車即可。如果需要查看某一段存儲區域的內容,可在下載完程序后,選擇flash操作中的讀取選項,讀取某一范圍內的存儲器內容。注意:該操作不能在單步調試時進行。單步調試結束后,點擊菜單欄上的“調試”菜單,下拉選擇“退出調試”,也可以點擊工具欄上的相應圖標結束調試。(2) 程序法如果希望程序執行到某個語句就不再向下執行,可在該語句后加入“BRA .”語句。該語句的含義是使程序流無條件轉向自身。這樣做和使用斷點調試是異曲同工的。如果想觀察某個寄存器或者任意存儲空間的值,可以通過串口調試實現。例如,要在執行完某個語句后,觀察存

22、儲單元0x8000處的值,可在該語句后添加:LDA 0x8000 /將存儲單元0x8000中的值,放入寄存器AJSR SCISend1 /工程中應已包含串行通信文件,才可調用該函數當執行完以上語句,0x8000處的值就通過串口發送給PC并顯示出來。7實驗中常見問題與解決方法在實驗過程中,會因為一些疏忽,而得不到預期的實驗結果,例如,會有以下常見錯誤:在對芯片執行擦除寫入操作時,若出現“連接失敗”提示,應檢查是否已經安裝該USB驅動,如果已經安裝,應拔出寫入器的USB一端,重新插入,復位編程器。如果總是提示進入監控失敗信息,這時應該檢查電源晶振開關是否撥向“寫入器”一側,寫入器的MON08接口是

23、否與核心板接反了。如果寫入程序后,按動復位按鈕,發現小燈不閃爍,可以檢查核心板是否以正確的方向插在擴展板上,導線是否連在A口的1引腳上,而不是其他引腳,如果以上都正確,再檢查程序中的延時是否足夠的長。如果總是擦除、寫入失敗,應考慮寫入器、芯片、核心板或是擴展板這些硬件設備是否被損壞。這時應找來一個完好的硬件系統,用部件替換法逐個檢測以上硬件設備是否完好。例如,有兩個硬件系統A和B。A是有故障的,B是完好的系統。先用A的寫入器替換掉B的,并在B系統上實驗,如果擦寫失敗,說明A的寫入器已損壞,需要更換,如果能正常工作,再把A的芯片替換到B系統上檢測。用同樣的方法逐個檢測A系統上的部件,直到找出所有

24、故障所在。6.2.2 編譯過程中產生的文件PrgFrame匯編工程編譯成功后,會產生如下文件:PrgFrame.s19(目標代碼文件)、main.lis(列表文件)、PrgFrame.dbg(帶有調試信息的文件)、PrgFrame.mp(存儲映像文件)、main.o(目標對象文件)等。這里介紹其中的兩個文件:S19文件和Lis文件,這兩個文件可在查看菜單中選擇打開,或通過點擊編譯調試工具欄中相應的圖標打開。1目標代碼文件(*.s19)S19文件是Motorola MCU的機器碼文件,將其下載到MCU內部Flash存儲器之后,MCU執行這些機器碼。目標代碼文件(.S19)是以S記錄格式表示的機器

25、碼文件。S記錄格式是Freescale公司的十六進制目標代碼文件,它將目標程序和數據以可打印的ASCII碼格式表示,可直接顯示和打印。目標文件由若干行S記錄構成,每行S記錄可以用CR/LF/NUL結尾。一行S記錄由下列五部分組成:類型記錄長度地 址編碼/數據校驗和2字節2字節2、3或4字節0n字節1字節分別說明如下:類型表示S記錄的類型。共有8種記錄類型S0、S1、S2、S3、S5、S6、S8、S9。它們是為了滿足不同的編碼、傳送方式以及解碼的需求。ASM08編譯器只使用S1、S9兩種類型構成目標文件。S1地址為2字節的代碼/數據記錄。S9S1記錄的結束記錄。該記錄沒有程序/數據部分。地址部分

26、可包含控制將轉向的2字節地址,如果不指定,則為第一次使用的入口地址。S2地址為3字節的代碼/數據記錄。S8S2記錄的結束記錄。S3地址為4字節的代碼/數據記錄。S7S3記錄的結束記錄。S5如果有,表示文件中總共有多少個S1、S2和S3記錄。記錄長度表示該記錄行中字符對的數目,不包括類型和記錄長度。地址它可以是2個字節、3個字節或4個字節,取決于記錄類型。S1記錄、S9記錄均是2個字節。它表示其后的編碼/數據部分將要裝入的存儲器起始地址。編碼/數據就是實際的目標程序或數據,這一部分將被下載到嵌入式的程序存儲器并運行。其字節數是由“記錄長度”域的實際數值減去地址長度和校驗碼長度得到的。校驗和為1個

27、字節,它是“記錄長度”、“地址”、“編碼/數據”三個部分所有字節之和的反碼的低8位。供裝入嵌入式時校驗之用。例如:S105FFFE80007D,最后的7D就是校驗和,計算方法是:05+FF+FE+80+00=0282 (十六進制運算)將低字節0x82,即0B10000010,取反得到0B01111101,即0x7D。表6-1是PrgFrame工程編譯后得到的S19文件,它由7行S記錄構成:表6-1 PrgFrame工程的S19文件S12380009B45024094CD8039CD8060A64CCD80654502FFCD8024A641CD80654502FFCD80ECS12380202

28、4CC800B87650000270DA6C89D9D4BFCAFFF65000026F3868187A601B71EA63D99S1238040B71F3F36A601B736A601B738A62CB739A680B73AA601B73B1A361E37183686813BS11880601204120081A141260412002006A14C260213008180F1S123FFDC8074807480748074807480748074807480748074807480748074807480748074C1S107FFFC8074800089S9030000FC表6-1中第一

29、行的前兩個符號S1表示這一行是S1記錄,其后的“23”是十六進制數0x23,等于十進制數的35,表示在這一行中其后有35個字節的數據,包括2個字節的地址8000、32個字節的編碼/數據,和最后一個校驗和字節EC,大家可驗證。這一行記錄表示實際的編碼/數據將被裝入嵌入式存儲器起始地址為$8000的內存中。最后一行是S9記錄,S9之后的03是十六進制$03,表示其后有3個字節的數據。0000為2個字節的地址,FC是校驗和。S記錄是以ASCII碼形式的機器碼表示,一個機器碼字節需要用2個ASCII碼表示。若每個S記錄有32個機器碼字節,加上S1字頭、記錄長度、地址、校驗碼,則每條記錄需要以74個字節

30、存盤,則10KB機器碼的S19文件大小會有23690B之多。特別提醒:S19文件大小不是機器碼的大小。2列表文件(*.lis)在Lis文件中可以對照查看匯編源程序和相應的機器碼以及這些指令和數據將要放入的相對或絕對地址。如表6-1,列出了PrgFrame工程匯編后產生的列表文件main.lis的部分內容,列表文件的格式如下:地址 目標碼 匯編指令“地址”是該指令目標碼的首地址的十六進制值,“目標碼”是與匯編指令對應的十六進制機器碼字節。如下表中帶陰影一行,“SEI /關總中斷”是匯編源程序中的一條語句和相應的注釋,9B是SEI這條指令所對應的機器碼,0x8000是該機器碼將被寫于芯片存儲器中的

31、地址。由于在匯編源程序中包含絕對定位語句“.org $XXXX”,所以表6-2中的地址是絕對地址。如果沒有這種定位語句,則生成相對地址,從0x0000開始編址,就無法正確運行。表6-2 匯編產生的列表文件main.lis的部分內容 0000 /主程序 0000 /以下兩條語句的詳細解釋見"工程說明.txt" .area flash(abs) .org FlashStartAddr 8000 MainInit: /復位后從此處執行(見Vectors08.s文件末尾處) 8000 9B SEI /關總中斷 8001 /1. 堆棧初始化為RAM最高端 8001 450240 LD

32、HX #RAMendAddr + 1 /HX = #RAMEndAddr + 1 8004 94 TXS /HX - 1 -> SP 8005 /2. 系統初始化 8005 CD8039 JSR MCUinit /初學時跳過此處 8008 /3. 模塊初始化 8008 CD8060 JSR LEDinit /(1) I/O口小燈控制引腳初始化 800B /程序總循環入口 800B MainLoop: 800B A64C LDA #'L' /小燈亮 800D CD8065 JSR LED_L_A 8010 4502FF LDHX #$02FF /延時 8013 CD8024

33、 JSR DelayHX 8016 A641 LDA #'A' /小燈暗 8018 CD8065 JSR LED_L_A 801B 4502FF LDHX #$02FF /延時 801E CD8024 JSR DelayHX 8021 CC800B JMP MainLoop6.2.3 新建一個匯編工程上一小節,介紹了如何打開、運行及調試一個已存在的匯編工程。如果要創建一個新的匯編工程應如何操作呢,現在,就介紹兩種新建工程的方法:1拷貝新建法顧名思意,就是拷貝一個已有的工程,然后在此基礎上進行修改,得到一個滿足需求的新工程。例如,現在要新建一個匯編工程,完成用一個開關控制一盞燈(

34、開關打開,小燈亮;開關閉合,小燈暗)的功能。給這個工程命名為SwitchCtrl。它和第一個實例工程PrgFrame十分相似,所以可以利用PrgFrame新建SwitchCtrl。步驟如下:拷貝并重命名PrgFrame工程文件夾。在工程文件夾中修改工程文件名“PrgFrame.prj”為“SwitchCtrl.prj”。由于新工程中的控制芯片與原工程相同,所以所有的面向芯片文件(GP32ASM.h、MCUinit.s和Vectors08.s)都無須修改,直接重用。新工程根據所讀取的開關輸入值(0/1),驅動小燈亮、暗,是面向小燈和開關編程的。所以原工程中的小燈控制文件,應該保留,同時還應準備創

35、建面向開關的文件Switch.s和Switch.h,分別用于讀取開關輸入值和定義開關控制引腳。原來的通用程序文件有GeneralFun.s和Includes.h,新工程中并不需要延時所以可以刪除GeneralFun.s文件,而Includes.h和主程序文件(Main.s)必須保留并做必要的改動。對原有工程在文件層上做必要的增刪后,就要開始編輯新工程了。在MT-IDE軟件中打開新工程中的工程文件SwitchCtrl.prj,發現并沒有打開整個工程(工程列表中沒有具體的程序文件),原因是在上一步中修改了工程文件名,這時要在列表中的工程文件目錄上右擊添加工程文件夾中已有的文件或通過文件菜單中的新建

36、選項,新建程序文件。單擊文件菜單中的新建選項,出現新建對話框,選擇新建文件選項卡,填入新文件的路徑,文件名,文件類型,用這種方法可在工程中新建“.s”“.h”“.txt”三種類型的文件。本工程中需要新建Switch.s和Switch.h文件。在列表中可以看到所有程序文件后,雙擊相應文件名,就可在編輯區打開對應的程序文件,進行編輯修改了。2向導新建法打開MT-IDE軟件,點擊文件菜單下的新建選項,選擇新建工程選項卡,填寫所建工程的路徑,工程名,工程類型(匯編/C),工程的控制芯片等信息,確定后,將會自動生成所需的匯編工程框架。框架中已包含所有面向芯片的程序文件和主程序文件框架,對這些文件,只須根

37、據需要稍加修改即可。另外,還要在工程中新建硬件對象的控制程序文件,和必要通用程序文件。新建文件的方法已經討論過,這里不再詳述。用以上任何一種方法新建工程,組織好文件后,就可以開始編輯,編譯,調試程序了,這些操作的具體方法請參見上一小節,這里不再闡述。6.2.4 運行第一個C工程實例運行C工程的步驟也可以分成打開工程、編譯工程、下載工程、連接硬件對象、運行芯片中程序和調試等。6.2.1節詳細介紹了運行第一個匯編工程的具體步驟,參照這些步驟,可以運行第一個C工程實例,這里不再具體闡述,只是列出運行C工程與運行匯編工程的不同之處。(1) 編譯過程產生的List文件不同C工程編譯產生的List文件如表

38、6-3所示,與匯編工程不同之處在于C工程編譯產生的List文件中包含了C語句以及其對應的匯編語句,并對其中的C語句加上了行號,即表6-3中所示的(0014)之類,方便閱讀,C工程編譯產生的List文件的閱讀方法同匯編工程,這里不再闡述。表6-3 C工程編譯產生的列表文件PrgFrame.lst的部分內容(0014) /主函數(0015) void main()(0016) _main: 8079 9B seI(0017) DisableMCUInt(); /禁止總中斷(0018) MCUInit(); /芯片初始化 807A CD 80AB jsr _MCUInit(0019) LEDInit

39、(); /小燈控制引腳初始化 807D CD 8035 jsr _LEDInit 8080 95 tSX 8081 20 25 bra 0x80A8(0020) /程序總循環入口(0021) while (1)(0022) 8083 A6 4C ldA #76 8085 87 pshA 8086 CD 803A jsr LED_L_A 8089 A7 01 aiS #1(0023) LED_L_A('L'); /小燈亮(0024) Delay(15000); /延時 808B 45 3A98 ldHX #0x3A98 808E 89 pshX 808F 8B pshH 8090

40、 CD 804E jsr _Delay 8093 A7 02 aiS #2(0025)(0026) LED_L_A('A'); /小燈暗 8095 A6 41 ldA #65 8097 87 pshA 8098 CD 803A jsr _LED_L_A 809B A7 01 aiS #1(0027) Delay(15000); /延時 809D 45 3A98 ldHX #0x3A98 80A0 89 pshX 80A1 8B pshH 80A2 CD 804E jsr _Delay 80A5 A7 02 aiS #2 80A7 95 tSX(0028) 80A8 20 D9

41、bra 0x8083 80AA 81 rts(2) 調試方法不同C工程的調試方法也分為跟蹤法和程序法兩種,程序法同匯編工程,只將串行口的子程序換成相應的C函數即可。在跟蹤法中,C工程的調試界面如圖6-9所示。其中寄存器跟蹤窗口和存儲器跟蹤窗口的調試方法同匯編,這里不再闡述。在變量跟蹤窗口中可以輸入C工程中定義的變量,在調試中,窗口中變量的值將隨程序的執行而發生改變。寄存器跟蹤窗口變量跟蹤窗口存儲器跟蹤窗口圖6-9 C工程調試界面*6.3 CodeWarrior軟件簡介CodeWarrior 是Metrowerks公司研發的專門面向Freescale所有MCU與DSP嵌入式應用開發的軟件工具,是

42、Freescale向用戶推薦的產品。Metrowerks公司是Motorola公司于1999年收購的、獨立運作的子公司。CodeWarrior分為3個版本:特別版(Special Edition)、標準版和專業版。特別版是免費的、用于教學目的,對生成的代碼量有一定限制,C代碼不得超過12KB,對工程包含的文件數目限制在30個以內。標準版和專業版沒有這種限制。3個版本的區別在于用戶所獲取的授權文件(license)不同,特別版的授權文件隨安裝軟件附帶,不需要特殊申請,標準版和專業版授權文件需要付費,同其他商業軟件一樣,付費前有1個月的試用期。CodeWarrior特別版、標準版和專業版的定義隨所

43、支持的微處理器的不同而不同,如CodeWarrior for HC08 V3.0、CodeWarrior for HCS12X V4.1等。CodeWarrior開發工具是一個比較復雜的軟件,其功能很強,以下簡單介紹CodeWarrior的使用方法,使讀者快速入門,更多的功能和用法請閱讀該軟件包中包含的大量文檔,在實踐中不斷熟悉和掌握。本節將以CodeWarrior for HC08 V3.0說明該軟件的使用方法。6.3.1 CodeWarrior的安裝圖6-10 安裝CodeWarrior的文件夾運行安裝文件夾下的“setup.exe”文件,按照安裝向導就可以完成軟件的安裝,默認安裝在“C:

44、Program FilesMetrowerksCodeWarrior CW08_V3.0”文件夾下,該文件夾下的內容如圖6-10所示。“Bin”文件夾主要包含了CodeWarrior IDE環境的可執行文件“IDE.exe”,“lib”文件夾主要包含了HC08的頭文件及庫文件,“prog”文件夾主要包含了匯編、編譯、反匯編、連接、調試及下載等可執行文件。安裝完畢后要通過網絡注冊以申請使用許可,申請后會通過E-Mail得到一個License.dat文件,將該文件復制到安裝文件夾下。對于免費的特別版本,用安裝包中的License.dat覆蓋安裝目錄下的License.dat文件,就可以使用了。6.

45、3.2 新建工程安裝CodeWarrior后,在開始菜單下有IDE環境的快捷方式“CodeWarrior IDE”,執行該命令得到集成開發環境,如圖6-11所示。圖6-11 CodeWarrior的啟動界面單擊“File”菜單下的“New”命令將出現新建文件或工程的對話框,如圖6-12所示,其中有三個選項:Empty Project、HC(S)08 Board Support Stationary、HC(S)08 New Project Vizard。在新建工程時,通常選擇后兩項中的一項。選擇“HC(S)08 New Project Vizard”項,輸入工程的名字“Example1”,設定工

46、程保存的路徑,單擊確定按鈕。圖6-12 新建文件或工程的對話框在接下來的新建工程向導過程中,需要選擇芯片的名稱、編程語言、浮點數格式、存儲器模式、相連的編程調試器等選項,假如這些選項使用默認選項,最后單擊“完成”,得到如圖6-13所示的工程文件管理窗口,工程文件擴展名為“.mcp”。工程窗口頂端有三個標簽頁:“Files”、“Link Order”鏈接順序和“Targets”。在這幾個標簽頁的上方,有一個用于選擇要編譯的目標文件的下拉菜單。在本例中,我們選擇的是適合于P&E調試器的版本。編譯、鏈接和調試工具欄圖6-13 Example1 程序的工程窗口文件標簽頁列出了在工程中所有可能用

47、到的文件,用戶可以通過創建一些組(用文件夾圖標表示)來分門別類地管理這些文件,并可以幫助你方便地了解哪些文件將被使用。在本例中,將“main.c”放到“Source”組中、08芯片初始化程序放到“Startup Code”組、將庫文件放到“Libs”組中等,以便整潔明了地管理這些文件。新建工程后的這樣文件是CodeWarrior自動生成的,用戶可以根據需要修改這些內容以及增加自己的代碼。在新建工程后,還沒有編譯這個工程時,每個文件對應的Code和Data欄中顯示的數字都是零。一旦我們編譯了這個工程,這些數字就將顯示出來,表示源碼轉換為機器代碼后實際的代碼量和數據量。有些文件后面顯示的是“n/a

48、”,這表示雖然這些文件被顯示在這里,但是它們并不是工程目標文件的一部分,它們用于調試和下載時使用的。6.3.3 編譯、鏈接與仿真調試Debug圖6-14 Example1工程編譯后的工程窗口單擊“Project”菜單下的“Make”或工程工具欄的“Make”命令編譯該工程,這將更新所有需要編譯的文件并產生相應的輸出文件。此時“Example1”工程窗口如圖6-14所示。在編譯、鏈接沒有錯誤時,可以進行仿真調試程序。單擊工程窗口工具欄的Debug按鈕,會彈出圖6-15所示的仿真調試界面。仿真調試界面包含了Source、Procedure、Data1、Data2、Command、Assembly、Register和Memory8個子窗口,工具欄中包含的調試按鈕有:運行、單步步入、單步步過、單步步出、匯編語言的單步運行、停止、目標板復位。Source窗口即源程序窗口,在窗口中右擊,彈出快捷菜單,快捷菜單中有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論