下載燒錄后, 如何判定程序是否運(yùn)行
廢話少說. 記錄.
------------------------------------------------------------------------------------------------------------------------------------------------
1. 先用仿真器(JTAG/J-link)下載到板子內(nèi), 下載后, 在程序的第一行設(shè)置斷點(diǎn), 讓它停住, 能停住, 說明仿真器沒問題, 程序能執(zhí)行起來了.
2. 在檢查下 PC 寄存器的值是否正確. 以確定沒有跑飛掉, 在指定的范圍內(nèi).
3. 檢查下 CPU 內(nèi)部 RAM (或者外部的 SDRAM)的內(nèi)容是否和下載的執(zhí)行文件(bin, hex, elf等格式)相同.
4. 一般在開始處設(shè)置的是程序狀態(tài)寄存器(如 ARM 的 CPSR), 執(zhí)行后觀察相應(yīng)的寄存器值有沒有按照預(yù)期改變. 如, u-boot 源碼中的 start.S 文件中開始的語句:
[cpp] view plaincopy/*
* the actual start code
*/
start_code:
/*
* set the cpu to SVC32 mode, 設(shè)置狀態(tài)寄存器, 選定工作模式(匯編指令參考相關(guān)文檔)
*/
mrs r0, cpsr
bic r0, r0, #0x1f /* 指定位置 1 */
orr r0, r0, #0xd3 /* 清 0 指定位 */
msr cpsr, r0
5. 繼續(xù)單步執(zhí)行, 觀察 PC 指針是否跟著改變(除了函數(shù)調(diào)用, 中斷或 goto 語句外, PC 值一般都是累加的), 再觀察程序運(yùn)行的結(jié)果是否正確.
6. 其實(shí)還有個(gè)簡(jiǎn)單的方法, 就是用示波器來觀察相應(yīng)的引腳, 當(dāng)然你得有引腳引出來. 通過觀察波形也可以判斷程序是否正常. 不過這方法是有局限的.
如果上述步驟中沒有任何問題, 基本可以判定程序是運(yùn)行的, 仿真器無問題,CPU工作是正常的, 電源模塊暫時(shí)是正常的工作的. 要想判定整體的硬件和程序是否正常工作還需要做進(jìn)一步的測(cè)試.