ModusToolbox 实战入门- 编程和调试篇

前言

英飞凌针对可程式化单芯片系统 (Programmable system-on-chip, PSoC) 相关系列元件,提供了两套开发工具,分别为 PSoC Creator™ 和 ModusToolbox™
上一篇针对 ModusToolbox™ 专案项目配置讲解,本篇将对 ModusToolbox™ 专案编程和调试进行介绍。

本文重点之颜色划分,粗字体尤甚:
重要
次重要
次之 
 

本文概要

编程和调试是开发环境所特有的。 主要程序和开发解决方案支持大部分的 PSoC 器件。
首先,这意味着 J-Link 和 OpenOCD。
这些解决方案提供在设备内对闪存进行编程并提供用于调试的 GDB 服务器。
本章涵盖了与构建和调试相关的各种主题,包括:
◍  PSoC™ MCU 编程/调试
◍  启动配置
◍  在 MiniProg4 中使用 JTAG 接口
◍  擦除外部存储器
◍  烧写 eFuse
◍  调试连接选项
◍  选择特定的 CMSIS-DAP 设备
◍  选择特定的 J-Link 设备
◍  KitProg 固件加载程序
◍  使用 KitProg3_MiniProg4 重启编程模式
◍  PSoC™ 4 闪存安全编程

 

1. PSoC™ MCU 编程/调试

可以使用 Make 从命令行去构建应用程序。
有关详细信息,请参阅 ModusToolbox™ user gui(也位于 <install>/ide_<version>/docs 目录中)。
该文档也可从 IDE 的“帮助”菜单中获得。

返回摘要
 

1.1 启动配置 

所有器件的编程和调试流程都相似。
Eclipse IDE 包含几个启动配置,它们控制用于对设备进行编程和启动调试器的各种设置。
根据使用的套件和应用程序类型,有各种可用的启动配置。 

支援两组配置:一组用于 KitProg3_MiniProg4(包含在大多数基于 Infineon PSoC™ 6 和 PSoC™ 4 的套件上),另一组用于 SEGGER J-Link。

Note:  KitProg3_MiniProg4 启动配置还支持 MiniProg4,可以通过 10 引脚调试连接将其连接到套件。
         有关详细信息,请参阅 MiniProg4 product page。 不支持 MiniProg3。

启动配置显示在 Run/Debug Configurations 对话框中,类似于以下内容。
Debug_Configurations
可以从 “Run” 菜单或选择 “Run” 和 “Debug” 命令旁边的下拉箭头打开这些对话框。

这些配置包括应用程序名称和协议,例如:

CapSenseSlider Program (KitProg3_MiniProg4)
CapSenseSlider Debug (JLink)

Note:  如果 J-Link 探头连接到套件,KitProg3_MiniProg4 配置可能不起作用。

创建应用程序时,该工具会为 KitProg3_MiniProg4 和 J-Link 生成以下启动配置。 有些项目显示在 Quick Panel 中,有些仅在“运行/调试配置”对话框中。
◍  Attach:此启动配置启动Cortex-M4 调试会话,附加到正在运行的PSoC™ 6 目标,无需编程或复位。
◍  Debug:此启动配置在两个内核上构建整个应用程序,对设备的所有存储器进行编程,然后启动 Cortex-M4 调试会话。
◍  Erase:此启动配置会擦除所有内部存储器。
◍  Program:此启动配置在两个内核上构建整个应用程序,对设备的所有内存进行编程,然后运行程序。

返回摘要

 

1.2 在 MiniProg4 中使用 JTAG 接口

MiniProg4 可以通过 SWD 或 JTAG 协议与目标进行交互。 默认情况下,将使用 SWD 协议

为了使用 JTAG,需要为适当的调试配置添加特定命令。
在 Config options 字段的 Debugger 选项卡下(在 -c "source [find interface/kitprog3.cfg]" 之后),插入以下行:

-c "cmsis_dap_vid_pid 0x04B4 0xF151 0x04B4 0xF152"
-c "transport select jtag"

 

1.3 擦除外部存储器

要擦除外部存储器,必须修改 Debugger 选项卡上的“Erase”启动配置选项,如下所示:

对于 PSoC™ 64 Secure Boot kits,例如 CY8CKIT-064S0S2-4343W 和 CY8CPROTO-064S1-SB,输入以下内容以禁用通过 SMIF 进行的外部存储器编程: 

-c "set DISABLE_SMIF 1"


对于所有其他工具包,将路径添加到 GeneratedSource 文件夹(在 -s "${openocd_path}/../scripts" 之后):

-s "./libs//COMPONENT_BSP_DESIGN_MODUS/GeneratedSource"
 

返回摘要

 

1.4 烧写 eFuse

PSoC™ 6 MCU 包含一次性可编程的电子保险丝 (eFuse)。
它们存储设备特定信息、保护设置和客户数据。

默认情况下,即使 eFuse 存在于编程文件中,它们也不会被编程。
要启用 eFuse 编程,请在 Config options 字段的 Debugger 选项卡下为适当的 Debug Configuration 添加以下命令(在 -c "source [find target/psoc6.cfg]" 之后):

-c "psoc6 allow_efuse_program on"

 

Attention:  由于熔断 eFuse 是一个不可逆的过程,英飞凌建议仅在可控工厂条件下的量产编程中进行编程,而不是在原型制作阶段进行编程。
                对熔丝进行编程要求相关 I/O 电源处于特定电平:器件 VDDIO0(或 VDDIO,如果封装中只有一个 VDDIO)电源应设置为 2.5 V (±5%)。

返回摘要

  

1.5 调试连接选项

默认情况下,在 Eclipse IDE 中创建的典型 PSoC™ 6 应用程序包括为两个探针设置的启动配置:
Cypress KitProg3(内置于 Cypress 套件中)和 Segger J-Link。

 通讯固件 调试连接 更多信息
 Cypress-provided KitProg3OpenOCD via CMSIS-DAP PSoC™ Programming Solutions 
 SEGGER-provided J-Link DLL SEGGER J-LinkSEGGER J-Link 

 

1.6 选择特定的 CMSIS-DAP 设备

如果有两个或更多 CMSIS-DAP 设备连接到执行操作的电脑,则默认使用第一个检测到的设备
KitProg3 支持 CMSIS-DAP 模式 – HID 和 BULK。 首先选择 BULK 设备,然后选择 HID 设备。
可以通过以下方式指定 CMSIS-DAP 设备:
◍  USB 设备的 VID 和 PID
◍  USB 设备的序列号
◍  USB 设备的 VID、PID 和序列号

为此,必须在配置选项字段的调试器选项卡下为适当的调试配置添加特定命令(在 -c "source [find interface/kitprog3.cfg]" 之后)


1.6.1 按 VID 和 PID 选择

使用特定于操作系统的工具来确定连接设备的 VID 和 PID。 例如,在 Windows 上,使用设备管理器。
使用“cmsis_dap_vid_pid”命令选择具有特定 VID 和 PID 的 CMSIS-DAP 设备。
如果有两个或更多设备具有相同的指定 VID/PID 对,OpenOCD 将使用通过列表中检测到的第一个设备。

◍  要在 VID = 0x04B4 和 PID = 0xF155 的 CMSIS-DAP BULK 模式下指定 KitProg3:

cmsis_dap_vid_pid 0x04B4 0xF155

◍  要在 VID = 0x04B4 和 PID = 0xF154 的 CMSIS-DAP HID 模式下指定 KitProg3:

cmsis_dap_vid_pid 0x04B4 0xF154

◍  指定任何(HID 或 BULK)连接的 KitProg3 设备:

cmsis_dap_vid_pid 0x04B4 0xF154 0x04B4 0xF155 


1.6.2 按序列号选择
具有相同序列号的设备不应超过一台。 如果只想使用一个特定设备,请使用此方法。
使用特定于操作系统的工具来确定连接设备的序列号。
还可以使用带有 --device-list 选项的 fw-loader 实用程序。 请参阅 KitProg 固件加载程序

使用“cmsis_dap_serial”命令选择具有特定序列号的 CMSIS-DAP 设备。

◍  要指定序列号为 0B0B0F9701047400 的 CMSIS-DAP 设备,请使用以下命令:

cmsis_dap_serial 0B0B0F9701047400 


1.6.3 通过 VID/PID 和序列号选择

可以按任意顺序同时使用这两个命令。 例如:

cmsis_dap_vid_pid 04B4 F155 cmsis_dap_serial 0B0B0F9701047400


返回摘要

1.7 选择特定的 J-Link 设备

如果有两个或更多 J-Link 设备连接到执行操作的电脑,则默认使用第一个检测到的设备。
可以通过在 Debugger 选项卡下为相应的 Debug Configuration 设置序列号来选择特定的 J-link 器件: 


返回摘要

  

1.8 KitProg 固件加载程序

PSoC™ MCU 套件包括板载编程器/调试固件,称为 KitProg。 CY8CPROTO-0624343W 套件默认具有 KitProg3。
但是,CY8CKIT-062-BLE 和 CY8CKIT-062-WIFI-BT 套件随附安装了 KitProg2 固件,该固件不适用于 ModusToolbox™ 软件必须更新到 KitProg3
KitProg3 默认提供 CMSIS-DAP (Bulk) 协议,比 CMSIS-DAP (HID) 协议快约 2.5 倍。两种模式都可以通过 OpenOCD 使用。

ModusToolbox™ 软件包括一个命令行工具“fw-loader”,用于更新套件并将 KitProg 固件从 KitProg2 切换到 KitProg3,然后再切换回来。以下是该工具的默认安装目录:
<安装路径>\ModusToolbox\tools_<版本>\fw-loader\bin\

根据需求,使用 fw-loader 工具更新 KitProg 固件。
KitProg2 不适用于 ModusToolbox™ 软件。同样,如果更新到 KitProg3,在恢复 KitProg2 之前,PSoC™ Creator 将无法使用套件。

Note:在 Linux 机器上,必须在第一次运行 fw-loader 之前运行 udev_rules\install_rules.sh 脚本。

有关详细信息,请参阅 KitProg3 user guide。 fw-loader 工具还在 fwloader 安装目录中提供了一个 readme 文本文件。

返回摘要 

  

1.9 使用 KitProg3_MiniProg4 重启编程模式

默认情况下,启动配置使用复位模式对器件进行编程。
但是,复位模式并非在所有情况下都可用(例如,如果 XRES 引脚在器件封装上不可用)。 在这些情况下,启动配置使用软件替代重置。
但是,在某些情况下,当对设备的 DAP 的访问受到限制时(例如由安全设置设置时),使用软件重置类型是不够的。

如果没有可用的 XRES 引脚并且 DAP 访问受到限制,则复位部件的唯一方法是使用电源循环模式。
按照这些说明将命令添加到启动配置并切换到电源循环模式。
1.  打开启动配置进行修改。
2.  选择调试器选项卡。
3.  在配置选项字段中,插入以下行
   (在 -c "source [find interface/kitprog3.cfg]" 之后):
     

For PSoC™ 6:
-c "set ENABLE_POWER_SUPPLY <mV>"
-c "set ENABLE_ACQUIRE 2"
 

For PSoC™ 4:
-c "set ENABLE_POWER_SUPPLY <mV>"
-c "set PSOC4_USE_ACQUIRE 2"

其中,<mV> 以毫伏为单位定义目标电压(例如,使用 -c "set ENABLE_POWER_SUPPLY 3300" 表示 3.3 V)。

Note:  验证目标 MCU 支持的电压范围,因为提供不支持的电压可能会损坏它。
          在通过 KitProg3_MiniProg4 供电之前,请确保使用的 MCU 未从外部供电。

返回摘要

  

1.10 PSoC™ 4 闪存安全编程

PSoC™ 4 器件包括一个灵活的闪存保护系统,用于控制对闪存的访问。
此功能可保护专有代码,但也可用于防止无意写入闪存的引导加载程序部分。
有关详细信息,请参阅设备的架构技术参考手册。

闪存由行组成(64/128/256 字节,取决于 PSoC™ 4 器件)。
每行闪光灯都可以独立设置其保护级别。
可以为每一行分配两个保护级别之一,如下表所示:

 保护设置 允许 不允许
 未受保护 外部读写,内部读写 -
全面保护外部读取,内部读取外部写入,内部写入


要应用闪存安全性,请通过创建 num_rows / 8 大小的数组在应用程序中包含适当的数据,其中 num_rows 是设备上的实际闪存行数。
该数组的每个字节负责保护 8 个闪存行,它设置了两个保护级别之一:
◍  0 – 不受保护
◍  1 – 全面保护

例如,要保护 256 行中的前 25 行和后 5 行,请在应用程序中包含以下数组:

CY_SECTION(".cyflashprotect") __USED 
static const unsigned char flash_protect[0x20] = {
0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

要启用闪存安全性,请使用更新的代码对器件进行编程。 如果想重新编程受保护的设备,则必须先擦除它。

返回摘要 

 

小结

透过以上讲解,相信已经对于 ModusToolbox™ 开发工具的专案编程和调试流程,有了初步的了解。
下一篇将继续专注于此开发工具的使用说明,本篇博文到这里,让我们期待下一篇博文吧!

 

参考资料

[1] Eclipse IDE for ModusToolboxTM user guide



英飞凌台湾 Automotive PSoC 代理商联系人
PM:
Frank Chiu; 手机:+886-937-008-020; Email:frank.chiu@sacsys.com.tw;
frank

FAE:
Ade Chen; 手机:+886-989-485-028; Email:ade.chen@sacsys.com.tw;
Ade

 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论