S32K3 工具篇2:如何在S32DS中使用Segger JLINK下载
- 一, S32DS中JLINK下载
- 1.1 Segger JLINK 驱动
- 1.2 S32DS JLINK驱动路径配置
- 1.3 S32DS JLINK debug configuration
- 1.4 S32DS JLINK debug S32K3板子结果
- 二, JLINK驱动实现S32K344代码下载
- 2.1 S32DS生成可执行文件
- 2.2 JLINK commander烧录方式
- 2.3 JLINK JFlash烧录方式
- 三, S32DS 新建工程构建JLINK debug接口
大家好,我是火山,一个从事嵌入式行业多年的菜鸟工程师,在此分享自己的S32K3学习历程!
之前分享了S32K3 工具篇1:新手如何安装S32DS RTD4_0_0,有了板子,有了编译环境之后,就得考虑不同仿真器如何在编译环境下载的问题。工具篇1中提到使用了NXP官方的S32K3X4EVB,该板子是自带了opensda的仿真器,但是如果是其他不带仿真器,自定义的板子,就可以使用更多第三方的debugger,比如我们常用的:Segger JLINK, PE Multilink, Lauterbach等。所以笔者为了锻炼,准备把常用的几个debugger都做一下调试,本篇文章主要使用Segger JLINK plus去实现S32K344的下载或者仿真。
一, S32DS中JLINK下载
这里直接在S32DS中导入S32K344 RTD例程Siul2_Port_Ip_Example_S32K344:
File->New->S32DS Project from example
导入工程之后,不忘进入ConfigureTools->Pins,通过CT工具给现有工程生成下代码,否则工程是不完整的。然后在此工程上实现JLINK的下载和仿真。硬件连接如图1所示。以我之前的I.MX RT MCUXpresso IDE的经验认为,工程建立之后,直接点击debug,会自动识别PC所连接着的debugger,然后IDE帮忙直接生成对应的debug工具链,并且进入debug的方法去尝试S32K,工程Build之后,直接点击Debug,结果如下:
不出意外的情况下,出了意外,S32DS不够智能,没给咱直接识别debugger并且构建debug环境,好了,死心,老老实实回归原始态,一步一步自己配置。
1.1 Segger JLINK 驱动
下载Segger JLINK驱动,下载链接:
https://www.segger.com/downloads/jlink/
根据你电脑的位数选择对应的windows驱动,比如最新的是:JLink_Windows_V796p_x86_64.exe
我这边用的是之前下载的JLink_V796b,下载之后,直接安装,记住你的安装路径,后面要用,比如我安装的路径是:
C:\Program Files\SEGGER\JLink_V796b
安装完成之后,你会在你的安装路径看到如下内容:
上面黄色块是后面需要用的工具。
1.2 S32DS JLINK驱动路径配置
如果你在你当前的S32DS workspace下,之前没有用过JLINK,也就是说你的workspace是一个新的工作区,那么你就需要做一下IDE的JLINK驱动链接。
S32DS->Help->Install New Software
因为我发现,如果不改,默认总是给你指定到S32DS安装目录下面了:
所以,如果你用最新的Segger JLINK驱动,需要修改下这个指定驱动的位置路径。
1.3 S32DS JLINK debug configuration
上面配置好之后,就需要在S32DS的debug configuration中添加一个JINK的接口。
S32DS->RUN->Debug configuration
默认是这样的:
可以看到,没有JLINK的,只有一个工程默认自带的PEMicro的接口,所以,图8中,双击:GDB Segger J-Link Debugging, 直接生成一个,然后在生成好的界面中,在debugger这里,executeable选择你刚刚安装好的JLINK驱动路径的JLinkGDBSeverCL.exe:
C:\Program Files\SEGGER\JLink_V796b\ JLinkGDBServerCL.exe, 然后填写Device name 为: S32K344。
Device name,如果你不知道到底要填成什么样格式的,可以直接点击supported device names去Segger官网查找下,通常会有一个如下类似的表格:
1.4 S32DS JLINK debug S32K3板子结果
经过上面的配置之后,所有的项目都已经配置完成,下面可以直接使用JLINK debug并且下载代码到目标板子啦!S32DS中点击Debug按钮:
可以看出,已经进入了debugger的状态。点击全速运行,可以发现板上的灯正常闪烁了,说明到目前为止,S32DS已经成功用JLINK运行了。
二, JLINK驱动实现S32K344代码下载
有些客户有这样的需求,在IDE中做好了工程,生成可执行文件,然后再脱离IDE,直接通过下载工具去下载,那么本节给出,如何在S32DS中生成可执行文件,比如.bin, .hex, srec等,然后通过Segger JINK自带的工具,比如JLINK commander,Jflash去下载。
2.1 S32DS生成可执行文件
这点和我在MCUXPresso IDE中搞NXP I.MXRT芯片也不一样,mcuxpresso IDE只需要在.elf文件右击生成对应的可执行文件就可以了,但是S32DS不一样,需要多几步,下面给出具体步骤:
选中工程,右击,选择properties:
这里注意,一定要先apply一下,否则看不到要生成可执行的栏目。
这里可以选择生成hex文件,经过上面步骤之后,可以在工程的debug栏目下面找到对应的.hex可执行文件,然后就可以拿着这个.hex去用JLINK commander或者Jflash烧录了。
2.2 JLINK commander烧录方式
首先拷贝刚才生成好的Siul2_Port_Ip_Example_S32K344.hex 到Segger JLINK驱动安装目录: C:\Program Files\SEGGER\JLink_V796b
这种方式就是为了方便,省得指定烧录文件路径了。
然后,还得知道你这个hex文件,或者如果生成的是bin文件,你要烧录到S32K344的具体起始地址,这里可以查看S32K344的文档reference manual,memory map:
Pflash起始地址是0X400000, 当然从S32DS的ld文件也是能直接看出来,也是最直接的方法:
好了,万事具备,只欠东风。
双击6个6,哦不,双击:
C:\Program Files\SEGGER\JLink_V796b\ JLink.exe
可以看到,已经找到内核了,这个时候,就可以使用如下命令烧录:
Loadfile app.hex address
这里使用:
Loadfile Siul2_Port_Ip_Example_S32K344.hex 0x400000
可以看到,已经成功烧录了。
板子断电,上电,板上红灯闪烁,OK,说明JLINK commander方法成功运行。
2.3 JLINK JFlash烧录方式
这里注意哦,你使用的Segger JLINK 版本,只有高级别版本才能支持JFLASH,低版本的JLINK打开JFLASH会没有license,所以我这边使用的是JLINK Plus。
双击C:\Program Files\SEGGER\JLink_V796b\ JFlash.exe
点击新建一个工程,选择芯片为S32K344。
然后把之前生成好的app: Siul2_Port_Ip_Example_S32K344.hex拖进右边的代码区域,然后点击:
Connect->manual Programming->Erase Chip->Production programming
分别完成连接,全片擦擦,image烧录的过程,特别丝滑!!!
烧录完成之后,断开连接,板子断电上电,板子上灯闪烁,说明该方法也成功运行了。
三, S32DS 新建工程构建JLINK debug接口
刚刚前面讲了,怎么在现有工程里面添加一个JLINK 的debug接口,其实想要工程带JLINK debug 接口,还有另外一种办法,可以在S32DS中新建一个工程,然后新建工程的时候,会给你选择debugger的类型,这个时候可以使用JLINK, 这样工程新建好之后,就会自动帮你新建好对应的debugger接口。
S32DS->File->New->S32DS Application Project
这里选择所使用的S32K344芯片,点击下一步。
Debugger这里就可以选择你想要的仿真器了,选择Segger debugger就是JLINK了。
SDK选择装好的S32K3_S32K344_M7 v4.0.0,完成之后,S32DS将会生成一个带有JLINK debugger的工程。
可以看到,我们新生成的工程已经带有了LP的驱动,也就是非autosar标准的SDK驱动。然后点击run->debug configuration 查看接口情况:
可以看到,这里工程帮忙生成了一共4个JLINK的接口,分别是Debug,release下的FLASH以及RAM接口,这个和对应的编译不同配置有关:
FLASH,RAM会对应不同的linkerfile来指定app的存储地址区域。
Debug和release会考虑不同的优化等级,调试信息配置不同。
有了工程和JLINK接口,就可以和上一章一样做代码下载和仿真了。
到目前为止,已经实现了Segger JLINK配合S32K344的使用。