天天看點

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

因為有很多小夥伴是從單片機轉過來的,對JTAG非常熟悉。想用JTAG來調試裸機代碼,而且一直用卡拷貝經常會出現虛拟機連接配接不上TF卡的情況。

I.MX6ULL本身是支援JTAG的,但是由于關于這個資料真的是太少了,而且還都是英文的,新手很難搞定。是以我們專門調試并整理了這方面的資料來供大家參考學習。

接下來,我先簡單介紹下怎麼使用JTAG來調試,後面會把詳細的步驟加到使用手冊中去。

1.1 調試需要的硬體環境

1、i.MX6ULL終結者開發闆一塊

2、JLNK V9下載下傳器一個

3、JLINK V9轉換闆一個(2.54mm轉2.0mm)

1.2 搭建開發環境

1.2.1 安裝JLINK V9驅動

首先我們需要安裝JLNK V9的驅動,驅動程式大家可以去網上下載下傳,為了友善大家使用我們已經下載下傳好,并儲存到CD光牒目錄的“i.MX6UL終結者CD光牒資料02_開發所需軟體JLINK V9驅動”目錄下了(我們使用的版本是V6.34)。下面我們開始安裝驅動程式。

首先我們滑鼠輕按兩下“JLink V6.34.exe”安裝程式,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

然後彈出安裝向導,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

然後我們點選“Next”按鈕繼續安裝,會彈出license版本許可對話框,我們點選“I Agree”按鈕,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

然後彈出是否需要建立桌面快捷方式的對話框,我們選擇建立,然後點選“Next”按鈕,繼續下一步,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

然後彈出安裝位置選擇對話框,我們使用預設的安裝目錄(如果需要安裝到其它目錄,可以自己選擇),然後點選“Install”按鈕,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

然後開始安裝,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

最後彈出安裝完成對話框,我們點選“Finish”按鈕。至此,JLINK V9的驅動安裝完成了。然後我們通過USB資料線連結JLINK V9下載下傳器到PC電腦上,我們在裝置管理器可以看到Winsows系統識别到了JLNK下載下傳器,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試
1.1.1安裝i.MX6ULL SDK開發包

NXP官方提供了i.MX6ULL的SDK開發包, 這個SDK包提供了Windows和Linux兩個版本,分别針對Windows系統和Linux系統。本章節我們使用Windows版本的SDK。Windows版本的SDK裡面的例程提供了IAR的工程版,這些工程是基于IAR開發環境來編譯的。I.MX6ULL的SDK開發包我們可以去NXP官網上下載下傳,為了大家使用友善,我們已經下載下傳好,并儲存在了CD光牒資料的“i.MX6UL終結者CD光牒資料01_開發及燒寫工具4.i.MX6ULL SDK包”目錄下。下面我們先來安裝下SDK開發包。

首先我們輕按兩下“SDK_2.2_MCIM6ULL_RFP_Win.exe”安裝程式,會彈出安裝界面,我們點選“Next”按鈕,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

然後我們一路點選next,SDK安裝就完成了。

1.2.3 安裝IAR開發工具

在上面安裝SDK的章節我們介紹了,SDK裡面提供了IAR的工程,是以我們需要在Windows系統下安裝IAR開發工具。大家需要注意SDK提供的IAR工程需要使用IAR 8以下的版本(筆者開始的時候安裝了IAR 8.2,結果在編譯的時候會報錯誤,後來更改成了IAR 7.8,編譯通過)。大家可以去網上下載下傳IAR安裝程式,為了大家使用友善,我們已經下載下傳好,并儲存在了CD光牒資料的“i.MX6UL終結者CD光牒資料02_開發所需軟體IAR7.8安裝程式”目錄下。IAR的安裝在這裡就不給大家示範了,詳細的步驟會在使用手冊中添加,不然推文的篇幅就太長了。

1.3IAR JLNK調試SDK程式

在1.2.2章節我們安裝了SDK程式(安裝位置:G:nxp),在1.2.3章節我們安裝了IAR開發工具,接下來我們打開IAR開發工具,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

在本章節我們主要是講解如何通過IAR+JLINK調試i.MX6ULL的IAR工程,關于IAR工具的具體使用,大家可以網上查找相關的文檔。然後我們點選“file->open->workspace”,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

然後會打開“Open Workspace”對話框,我們這裡以sdk裡面的hello_world工程為例,來學習一下通過JLINK來調試i.MX6ULL的程式。該工程的目錄在sdk安裝位置的“boardsevkmcimx6ulldemo_appshello_worldiar”目錄下面,因為我們的sdk安裝到了G盤的nxp檔案夾下,是以hello_world工程的絕對路徑是“G:nxpboardsevkmcimx6ulldemo_appshello_worldiar”(大家可以根據自己sdk安裝的位置,選擇對應的目錄)。我們在“Open Workspace”對話框裡選擇hello_world工程的目錄,最終在該目錄下選擇“hello_world.eww”(IAR工程檔案的字尾名是eww),然後點選“打開”按鈕,如下圖所示

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

Hello_world工程打開後的界面如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

我們可以看到該工程提供了四種編譯方式,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

我們這裡使用預設的“ddr_debug”方式編譯該工程。我們可以點選工具欄上的“Make”按鈕,編譯該工程,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

從上圖的編譯結果輸出資訊,我們可以看到編譯成功。然後我們連接配接JLNIK V9下載下傳器到i.MX6ULL終結者開發闆的JTAG接口,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

由于i.MX6ULL晶片的JTAG接口和SAI(聲霸卡)是複用的,是以我們使用JTAG接口的時候需要修改下開發闆(

V1.0的底闆需要去掉底上的電阻R183;V1.1的底闆需要去掉聲霸卡晶片旁邊的跳線帽(J50)

)。然後我們連接配接開發闆的調試序列槽到PC電腦上,并在電腦上打開序列槽終端,序列槽終端的波特率設定成115200,8位資料位,無奇偶校驗,1位停止位,不選擇流控,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

然後我們給開發闆上電,接着我們在IAR工程界面的菜單欄點選“Debug without Loading”圖示,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

如果JLINK和開發闆的JTAG接口連接配接正确的話,會進入到調試界面,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

從上圖我們可以看到hello_world的程式已經開始運作,程式的指針在main函數入口處停止,等待我們執行調試。IAR進入調試模式以後,在菜單欄上調試相關的快捷圖示會變成有效狀态(滑鼠可以點選),與調試相關的幾個快捷圖示如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

從上圖,我們可以看到一共有7個快捷圖示,他們分别是:

Step Over

:單步執行(沒點選一次,程式相應的運作一行)

Step Into

:如果程式指針目前指向的是一個函數調用,如果點選此圖示,則會進入到目前指向的這個函數内部

Step Out

:與Step Into想對應,如果我們通過Step Into進入到某個函數内部去執行了,此時想傳回到之前的函數,并繼續執行此前函數的吓一跳指令,我們可以點選此圖示

Next Statement

:右擊某一行選“Set Next Statement”,可以不執行中間程式,執行點直接到此行,用于不執行某些代碼

Run to Cursor

:程式調試的時候運作到光标處(我們可以在任意一行程式滑鼠單擊一下,使光标定位到該行,然後點選“Run to Cursor”,程式就會運作到光标所在的行,并停住)

Go

:執行程式,程式遇到斷點會停止,如果沒有設定斷點,程式就會一直繼續執行

Stop Debugging

:結束調試模式

從上圖我們可以看到“Go”快捷圖示的功能是程式繼續運作,如果遇到斷點,就停止,否則一直往下執行。上圖中的程式最後進入while(1)主循環,在while(1)主循環裡面主要實作接收序列槽資料,并把接收到的序列槽資料通過序列槽再次發送出去。為了驗證“Go”快捷圖示在沒有遇到斷點的情況下會一直執行,我們繼續點選“Go”快捷圖示,繼續運作程式,我們可以看到序列槽終端列印輸出了“hello world.”字元串,如下圖所示:

開發闆 內建下載下傳器 jtag_迅為I.MX6ULL終結者開發闆支援JTAG調試

關于i.MX6ULL使用JTAG調試我們就先介紹到這裡。我們可以使用JLink.exe下載下傳編譯好的二進制程式到i.MX6ULL開發闆的記憶體指定位置,然後從該位置執行我們的二進制程式。具體的使用我們會在後面的文檔中給大家介紹。