ARM ADS中的AXD 調試經驗集錦 1、如何設置AXD連接的Target。 ARMUL是一種ARM的模擬器。一般的算法或者一些無需和硬件中斷等設備打交道的程序都可以通過這個進行調試。使用上非常簡單。 我們一般上板子進行調試都是通過MutiICE來進行。在剛剛安裝了系統的時候,菜單中沒有MutiICE,需要我們手動添加: 點擊ADD按鈕,然後在彈出的文件瀏覽中,選擇“C:/Program Files/ARM/Multi-ICE/Muti-ICE.dll”(默認安裝的話)。然後點擊“確定”。這樣就把MutiICE的調試接口安裝上了。 2、如何保存當前的調試現場。 Options->General tab. 這裏確認Save and load default sessions 選項 是選中的。然後打開Session File,確保Rselect Target和Reload images 選項是選中的。 在設置保存後,我們在關閉AXD後,再次啓動,就會自動加載上次的image,恢復寄存器了。 如果需要保存多個現場,那麼就在設置保存後,在File菜單中選擇Save Session來進行保存。不過注意,保存的路徑中不能 有空格和特殊字符。最好保存在ClearCase上。在需要恢復現場的時候,只需要Load Session就一切OK。你以前辛辛苦苦設置的斷點、 Watchpoint全都回來了。 3、不能設置斷點,怎麼辦? A:清空CPU的Vector Catch 。 在Options->Configure Process..中清除。 B:Run一下,馬上暫停。 這種方式對要求不高的斷點(諸如設置在APP層中的斷點)比較合適。方便。 C:清除以前的斷點。 一般發生在Flash調試的情況。首先清除以前的斷點,然後才能設置新的斷點。 D:命令行 spp vector_catch 0 其實和A相同。如果寫在開機script中,那麼就可以自動排除開機無法設置斷點問題。 E:啓動AXD的時候使用—debug這個參數,這樣就可以添加一個自動斷點在Main()上。 4、 如何不reload image就可以重新從頭開始調試。 A:設置Current寄存器。 點擊 打開process register->current 組。設置pc爲0 , cpsr爲 svc模式下。關閉Thumb模式。這時F5即可運行下去。 B:運行腳本 這種方式速度更快,也方便。上上之選。 setpc 0 sreg cpsr 0xd3 5、 如何無條件跳轉? 把光標定在需要跳轉到的代碼上,右鍵菜單execute->Set Next Statement .
IDA pro ,非常好的axf解析工具。可以統計axf文件中的函數、全局變量、調用關係等。界面非常友好,代碼界面可以清楚看出函數引用關係、變量初始話、變量引用、修改的統計。 可以說,IDA Pro是彙編級的Source insight 。大家可以在網絡上下載它的最新版安裝使用。
1、 在有jTag調試口的板子上Download一個版本。 2、 選擇 File->load debug symbols 。然後選擇CodeWarrior上Release版生成的那個AXF。 3、 現在就可以調試Flash上的程序了。和Debug完全一樣。不過注意,在這種情況下,一般只能設置2個斷點。
諸如: 從axf文件中抽出二進制代碼:fromelf –bin –output a.bin a.axf 從axf文件中抽出二進制代碼:fromelf –m32 –output a.s32 a.axf 9、 FAQ Q: 生成的ram方式的redboot映像文件,應該使用什麼工具調試編譯的ram方式的redboot。 用ADS調試工具只能加載.axf格式的文件 A: 用ADS還可以加載bin文件(File->Load Memory From Memory...),可以使用ADS命令行或腳本初始化SDRAM load bin文件時需要指定載入地址,對於s3c44b0x通常爲0x0c040000,即在相應的ldi文件中指定的 將BIN程序Load後,將PC指針修改爲0X0C040000即可 |