汇编语言笔记-keil5软件仿真及调试
目錄
- keil5調試功能
- 軟件仿真設置
- 硬件調試設置
- 調試方法
- 調試選項及介紹
- 調試窗口
- Command
- Disassembly
- Symbols
- Registers
- Call Stack(+Locals)
- Watch
- Memory
- Serial
- Logic Analyzer
- 外設寄存器查看
- 軟件仿真限制
keil5調試功能
???????keil5的Debug選項分為軟件仿真和硬件調試。兩種方式的區別在于,前者不需要硬件平臺,而是通過軟件模擬芯片的運行,此時可以通過邏輯分析儀等查看(模擬)芯片輸出(當然硬件調試也可以使用邏輯分析儀等功能)。
軟件仿真設置
(1)勾選Use Simulator設置使用軟件仿真。
(2)勾選Run to main()使調試時,程序自動運行到main函數。
(3)Restore Debug Session Setting一般默認即可,該部分為復位調試窗口的組件,勾選后,調試時對應的窗口或狀態恢復默認值。
(4)設置Dialog DLL為DARMSTM.DLL以及設置Parameter為-pSTM32F103ZE(芯片參數按使用的芯片相應修改即可,當然,部分芯片無法仿真),這部分為DLL文件及芯片參數設置區。
Dialog DLL和Parameter不修改的話,后面運行時可能會報錯。
硬件調試設置
調試方法
???????設置結束后,點擊“Debug”-“Start/Stop Debug Session”開始Debug。
???????此時,一般界面如下所示,在代碼編輯區的左側,會出現灰色區域、藍色和黃色箭頭,黃色三角形代表將要執行的代碼,藍色的三角形表示當前光標所在代碼,點擊灰色區域可添加斷點。通過調試選項或調試窗口即可對代碼進行Debug。
斷點是調試器的功能之一,可以讓程序停止在設置斷點的語句。在調試過程中,可在程序的某一處設置斷點再點擊Run運行,此時當程序運行至該位置時自動停止。
調試選項及介紹
調試窗口
???????通過“View”或調試選項旁的圖標可以打開相應的調試窗口:
Command
???????命令顯示窗口,如下圖所示,在該窗口“命令輸入區”輸入相應調試命令即可完成相應功能,調試命令參考調試命令文檔。
注意文檔的第2句話:例如,BreakAccess 必須輸入為 BA 或 ba。即文檔的表格中第一列展示的命令不能直接輸入到命令輸入區,可以點擊以查看真正的命令。
Disassembly
???????反匯編窗口,如下圖所示,該窗口將原代碼(即代碼編輯區的代碼)、機器碼和反匯編代碼比對顯示,其中,紅色字體為原代碼,原代碼前是對應語句的行號。紅色字體下面的黑色字體為對應的機器碼和反匯編代碼,黑色字體可以分為三個部分。
???????此時,點擊Disassembly窗口,代碼編輯窗口的藍色箭頭會指向對應的代碼。
根據《ARM Cortex-M3與Cortex-M4權威指南》一書的圖2.5,反匯編代碼由機器代碼生成,而不是由編譯器將C語言代碼直接編譯而成(這樣好像反匯編的“反”更說得通)。
Symbols
???????模塊窗口,如下圖所示,該窗口用于顯示了工程下各個文件中的函數(名稱、地址、類型)以及函數內的變量(名稱、地址、類型),在函數位置右鍵點擊可以進行跳轉或復制函數的位置,在變量位置右鍵點擊可以將其添加至watch、memory或復制位置。
Registers
???????寄存器窗口,如下圖所示,該窗口用于顯示R0~R15、xPSR等內核寄存器的值(不是外設寄存器),如下圖所示,關于內核寄存器的介紹可以查看ARM架構基本寄存器。
Call Stack(+Locals)
???????調用關系和局部變量窗口,如下圖所示,該窗口用于展示當前函數調用關系及函數的局部變量(包括參數和內部變量),如下圖所示,調用關系為main函數調用SetTimeVal函數,SetTimeVal函數中包括type和timeVal兩個參數。
Watch
???????如下圖所示,該窗口用于查看變量,包括變量名、值以及變量類型,可以點擊Value一欄對變量的值修改。
???????將變量添加至Watch窗口有多種方法,除了從其他窗口添加外,還可以從代碼編輯區添加,如下圖所示,點擊變量再鼠標右鍵,選擇“Add ‘type’ to”-“Watch1”即可,Watch1和Watch2沒有區別,估計只是為了方便用戶多個窗口同時查看。
Memory
???????內存窗口,如下圖所示,該窗口用于顯示存儲器中的數據,上方Address區用于輸入變量名或地址值,此時下面的顯示欄會移動到對應地址存儲的數據。
Serial
???????串口模擬窗口,該窗口用于模擬串口輸出數據,UART #1對應UART1,UART #2對應UART2。將鼠標移至顯示區并點擊右鍵,選擇相應選項后可清空串口、復制到剪貼板或切換顯示模式(切換成ASCII、HEX等)
Logic Analyzer
???????邏輯分析儀窗口,如下圖所示,該窗口作用類似邏輯分析儀。使用前需要點擊左上角的“Setup…”后在彈出窗口內添加引腳,確定后點擊運行即可查看引腳的輸出波形。(添加方法和文件路徑添加方法類似,以添加PB5引腳為例,在彈出窗口點擊右上角的虛線框并輸入PORTB.5即可),引腳添加后,在“Setup…”下的灰色區域鼠標右鍵可設置輸出類型(Analog、bit、state)
注意,如果前面調試選項的Dialog DLL和Parameter沒有相應設置的話,添加引腳可能會報錯。
???????添加完畢后并修改輸出類型為bit后,點擊Run即可查看該引腳的輸出電平(這里使用了PWM輸出實驗作為示例)
外設寄存器查看
???????上述的Register窗口查看的是處理器使用的工作寄存器,一般只有匯編語言會用到,通過固件庫或寄存器開發單片機時,都是通過C語言設置單片機的各個寄存器,而通過keil5的軟件仿真或硬件調試可以對芯片的外設寄存器查看及修改。
???????如下圖所示,通過“View”-“System Viewer”-“GPIO”-“GPIOA”查看相應的寄存器。
???????點擊后,彈出如下圖所示的GPIOA窗口,點擊對應的Value值即可對其修改。
???????當然,像上面那樣修改比較麻煩,還需要查閱對應的手冊,通過“Peripherals”-“General Purpose I/O”可打開其它形式的寄存器窗口。
???????點擊GPIOA后,彈出如下圖所示的General Purpose I/O A窗口,選中相應引腳即可在Selected Port Pin Configuration設置其模式,也可以在下方勾選某個寄存器的某個位,達到引腳輸入/輸出高/低電平的設置。
軟件仿真限制
???????軟件仿真不是所有芯片都可以,部分芯片(如stm32F4以及GD各款)是無法軟件仿真,會報錯,好像聽說要修改DLL文件或修改讀寫權限,但感覺可能性不大,文檔中包含了可進行軟件模擬的芯片,如其中的表所示。
總結
以上是生活随笔為你收集整理的汇编语言笔记-keil5软件仿真及调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 班级静态网站设计
- 下一篇: untiy UI的坐标转为屏幕坐标