1120470_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

1120470_zh-CN

1120470_zh-CN

FRDM-K22F:使用 Segger J-Link OpenSDAv2.1 固件进行调试<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

本文档介绍如何使用Segger J-Link OpenSDAv2.1 固件和Kinetis Design Studio V1.1.0调试 FRDM-K22F 板。

 

适用于:

  • OpenSDAv2.1 板(目前为 FRDM-K22F)
  • Kinetis 设计工作室 V1.1.0

 

13826_13826.pngpastedImage_0.png

 

概述

FRDM-K22F 板( FRDM-K22F|Freedom 开发板|Kinetis|Freescale )附带编程的 OpenSDAv2.1,并且默认具有 CMSIS-DAP 调试固件。

(有关 OpenSDA 差异,请参阅最后的“技术细节”)

 

KDS V1.1.0不支持用于 FRDM-K22F 的带有 CMSIS-DAP 的 OpenOCD。尝试使用 KDS V1.1.0 调试 FRDM-K22F 板并且 OpenOCD/CMSIS-DAP 会导致控制台视图出现错误,目前无法实现,直到 OpenSDA 更新(参见Kinetis Design Studio V1.1.0:发行说明和新闻)。

 

一种解决方案是使用Segger J-Link OpenSDAv2.1 固件来调试电路板。

(另一个解决方案是使用 P&E Multilink OpenSDAv2.1 固件,请参阅FRDM-K22F:使用 P&E OpenSDAv2.1 固件进行调试)

 

安装Segger J-Link OpenSDA V2.1固件

您需要在主板上安装 Segger J-Link OpenSDAv2.1 固件,并且只需执行一次(除非您再次更改固件)。

 

  1. 前往SEGGER - 嵌入式专家 - OpenSDA / OpenSDA V2并下载 OpenSDA V2.1 固件(zip 文件)
  2. 将 zip 文件中的固件文件 (JLink-OpenSDA_v2_1.bin) 解压到您的硬盘上。
  3. 使用 OpenSDA USB 端口为电路板供电/插入 USB 电缆,同时按下 Reset/SW1。
    13827_13827.pngpastedImage_6.png
  4. 该设备应该枚举主机上的 BOOTLOADER:设备。您现在处于引导加载程序模式。
    13829_13829.pngpastedImage_8.png
  5. 复制 Segger .bin文件到该 BOOTLOADER 设备。等待几秒钟即可完成操作。
  6. 拔掉电路板,然后正常供电(不按下 SW1)
  7. 该开发板现在应该显示为 J-Link 设备并带有虚拟 COM 端口:
    13831_13831.pngpastedImage_10.png
    13832_13832.pngpastedImage_11.png
  8. 您已准备好调试 FRDM-K22F,就像使用 Segger J-Link 一样

 

使用 Segger J-Link OpenSDAv2.1 进行调试

创建一个新的调试/启动配置:选择您的项目,然后使用菜单运行>调试配置。

使用“新建”图标为您的应用程序和项目创建新配置(主选项卡):

13833_13833.pngpastedImage_2.png

 

指定 MK22FN512xxx12 作为您的设备名称,并确保选择“SWD”:

13835_13835.pngpastedImage_4.png

 

已禁用 SWO:

13836_13836.pngpastedImage_5.png

 

就是这样。现在您可以使用板上的 Segger J-Link OpenSDA V2.1 固件调试您的应用程序 :-)。

您可以使用启动配置中的“调试”按钮:

13838_13838.pngpastedImage_1.png

或者使用调试图标下拉列表:

13837_13837.pngpastedImage_0.png

 

祝您调试愉快

技术细节

目前,OpenSDA 有三个版本可用:

  1. OpenSDAv1.0:这个适用于所有 FRDM 板,例如 FRDM-KL25Z、FRDM-KL26Z、FRDM-KL46Z、FRDM-K20 等(之前的 FRDM-K64F)。这些板上的引导加载程序受到保护,无法被擦除,并支持 P&E、Segger 和 CMSIS-DAP 调试应用程序 (*.sda)。
  2. OpenSDAv2.0:该版本于 2014 年 FTF 上与 FRDM-K64F 板一起发布。这是一个开源的引导程序,用户可以更换该引导程序。它支持*.bin文件和P&E、Segger和CMSIS-DAP调试应用程序。
  3. OpenSDAv2.1:此版本随 FRDM-K22F 板一起发布。它和

板上的调试电路对于所有 OpenSDA 版本(Kinetis K20 微控制器)都是相同的:区别在于 K20 上编程的引导加载程序:OpenSDAv1.0 上的引导加载程序无法被删除/更改。OpenSDAv2.x 上的引导加载程序可以被擦除/更改,以及OpenSDAv2.0之间的区别并且 v2.1 是调试应用程序启动的地址:对于 OpenSDAv2.0,它期望应用程序位于地址 0x5000,而 OpenSDAv2.1 期望应用程序从地址 0x8000 启动。

 

另请参阅: OpenSDAv2

概述回复:FRDM-K22F:使用 Segger J-Link OpenSDAv2.1 固件进行调试<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

OpenSDA 2.1 的起始地址是 0x8000,这反映在 ELF 头中(尽管我很好奇构建从哪里获得这个值)。

回复:FRDM-K22F:使用 Segger J-Link OpenSDAv2.1 固件进行调试<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我的错。我的问题是获取错误的 segger 引导加载程序并且没有注意到 FRDM-K64F 和 FRDM-K22F 之间的引脚名称发生了变化。修复了这些问题,现在一切正常。

回复:FRDM-K22F:使用 Segger J-Link OpenSDAv2.1 固件进行调试<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

readelf -h -l mbed_22blinky.elf(以下输出)

我认为这一点,特别是 .isr_vector位于 0x8000,告诉我这个 elf 文件与 OpenSDA 2.1 不兼容(当我阅读原始帖子时应该是 0x5000)。现在要找到在哪里调整该设置。我认为它可能被埋在 mbed 的某个地方,因为我在 kds 设置中的任何位置都找不到它。将从源而不是 .o 导入 mbed出口(出于其他原因这样做会更好)。

ELF 头:

魔法:7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00

类别:ELF32

数据:2 的补码,小端

版本:1(当前版本)

操作系统/ABI:UNIX - System V

ABI 版本:0

类型:EXEC(可执行文件)

机器:ARM

版本:0x1

入口点地址:0x199

程序头开始:52(文件中的字节数)

节头开始:142632(文件中的字节数)

标志:0x5000002,有入口点,Version5 EABI

此标头的大小:52(字节)

程序头大小:32(字节)

程序头数量:5

节头大小:40(字节)

节标题数量:22

节头字符串表索引:19

程序头:

类型偏移量VirtAddrPhysAddrFileSizMemSizFlg对齐

  EXIDX          0x011b80 0x00009b80 0x00009b80 0x00390 0x00390 R   0x4

加载 0x008000 0x00000000 0x00000000 0x001f0 0x001f0 RE 0x8000

加载 0x008400 0x00000400 0x00000400 0x00010 0x00010 R 0x8000

加载 0x008410 0x00000410 0x00000410 0x09b00 0x09b00 重新 0x8000

加载 0x018400 0x1fff0400 0x00009f10 0x002c8 0x00cac RW 0x8000

部分到段的映射:

分段部分...

00 .ARM.exidx

01 .isr_vector

02 .flash_protect

   03     .text .ARM.extab .ARM.exidx

04 .数据.bss

回复:FRDM-K22F:使用 Segger J-Link OpenSDAv2.1 固件进行调试<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

谢谢你的信息。我升级到了Segger J-Link OpenSDAv2.1 固件,但是当程序启动时,似乎程序的基地址是关闭的。KDS 及其工具链是否会为错误的基地址生成可执行文件?我应该检查某个地方的设置吗?或者代码是可重定位的,而这只是加载器细节的事情?

回复:FRDM-K22F:使用 Segger J-Link OpenSDAv2.1 固件进行调试<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我可以在FRDM-K22F|Freedom Development Board|Kinetis|Freescale找到 K22F 包中的原理图文档

FRDMK22FUG.pdf 包含部分原理图。但它并不完整。

回复:FRDM-K22F:使用 Segger J-Link OpenSDAv2.1 固件进行调试<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

感谢您的信息。

我比较了OpenSDA的V1和V2之间的区别。我发现它的硬件有以下几点不同:

从 V1 到 V2 的变化

  • VBAT 至 P3V3,微小变化
  • 所有 SDA IO,包括 DIO/CLK/RST/RX/TX 均通过 NXP 电平转换器缓冲
  • SDA_SWD_EN 和 SDA_SWD_OE 为高电平有效,而不是 V1 中的低电平有效
  • P5V_USB_SENSE 移至 P30/PTD5
  • 在 P31/P32 上添加 POWER_ON 和 FAULT_B 来控制外部 LDO MIC2005

因此,与P16/P20最大的区别在于SDA_SWD_EN和SDA_SWD_OE的控制逻辑。

如果我错了,请纠正我。

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-06-2026 02:27 AM
更新者: