- 面向物聯網的CC2530與傳感器應用開發
- 廖建尚編著
- 4253字
- 2019-07-25 11:50:31
任務3 項目開發基本調試
本任務重點學習IAR for 8051的開發環境和在線調試,掌握CC2530開發環境的搭建和調試。
3.1 開發場景:如何進行項目開發
要驅動微處理器和相關接口硬件,需要相關的軟件,并將軟件編譯后燒錄到微處理器中,微處理器程序的編輯與燒錄需要在集成開發環境(IDE)中進行。
CC2530微處理器使用的開發環境是IAR for 8051,可以在這個開發環境下創建CC2530微處理器工程,使用下載器將程序下載到微處理器中,使用IAR for 8051的程序調試工具實現CC2530微處理器程序的在線調試,通過在線調試得到邏輯功能正確的代碼后就可以將代碼編譯為二進制文件并固化到微處理器中運行了。圖3.1所示為開發平臺調試工具,為無線節點提供調試接口,方便進行程序開發和在線調試。

圖3.1 開發平臺調試工具
3.2 開發目標
(1)知識要點:IAR for 8051開發環境的工程創建;IAR for 8051開發環境的程序在線調試。
(2)技能要點:掌握CC2530微處理器工程的創建;掌握CC2530微處理器代碼的在線調試;掌握IAR for 8051開發環境中的開發工具。
(3)任務目標:會使用IAR for 8051開發環境對CC2530微處理器工程進行在線調試;會使用IAR for 8051開發環境查看CC2530微處理器中每個寄存器的參數。
3.3 原理學習:軟件開發環境
3.3.1 IAR for 8051開發環境
1.主窗口界面
IAR主窗口界面如圖3.2所示,具體介紹如下。

圖3.2 IAR主窗口界面
(1)Menu Bar(菜單欄):包含IAR的所有操作及內容,在編輯模式和調試模式下存在一些不同。
(2)Tool Bar(工具欄):包含一些常見的快捷按鈕。
(3)Workspace Window(工作空間窗口):一個工作空間可以包含多個工程,該窗口主要顯示工作空間中工程項目的內容。
(4)Edit Window(編輯窗口):代碼編輯區域。
(5)Message Window(信息窗口):包括編譯信息、調試信息、查找信息等內容。
(6)Status Bar(狀態欄):包含錯誤警告、光標行列等一些狀態信息。
2.工具欄
工具欄上是主菜單部分功能的快捷圖標按鈕,這些快捷按鈕之所以放置在工具欄上,是因為它們的使用頻率較高。例如,編譯按鈕,這個按鈕在編程的時候使用的頻率相當高,這些按鈕大部分也有對應的快捷鍵。
IAR的工具欄共有兩個:主工具欄和調試工具欄。編輯(默認)狀態下只顯示主工具欄,進入調試模式后會顯示調試工具欄。
主工具欄可以通過菜單打開,即“View→Toolbars→Main”,如圖3.3所示。

圖3.3 通過菜單打開工具欄
(1)主工具欄。在編輯狀態下,只顯示主工具欄,里面內容也是編輯狀態下常用的快捷按鈕,如圖3.4所示。

圖3.4 IAR的主工具欄
● New Document:新建文件,快捷鍵為Ctrl+N。
● Open:打開文件,快捷鍵為Ctrl+O。
● Save:保存文件,快捷鍵為Ctrl+S。
● Save All:保存所有文件。
● Print:打印文件,快捷鍵為Ctrl+P。
● Cut:剪切,快捷鍵為Ctrl+X。
● Copy:復制,快捷鍵為Ctrl+C。
● Paste:粘貼,快捷鍵為Ctrl+V。
● Undo:撤銷編輯,快捷鍵為Ctrl+Z。
● Redo:恢復編輯,快捷鍵為Ctrl+Y。
● Quick Search Text Box:快速搜索文本框。
● Find Previous:向前查找,快捷鍵為Shift+F3。
● Find Next:向后查找,快捷鍵為F3。
● Find:查找(增強),快捷鍵為Ctrl+F。
● Replace:替換,快捷鍵為Ctrl+H。
● Go To:前往行列,快捷鍵為Ctrl+G。
● Toggle Bookmark:標記/取消書簽,快捷鍵為Ctrl+F2。
● Previous Bookmark:跳轉到上一個書簽,快捷鍵為Shift+F2。
● Next Bookmark:跳轉到下一個書簽,快捷鍵為F2。
● Navigate Backward:跳轉到上一步,快捷鍵為Alt+左箭頭。
● Navigate Forward:跳轉到下一步,快捷鍵為Alt+右箭頭。
● Compile:編譯當前(文件、組),快捷鍵為Ctrl+F7。
● Make:編譯工程(構建),快捷鍵為F7。
● Stop Build:停止編譯,快捷鍵為Ctrl+Break。
● Toggle Breakpoint:編輯/取消斷點,快捷鍵為Ctrl+F9。
● Download and Debug:下載并調試,快捷鍵為Ctrl+D。
● Debug without Downloading:調試(不下載)。
(2)調試工具欄。調試工具欄是在程序調試狀態下才顯示的快捷按鈕,在編輯狀態下,這些按鈕是不顯示的,如圖3.5所示,各個圖標說明依次如下。

圖3.5 調試工具欄
● Reset:復位。
● Break:停止運行。
● Step Over:逐行運行,快捷鍵為F10。
● Step Into:跳入運行,快捷鍵為F11。
● Step Out:跳出運行,快捷鍵為F11。
● Next Statement:運行到下一語句。
● Run to Cursor:運行到光標行。
● Go:全速運行,快捷鍵為F5。
● Stop Debugging:停止調試,快捷鍵為Ctrl+Shift+D。
逐行運行也稱為逐步運行,跳入運行也稱為單步運行,運行到下一語句和逐行運行類似。
3.3.2 IAR for 8051程序調試
1.IAR for CC2530工程創建
CC2530工程創建可分為三個步驟,分別是創建工程、添加源代碼、項目工程配置,每個步驟又可分為幾個小步驟。下面介紹CC2530工程創建流程。
1)創建工程
創建工程步驟可分為兩個小步驟,分別是新建Workspace和創建New Project。Workspace是整個CC2530工程的總框架,CC2530的代碼都是在Workspace下開發的。Project是Workspace下的子項目,Project可以是一個或多個,通過工程配置可實現一個工程下的多個微處理器程序開發。
(1)新建工作空間。打開IAR開發環境,在菜單欄中單擊“File→New→Workspace”可完成新工程的創建,如圖3.6所示。當Workspace創建完成后IAR將會產生一個空窗口,如圖3.7所示。

圖3.6 創建新的工作空間

圖3.7 IAR產生的空窗口
(2)創建新項目。在創建的Workspace下單擊“Project→Create New Project”,然后在“Tool chain”中選擇“8051”內核微處理器,最后單擊“OK”按鈕即可創建一個新項目,設置文件名稱后保存文件,如圖3.8所示。當新項目建立完成后,IAR將會在File中產生的文件目錄,如圖3.9所示。

圖3.8 創建一個新項目

圖3.9 在File中產生的文件目錄
2)添加源代碼
添加源代碼是指在空的項目中添加對微處理器進行操作的代碼。通常,開發微處理器的程序時使用的是C語言,因此添加代碼文件時實際添加的是C文件。IAR添加代碼實際上可分為三個步驟,分別是創建C文件、加入C文件到工程、將代碼段加入C文件中,實際步驟如下。
(1)創建C文件。單擊左上角的“New document”,代碼框中會顯示出一個空白的臨時文件,如圖3.10所示,單擊空白的臨時空間后單擊“File→Save As”將文件保存到與之前保存工作空間(Workspace)的相同文件夾中,如圖3.11所示,保存完成后臨時文件將其更名為保存文件名。

圖3.10 創建空白文件

圖3.11 創建完成后的空白文件
(2)加入C文件到工程。選擇菜單“Project→Add→Add Files…”,找到創建好的C文件,單擊該文件可將其加入工程中,如圖3.12所示。當C文件添加完成后,Files框中就會顯示加入工程中的C文件名稱,單擊C文件可以將其打開并加入工程的文件中,如圖3.13所示。

圖3.12 將C文件加入工程

圖3.13 打開C文件并將其加入工程的文件中
(3)將代碼段加入C文件中。在C文件中加入關聯文件和可執行的代碼段并保存,即可完成源代碼的建立,如圖3.14所示。

圖3.14 將代碼段加入C文件中
3)項目工程配置
將代碼加入工程中后,工程的建立并沒有結束,代碼的執行與微處理器的類型和資源是息息相關的。通常,同一個工程在不同微處理器上運行會產生不同的效果,因此工程需要對程序運行的平臺,如微處理器類型、內存、編譯工具、鏡像文件等進行配置。工程配置分為四個步驟:芯片選擇、堆棧配置、HEX文件配置、調試工具配置。
(1)芯片選擇。選擇菜單“Project→option”可進入工程配置頁面,芯片選擇“CC2531F256”,如圖3.15所示。

圖3.15 選擇芯片型號
(2)堆棧配置。在Option界面中選擇“Stack/Heap”后將“XDATA”的“0xEFF”配置為“0x1FF”,如圖3.16所示。

圖3.16 修改堆棧地址
(3)HEX文件配置。在Linker選項下選擇“Extra Options”,然后在此處添加生成HEX文件的指令,如圖3.17所示,配置指令為:

圖3.17 添加HEX文件生成指令
-Ointel-extended, (CODE)=.hex
(4)調試工具配置。選擇菜單“Debugger→Setup→Driver”,配置“Texas Instruments”調試工具,如圖3.18所示。

圖3.18 選擇芯片調試工具
最后單擊“OK”按鈕保存設置CC2530工程配置。
2.CC2530工程下載及調試
完成工程配置后,就可以編譯下載并調試程序了,下面介紹程序的下載、調試等功能。
(1)編譯工程。單擊“Project→Rebuild All”或者直接單擊工具欄中的“make”按鈕,編譯成功后會在該工程的“Debug\Exe”目錄下生成led.d51和led.hex文件。
(2)下載程序。正確連接SmartRF04EB仿真器到PC和ZXBee Lite節點(第一次使用仿真器需要安裝驅動“C:\Program Files(x86)\Texas Instruments\SmartRF Tools\Drivers\Cebal”,打開ZXBee CC2530開發平臺電源(上電),按下SmartRF04EB仿真器上的復位按鍵,單擊“Project→Download and Debug”或者直接單擊工具欄的下載按鈕將程序下載到CC2530開發平臺。程序下載成功后IAR自動進入調試界面,如圖3.19所示。

圖3.19 調試界面
(3)調試程序。進入到調試界面后,就可以對程序進行調試了,IAR的調試按鈕包括如下幾個選項:復位按鈕Reset、停止按鈕Break
、逐行運行Step Over
、跳入函數按鈕Step Into
、跳出函數按鈕Step Out
、下一條語句Next Statement
、運行到光標行Run to Cursor
、全速運行Go
和停止調試按鈕Stop Debugging
。
(4)查看變量。在調試的過程中,可以通過Watch窗口觀察程序中變量值的變化。在菜單欄中單擊“View→Watch”即可打開該窗口,如圖3.20所示。打開Watch窗口后,在IAR的右側即可看到Watch窗口,如圖3.21所示。

圖3.20 打開Watch窗口的方法

圖3.21 Watch窗口
Watch窗口變量調試方法:將需要調試的變量輸入Watch窗口的“Expression”輸入框中,然后按回車鍵,系統就會實時地將該變量的調試結果顯示在Watch窗口中。在調試過程中,還可以借助調試按鈕來觀察變量值的變化情況,如圖3.22和圖3.23所示。

圖3.22 Watch窗口變量調試(1)

圖3.23 Watch窗口變量調試(2)
(5)查看寄存器。在嵌入式系統的程序開發中,很重要的調試功能就是查看寄存器的值,IAR支持在調試的過程中查看寄存器的值。在程序調試過程中,單擊菜單“View→Register”即可打開寄存器窗口。默認情況下,寄存器窗口顯示的是基礎寄存器的值,單擊寄存器下拉框選項可以看到不同設備的寄存器,如圖3.24所示。

圖3.24 寄存器窗口界面
3.4 任務實踐:實現一個工程項目
3.4.1 開發設計
在開發過程中,需要使用IAR for 8051開發環境對CC2530微處理器的程序進行創建、編輯和調試,CC2530微處理器工程創建分為三部分:創建工程、添加源代碼、工程配置。
CC2530微處理器工程完成后需要使用IAR for 8501開發環境的代碼在線調試功能,在線調試功能又可分為三個方面,分別為:代碼單步調試、查看代碼變量參數、查看微處理器寄存器狀態。
3.4.2 功能實現
本任務的驅動源代碼如下。
#define D7 P1_0 //定義D7為P1_0口控制 #define D6 P1_1 //定義D6為P1_1口控制 void led_init(void); void led_test(void); void halWait(unsigned char wait); /**************************************************************************************** * 名稱:main() * 功能:主函數 ****************************************************************************************/ void main(void) { led_init(); while(1) { led_test(); } } /**************************************************************************************** * 名稱:void led_init(void) * 功能:LED初始化 ****************************************************************************************/ void led_init(void) { P1SEL&=~0x03; //P1.0和P1.1為普通I/O口 P1DIR|=0x03; //輸出 D7=1; //關LED D6 = 1; } /**************************************************************************************** * 名稱:void led_test(void) * 功能:LED閃爍函數 ****************************************************************************************/ void led_test(void) { D7=0; //D7閃爍 halWait(250); D7 = 1; halWait(250); D6=0; //D6閃爍 halWait(250); D6 = 1; halWait(250); } /**************************************************************************************** * 名稱:void halWait(unsigned char wait) * 功能:延時函數 ****************************************************************************************/ void halWait(unsigned char wait) { unsigned long largeWait; if(wait == 0) {return; } largeWait = ((unsigned short) (wait << 7)); largeWait += 114*wait; largeWait = (largeWait >> ( CLKCONCMD & 0x07 )); while(largeWait--); return; }
3.5 任務驗證
使用IAR開發環境打開任務設計工程,程序經過編譯后,通過SmartRF下載器下載到CC2530微處理器中,執行程序后,開發平臺上D1和D2兩個LED不斷地交替閃爍。
3.6 任務小結
通過本項目的學習和實踐,可以掌握在IAR for 8051開發環境中創建CC2530微處理器代碼工程,通過使用IAR for 8051開發環境可以對CC2530微處理器的代碼進行在線調試,學會使用IAR for 8051開發環境的調試工具可以更為深入地了解CC2530微處理器代碼的運行原理,以及CC2530微處理器程序在運行時內部寄存器的數值變化。
3.7 思考與拓展
(1)在IAR for 8051開發環境中建立CC2530微處理器工程需要配置哪些參數?
(2)IAR for 8051開發環境調試窗口的各個按鍵都是什么功能?
(3)如何將CC2530微處理器代碼中的參數加載到Watch窗口中?
(4)如何打開IAR for 8051開發環境的寄存器查看窗口?