在AXD下用MULTI-ICE調試,出現cause:Undefined instruction

 

artical from:  http://blog.chinaunix.net/uid-23601235-id-2395268.html

 

在AXD下用MULTI-ICE調試storlink,出現cause:Undefined instruction,一按GO就出現Processor FA5 raise an exception .cause:Undefined instruction 
目前的解決辦法是
1,每次DEBUG前要是給板子復位就可以調試,進入到C要是不DEBUG前不復位,就會進入反彙編裏面
2,每次DEBUG前要初始化SDRAM,具體初始化方法如下:
要把映像文件加載到SDRAM中,除了要正確設置好映像文件的RO段基地址外(對於一個加載時域和運行時域相同的映像文件來說,RO段基地址實際上就是該映像文件在存儲空間的起始地址),更關鍵的是要對SDRAM進行初始化。因爲在上電時,SDRAM是沒有被初始化的,所謂初始化SDRAM,就是要設置處理器的SDRAM空間以及讀寫SDRAM的時序參數,因而SDRAM在初始化之前是不能進行讀寫操作的。
啓動AXD時自動初始化SDRAM:將初始化SDRAM的命令序列保存爲一個name.txt文本文件(代碼如下),然後在AXD的主窗口下選擇菜單Options->Configure Interface...,在Session File一頁中選擇“Run Configuration Script”,將該name.txt文本文件作爲一個腳本加進來,確定。這樣以後每次啓動AXD時,就會自動運行該腳本來完成對SDRAM的初始化。
 
在設置ADS的編譯環境的時候要設置RO Base 如果這一項填0x00000000,表示把裸機程序燒寫到Nand Flash 的0地址處,這樣會把原先的系統給擦除掉。
 
如果這一項填0x30000000的話,對應的ouput選項中Image entry point 也要是0x300000000,表示把裸機程序燒寫到SDRAM中運行,掉電後就沒有了,而此時原先的系統還在(友善之臂的手冊4.1章節教的方法就是燒寫到SDRAM中運行的)。
燒寫到Nand Flash的0x00000000是不會有錯誤提示的。而燒寫到SDRAM就出現以下提示,或者即使沒出現也不能在AXD調試窗口進行下載,運行(包括單步運行)。
 
我總共遇到的提示:
1、software interrupt (SWI) 0xffffff occured in ARM mode @ address 0x2FAE0000
2、processor ARM79_0 raised an exception
   Cause:Undefined instruction
3、無法添加C:\Documents and Settings\第四空間\default-1-2-0-0.ses

1、
在ADS執行make後,點擊debug按鈕,
提示:不能添加C:\Documents and Settings\第四空間\default-1-2-0-0.ses
原因:是有中文名。我原來的賬戶名是第四空間。後來改了可這個文件還是存在。
所以,我把default-1-2-0-0.ses文件放到Documents and Settings目錄下了。後來,關掉當前AXD,重新點擊ADS下debug按鈕的時候彈出個對話框,選擇好這個文件即可。(這個是針對我而言的,如果您的計算機帳戶不是中文應該不會出現這個問題)
2、
在AXD點擊運行後,
提示: software interrupt (SWI) 0xffffff occured in ARM mode @ address 0x2FAE0000  (這個解決的辦法主要參考網上的方案)
原因:是沒有初始化SDRAM

方法:
ADS 項目屬性設置:
-ro-base = 0x30000000
entry 0x30000000
Init Section: 2440init.o Init
AXD下需要加載一個SDRAM初始化文件。(在1提示解決的前提下)

AXD下-->Option->Config Interface->session file->run configuration script.

編輯一個初始化文件保存爲.txt文件(名字不取中文即可,我也沒試過取中文得不得),
寫好後存放到Jlink-V8的安裝目錄JLinkARM_V408k下(路徑中最好也不要有中文),文本內容如下:

Setmem 0x53000000 0x00000000 32
Setmem 0x4A000008 0xFFFFFFFF 32
Setmem 0x4A00001C 0x000007FF 32
Setmem 0x53000000 0x00000000 32
Setmem 0x56000050 0x000055AA 32
Setmem 0x4C000014 0x00000007 32
Setmem 0x4C000000 0x00FFFFFF 32
Setmem 0x4C000004 0x00061012 32
Setmem 0x4C000008 0x00040042 32
Setmem 0x48000000 0x22111120 32
Setmem 0x48000004 0x00002F50 32
Setmem 0x48000008 0x00000700 32
Setmem 0x4800000C 0x00000700 32
Setmem 0x48000010 0x00000700 32
Setmem 0x48000014 0x00000700 32
Setmem 0x48000018 0x0007FFFC 32
Setmem 0x4800001C 0x00018005 32
Setmem 0x48000020 0x00018005 32
Setmem 0x48000024 0x008E0459 32
Setmem 0x48000028 0x00000032 32
Setmem 0x4800002C 0x00000030 32
Setmem 0x48000030 0x00000030 32


編寫存放好該文本後按上述方法添加即可。到此我困惑的問題也得到了解決。
在此要感謝給我幫助的朋友和帖子。希望我的這個總結能幫到你的忙。

要注意的是如果這次配置好了,有一次使用的文件的路徑中有中文,那麼下一次就得沖洗加載這些文件。
所以工程不要放在有中文的目錄下。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章