KEIL在線調試


程序調試方式

(1) 使用SEGGER J-Flash(J-Link)下載程序到閃存中運行。

(2) 使用串口ISP 來下載HEX 文件到CPU 中運行。

(3) J-Link + MDK 組合,來在線調試程序(可下載、單步調試)。

 

下載:是將具體的文件如.axf或HEX下載到開發板的flash(SRAM)中去,在開發板啟動之后就會運行所下載文件。根據運行結果再將修改的程序下至開發板中運行。

  • 通過J-Link下載.axf文件時是在J-Link開發板與PC連接好后,通過點擊KEIL中的“load”按鈕將.axf文件下載到開發板內。
  • 通過串口ISP下載HEX文件在C51中常見,如51下載程序到單片機內

 

在線調試:通過調試器(如J-Link)將開發板和PC相連,既將程序下載到開發板中運行又能看見程序運行的結果(如變量的值)。

 

2 MDK-RAM-keil + J-Link在線調試

(1) J-Link + 開發板連接PC

 

 

Figure1:使用在線調試工具J-Link

 

(2) 設置項目編譯屬性

因為是使用J-Link在線調試程序,需要選擇J-Link調試工具(建立工程的時候如果設置好了就不用再設置了)。如果J-Link連接開發板的接口為JTAG則PORT要選擇”JTAG”。如下圖:

 

 

Figure2:選擇J-Link調試器

如果“JTAG Device Chain”處有內容則說明檢測到了設備。

 

 

還需要在Utilities選項中做一些設置:

 

 

Figure3:Utilities設置

在”settings”中,點擊”Add”按鈕時選中開發板的控制芯片即可。然后點擊OK保存。現在就可以進行在線調試了。

 

(3) 在線調試

[1] 單步調試

開始調試

 

 

 

程序經1編譯通過后(第一個按鈕表示只編譯當前處在編輯界面的文件,第二個按鈕表示編譯整個工程中修改過或還未編譯過的文件,最后一個按鈕表示重新編譯所有的文件)。確認J-Link連接完好,開發板已上電后,點擊2中的按鈕開始/結束在線調試

 

 

Figure4:在線調試開始

1:綠色圖標表示光標所在的行,黃色圖標處為要運行的下一條語句。在線調試開始時處在mian()入口處。

2:這是調試開始后彈出的窗口,watch窗口用來觀察程序中各種變量的“值”及“類型”,可以在watch窗口中手動添加待觀察變量。

3:程序中的tx_data為具11個元素的數組,從值可以看出來程序還未運行到175行處。

 

 

 

單步調試按鈕

單步模式下可以點擊以下圖標讓程序往下執行:

 

以上幾個圖標對應的快捷鍵依次是:

  • F11:                單步執行,每次執行一行。
  • F10:                跳過當前行語句。
  • Ctrl + F11:         跳出當前函數。
  • Ctrl+ F10:         運行到光標所處的行。

 

 

按F11到176行時,經執行過得tx_data數組個元素的值就在watch窗口中顯示出來。

 

工具欄窗口

在“在線調試”狀態下,許多“工具欄小窗口”會冒出來。

 

在紅色方框內的幾個小窗口從左到右依次是:

  • Register Window:    用於顯示各寄存器的值,並顯示運行時間。
  • Call  Stack Window:       用於顯示main函數內的變量及所調用的子函數地址/值。
  • Watch Window:    用來查看特殊變量的窗口。用戶可自行輸入某個變量名,根據程序運行的進度查看其值。

其它的窗口也有其特殊的用途,在對其有需要時可以打開瞧瞧。打開和關閉這些窗口的方式都是點擊一下圖標的方式。

 

查看寄存器值

  • 進入調試之后,點擊"Peripherals",然后選擇要查看的寄存器名稱。
  • 進入調試之后,點擊"View->SystemVier",然后選擇要查看的寄存器名稱。
  • 進入調試之后,點擊"View->Watch Windows"或者點擊工具欄,只輸入指針所指的寄存器的名稱。

 

[2] 設置斷點調試

單步調試畢竟是單步或者跳過函數的執行。在程序十分龐大時,F系列的鍵或者鼠標都要被按壞,設置斷點后,程序運行到斷點處就停下了,然后就可以再用單步調試的方式進行調試。

 

開始在線調試

點擊調試按鈕開始調試,如圖Figure 5。

 

斷點設置

到想要運行的代碼處設置一個斷點。設置斷點的方法:

  • 在源代碼行號前雙擊。
  • 用開始/停止在線調試旁邊的圖標。
  • Debug >> Insert/Remove Breakpoint(F9)。

使能/消除使能/移除斷點的方法也是以上列舉的3點。

 

點擊Run          

  • Debug>> Run(F5)
  •  

經以上3個步驟后,代碼就從上一次代碼停留處運行到斷點處,結合Figure 4看下圖。

 

 

Figure6:斷點處

 

3 C基本數據類型占內存大小查看

將以下變量聲明為全局變量后,在Watch窗口中觀察的各變量的值。

         cl      =sizeof(char);

         ucl    = sizeof(unsigned char);

         scl    = sizeof(signed char);

        

         il       = sizeof(int);

         ui     = sizeof(unsigned int);

         sil     = sizeof(signed int);

        

         ll       = sizeof(long);

         ul      = sizeof(unsigned long);

         sl      = sizeof(signed long);

         lll      = sizeof(long long);

        

         fl       = sizeof(float);

        

         dl      = sizeof(double);

         ldl     =sizeof(long double);

 

Watch窗口中各變量的值:

 

 

Figure7:Cortex-M3 C語言基本類型大小

 

在keil下的編譯器+stm32f10xxx芯片下,char占一個字節,int占4個字節,long占4個字節,long long 占8個字節,float占4個字節,double占8個字節, long double 占8個字節。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM