打印
[嵌入式Linux]

【迅为i.MX6ULL终结者】JTAG调试文档完整版

[复制链接]
459|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jugaga|  楼主 | 2020-4-28 14:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    因为有很多小伙伴是从单片机转过来的,对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的驱动,驱动程序大家可以去网上下载,为了方便大家使用我们已经下载好,并保存到光盘目录的“i.MX6UL终结者光盘资料\02_开发所需软件\JLINK V9驱动”目录下了(我们使用的版本是V6.34)。下面我们开始安装驱动程序。
首先我们鼠标双击“JLink V6.34.exe”安装程序,如下图所示:




然后弹出安装向导,如下图所示:





然后我们点击“Next”按钮继续安装,会弹出license版本许可对话框,我们点击“I Agree”按钮,如下图所示:




然后弹出是否需要创建桌面快捷方式的对话框,我们选择创建,然后点击“Next”按钮,继续下一步,如下图所示:





然后弹出安装位置选择对话框,我们使用默认的安装目录(如果需要安装到其它目录,可以自己选择),然后点击“Install”按钮,如下图所示:




然后开始安装,如下图所示:




然后弹出更新对话框,我们点击“OK”按钮,如下图所示:




最后弹出安装完成对话框,我们点击“Finish”按钮,如下图所示:




至此,JLINK V9的驱动安装完成了。然后我们通过USB数据线链接JLINK V9下载器到PC电脑上,我们在设备管理器可以看到Winsows系统识别到了JLNK下载器,如下图所示:





1.2.2 安装i.MX6ULL SDK开发包
NXP官方提供了i.MX6ULL的SDK开发包, 这个SDK包提供了Windows和Linux两个版本,分别针对Windows系统和Linux系统。本章节我们使用Windows版本的SDK。Windows版本的SDK里面的例程提供了IAR的工程版,这些工程是基于IAR开发环境来编译的。I.MX6ULL的SDK开发包我们可以去NXP官网上下载,为了大家使用方便,我们已经下载好,并保存在了光盘资料的“i.MX6UL终结者光盘资料\01_开发及烧写工具\4.i.MX6ULL SDK包”目录下。下面我们先来安装下SDK开发包。
首先我们双击“SDK_2.2_MCIM6ULL_RFP_Win.exe”安装程序,会弹出安装界面,我们点击“Next”按钮,如下图所示:




然后弹出License许可对话框,我们选择“接受协议许可”,然后点击“Next”按钮,如下图所示:









然后弹出安装位置选择界面,根据我们的要求选择好安装目录,然后点击“Next”按钮,如下图所示:





然后弹出安装界面,我们点击“Install”按钮,开始安装,如下图所示:





然后开始进入安装界面,开始安装SDK,如下图所示:




最后弹出安装完成界面,我们点击“Finish”按钮,如下图所示:




至此,SDK安装就完成了。

1.2.3 安装IAR开发工具
在上面安装SDK的章节我们介绍了,SDK里面提供了IAR的工程,所以我们需要在Windows系统下安装IAR开发工具。大家需要注意SDK提供的IAR工程需要使用IAR 8以下的版本(笔者开始的时候安装了IAR 8.2,结果在编译的时候会报错误,后来更改成了IAR 7.8,编译通过)。大家可以去网上下载IAR安装程序,为了大家使用方便,我们已经下载好,并保存在了光盘资料的“i.MX6UL终结者光盘资料\02_开发所需软件\IAR7.8安装程序”目录下。下面我们开始安装下IAR开发工具。
首先鼠标双击“EWARM-CD-7804-12495.exe”安装程序,打开IAR安装界面,然后我们选择“Install IAR Embedded workbanch”,如下图所示:




然后进入IAR安装界面,我们点击“Next”按钮,如下图所示:





然后进入到License协议许可界面,我们选择“接收License协议许可”,并点击“Next”按钮,如下图所示:




然后进入到安装目录选择界面,可以根据需要选择合适的安装目录(这里我选择默认的安装目录),然后点击“Next”按钮,如下图所示:




然后进入USB驱动安装界面(IAR安装程序里面集成了很多种USB的驱动,我们在这个界面可以选择安装需要的USB驱动),我们选择默认设置,点击“Next”按钮,如下图所示:



然后进入到选择在Windows菜单,应用程序里面创建的目录名字,这里我们选择默认即可,然后点击“Next”按钮,如下图所示:




然后进入到转呗安装界面,我们点击“Install”按钮开始安装,如下图所示:



然后进入到开始安装界面,如下图所示:


然后会弹出安装Dongle驱动的对话框,我们选择“是”按钮,如下图所示:


然后进入安装界面,如下图所示:


然后会进入安装完成界面,我们点击“Finish”按钮,如下图所示:


然后继续进入安装界面,我们点击“OK”按钮,如下图所示:


接下来可能会提示安装一些驱动,我们选择“是”,同意安装即可。安装完成最后会运行IAR,进入到IAR程序界面,如下图所示:




由于IAR是收费软件,安装完成我们还需要进行序列号验证。我们需要输入正确的序列号才能使用,否则编译程序会提示License的错误。至此,IAR应用程序安装完成。

1.3 IAR JLNK调试SDK程序
在1.2.2章节我们安装了SDK程序(安装位置:G:\nxp),在1.2.3章节我们安装了IAR开发工具,接下来我们打开IAR开发工具,如下图所示:




在本章节我们主要是讲解如何通过IAR+JLINK调试i.MX6ULL的IAR工程,关于IAR工具的具体使用,大家可以网上查找相关的文档。
然后我们点击“file->open->workspace”,如下图所示:



然后会打开“Open Workspace”对话框,我们这里以sdk里面的hello_world工程为例,来学习一下通过JLINK来调试i.MX6ULL的程序。该工程的目录在sdk安装位置的“boards\evkmcimx6ull\demo_apps\hello_world\iar”目录下面,因为我们的sdk安装到了G盘的nxp文件夹下,所以hello_world工程的绝对路径是“G:\nxp\boards\evkmcimx6ull\demo_apps\hello_world\iar”(大家可以根据自己sdk安装的位置,选择对应的目录)。我们在“Open Workspace”对话框里选择hello_world工程的目录,最终在改目录下选择“hello_world.eww”(IAR工程文件的后缀名是eww),然后点击“打开”按钮,如下图所示





Hello_world工程打开后的界面如下图所示:




我们可以看到该工程提供了四种编译方式,如下图所示:




我们这里使用默认的“ddr_debug”方式编译该工程。
我们可以点击工具栏上的“Make”按钮,编译该工程,如下图所示:




从上图的编译结果输出信息,我们可以看到编译成功。

然后我们连接JLNIK V9下载器到i.MX6ULL终结者开发板的JTAG接口,如下图所示:




由于i.MX6ULL芯片的JTAG接口和SAI(声卡)是复用的,所以我们使用JTAG接口的时候需要修改下开发板(V1.0的底板需要去掉底上的电阻R183;V1.1的底板需要去掉声卡芯片旁边的跳线帽(J50))。
然后我们连接开发板的调试串口到PC电脑上,并在电脑上打开串口终端,串口终端的波特率设置成115200,8位数据位,无奇偶校验,1位停止位,不选择流控,如下图所示:




设置完成串口终端,我们打开串口终端,如下图所示:






然后我们给开发板上电,接着我们在IAR工程界面的菜单栏点击“Debug without Loading”图标,如下图所示:



如果JLINK和开发板的JTAG接口连接正确的话,会进入到调试界面,如下图所示:




从上图我们可以看到hello_world的程序已经开始运行,程序的指针在main函数入口处停止,等待我们执行调试。
IAR进入调试模式以后,在菜单栏上调试相关的快捷图标会变成有效状态(鼠标可以点击),与调试相关的几个快捷图标如下图所示:



从上图,我们可以看到一共有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:结束调试模式

在调试模式下控制程序执行主要通过上面的7个快捷图标来实现。

下面我们来看一下怎么给程序设置断点。IAR工程里面给程序设置断点很简单,我们在普通编译模式或者调试模式下,只需要鼠标点击每行最左侧的灰色空白区域,就可以为该行添加断点,如下图所示:




断点添加完成后,如下图所示:






关于i.MX6ULL使用JTAG调试我们就先介绍到这里。我们可以使用JLink.exe下载编译好的二进制程序到i.MX6ULL开发板的内存指定位置,然后从该位置执行我们的二进制程序。具体的使用我们会在后面的文档中给大家介绍。


关注“迅为电子”VX公众号,不定期分享教程、资料和行业干货及产品一线资料。
关注VX公众号:迅为电子,回复:终结者,免费下载开发板资料

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

118

帖子

1

粉丝