實驗設備:
(1). AndeShapeTM ADP-XC5 Platform
(2). AndeShapeTM AICE-MCU
(3). AndesCoreTM N801
(4). AndeSight TM MCU V200 IDE
實驗目的:
當Netlist(.mcs)燒錄到FPGA之後,我們會先測試AICE否可以與CPU連線,以便在GDB Debuging時可以正常與CPU做連線。
我們會先使用ICEman測試AICE使否可以與CPU連線,測試前要先了解CPU clock是多少MHz,因為JTAG的clock不可以比CPU clock來的快,如果JTAG的clock比CPU clock快,就要使用ICEman的指令將AICE JTAG的clock調慢。
AndeShapeTMAICE JTAG clock: 48 / 30 / 24 / 15 / 12 / 7.5 / 6 / 3.75MHz。
AndeShapeTMAICE-MCU JTAG clock: 48 / 24 / 12 / 6 / 3 / 1.5MHz/750/375KHz。
Andes EmbeddedTM整個Debuging的架構如下圖所示,當AndeSightTMIDE 進行Debuging時,是使用GDB軟體來下達Debug指令,Debug指令再經由ICEman連接AICE讀取CPU內EDM(Embedded debug module)的資訊,進而得到CPU內部執行程序的狀態。
實驗步驟:
ICEman與AICE測試:
(1). 將Target board安裝好,接上電源,並將AICE-MCU連接至電腦,開啟電源(SW1),按下PWR ON(SW2),之後7-LED會顯示〝99〞。
(2). 使用滑鼠點選桌面的ICEman ICON。
(3). 輸入〝ICEman.exe -p 1234〞測試AICE是否可以連線至CPU,下圖是ICEman可以正確連線至CPU的狀態。
注意:
如果想要知道ICEman有支援哪些參數,可以輸入〝ICEman.exe -help〞,可以看到修改JTAK clock的参數是〝-c〞。
(4). 假設CPU clock比較慢,這時可能會造成ICEamn無法正常與CPU連線,此時可以將AICE JTAG clock降頻,輸入〝ICEman.exe –p 1234 –c 10〞,可以發現AICE JTAG clock由24MHz變為12MHz,其他可以調整的頻率可以參照-help。
(5). 當ICEman確定可以與CPU連線後,我們可以將參數加入至AndeSight TMIDE內,減少重覆設定的麻煩,我們使用滑鼠點選桌面AndeSight TMIDE ICON。
(6). 選擇〝Window〞>〝Preferences〞。
(7). 將步驟(4)所增加的參數加入至〝ICEman Misc Arguments〞欄位中,這裡輸入〝-c 10〞,輸入完成按〝OK〞既可。
中斷型態的選擇與設定:
Target board儲存程式的memory是ROM或是Flash就設定使用Hardware breakpoint,如果是使用RAM就設定成Software breakpoint,因為ADP-XC5使用的是SRAM,因此中斷都使用Software breakpoint,如果是拿到量產的MCU晶片可能就是選擇Hardware breakpoint,因為量產的MCU大多使用ROM 或是 Flash儲存程式。
Software breakpoint設定:
(1). 使用滑鼠在設定中斷點的區域按〝滑鼠右鍵〞,選擇〝Breakpoint Types〞設定〝C/C++ Breakpoints〞的Software breakpoint。
(2). 之後就可以設定中斷點,進行Debuging步驟。
Hardware breakpoint設定:
(1). 選擇〝Window〞>〝Preferences〞。
(2). 在〝ICEman Misc Arguments〞欄位中,原本增加的參數〝-c 10〞,再增加〝-reset-hold :-H〞(reset and hold)的參數,變成〝-c 10 -H〞,輸入完成按〝OK〞既可。
這是要讓ICEman收到GDB中斷點指令時,會停在Debug Configurations視窗下〝Set program counter at (hex):〞欄位設定的位置,一般都是設定為〝0x0〞,我們會在之後的步驟做設定。
(3). 選擇〝Run〞>〝Debug Configurations...〞。
(4). 勾選下列選項並輸入參數。
(5). 將編譯完成的燒錄檔(.bin),利用下列AndeSight IDE所提供的Real Board連結工具,選擇使用MCU IC設計廠商所提供的燒錄程式(ISP),將燒錄檔燒錄至MCU的Flashc或是ROM中。
(6). 使用滑鼠在設定中斷點的區域按〝滑鼠右鍵〞,選擇〝Breakpoint Types〞設定〝C/C++ Hardware Breakpoints〞的Hardware breakpoint。
(7). 之後就可以設定中斷點,進行Debuging步驟。
沒有留言:
張貼留言