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次,發文人進小黑屋喔~

評論