長期以來,總是有不同級別的工程師在使用Blackfin開發(fā)產(chǎn)品時遇到這樣的問題:在VDSP或CCES下調(diào)試dxe,一切都正常,但是燒寫ldr脫機運行時,程序甚至連啟動都不能啟動。作為技術(shù)應(yīng)用工程師,我深感與其每次逐個解答客戶的疑問,不如讓客戶掌握一種調(diào)試方法,更高效地解決問題。下面就分別以BF518和BF609為例,簡單介紹一下這種調(diào)試ldr的方法,其它Blackfin的調(diào)試方法類似。
• Visual DSP++下的調(diào)試
1. 為了方便調(diào)試,修改你的程序,在0XFFA0 0000這個位置加一句jump.s 0。生成新的ldr并下載到flash或其它存儲設(shè)備。 2. 配置Halt Only的平臺。 a. 打開Visual DSP++,選擇Disconnect from Target,然后在菜單上選擇session->New Session… b. 點擊configurator
c. 雙擊你所用的芯片 d. 在Platform Properties窗口里,雙擊Devices List里的器件。 e. 在新彈出的Device Properties窗口里,選擇halt(或者do not disturb) f. 選擇OK,保存剛剛的設(shè)置。
3. 關(guān)閉Visual DSP++,把燒好ldr的目標(biāo)板連接上JTAG,上電。 4. 建立新session。 a. 回到session wizard(點擊New Session出現(xiàn)的窗口),選中你要用的芯片,點擊Next,選則相應(yīng)的連接類型(Select Connection Type),點擊Next,這時的Select Platform窗口會出現(xiàn)你剛剛配置的平臺。選中該平臺,然后依次點擊Next和Finish建立連接。
5. 通常,系統(tǒng)無法正常BOOT,當(dāng)Visual DSP++連接到目標(biāo)板掛起程序時,程序已經(jīng)出錯。我們通過程序是否停在jump.s 0來判斷BOOT過程是否完成。如果BOOT完成,系統(tǒng)在這里循環(huán)等待Visual DSP++接管控制權(quán)。剛連接session時,會執(zhí)行一個仿真器中斷程序,在0xEFxx xxxx處,按F5或者點擊RUN之后,如果程序沒有執(zhí)行到0xFFA0 0000,說明Boot過程出錯,則需要查看SDRAM是否配置正確,Boot模式選擇是否正確,如果這兩者都正確,則可能需要用示波器觀察啟動器件的時序進一步分析。如果正常BOOT,程序會在0xFFA0 0000等待。你可以在寄存器窗口里修改PC的值到下一條指令的位置,這樣,你就可以單步跟蹤以后的執(zhí)行情況了。 6. BF51x,BF52x,BF54x這幾個系列的Blackfin支持Lockbox技術(shù),能夠嚴(yán)格地保護客戶的代碼安全。不過,它們對啟動也有特殊的要求:即使你不用Lockbox技術(shù),即不需要用到OTP,也必須給OTP供電,否則芯片將無法正常BOOT。
• CCES下的調(diào)試
CCES下對“halt only”這類session的定義和Visual DSP++很不一樣。 1. 為了方便調(diào)試,可以在芯片L1 code的起始地址加一句jump.s 0,生成新的ldr并下載到flash或其它存儲設(shè)備。 2. 用仿真器連接已經(jīng)燒寫好ldr的板子和裝有CCES的電腦,和VDSP的調(diào)試一樣,在連接之前,板子和仿真器都不要上電。連接之后給二者上電。 3. 打開CCES,打開你要調(diào)試的工程所在的workspace,右鍵點擊該工程,選擇“debug as”里的debug configurations。 4. 在debug configurations窗口里,session列,program(s) to load欄目下,點擊并加載你要調(diào)試的工程,比如這里的vat_real_time_adsp_bf609 Debug。也可以點擊右側(cè)Edit按鈕修改已選session的配置。
5. 彈出窗口如下圖所示,在option里,選擇load symbol only,則第四個選項自動變灰,不能選擇;一定不要選擇reset core before load。 6. 按OK保存你的設(shè)置;氐礁复翱,點擊Debug即可開始調(diào)試。 7. 用在VDSP下同樣的方法進行跟蹤調(diào)試。
具體可見此文檔:鏈接: https://pan.baidu.com/s/1eNLijwFGdU6WEinpuIFsXw 密碼: 126s
|