Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

裝置: CY8C6136BZI-F34

IDE: PSoC 創建者

設計目標:將應用程式從開機載入程式 [app0] 切換到可啟動載入應用程式 [app1]。

設計方法:遵循 DFU 應用程序注意事項,並將鏈接器配置為與此 PSOC 一起使用。

問題: 當 app0 切換到應用程式 1 時,PLL 函數 CY_SYSCLK_PLL ManualConfigure 失敗,因為 PLL 已經執行。此代碼位於一個名為 " cy " fitter_cfg.c 的自動生成文件中。 來自 app0 的所有時鐘以與 app1 中的時鐘相同的頻率運行。

我需要做什麼才能使其使 app1 運行?

 

shepdog87_1-1696866035676.png

 

1 解決方案
Translation_Bot
Community Manager
Community Manager
Community Manager

@shepdog87

是的,您是對的,重置後 CY_DFU_ExecuteApp 將啟動引導加載器,然後從引導加載器的重置處理程序跳到應用程序。 此方法是首選的,因為我們需要在跳轉到應用程序之前清除所有中斷。 這就是為什麼執行重置以清除中斷的原因。

 

問候,

羅漢

 

在原始文章中檢視解決方案

0
3 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

@Rohan136

PDL DFU API 中有兩種方法:

  • CY_DFU_執行應用程序--> 取得一個 APPID 並進行 NVIC _ 系統重置
  • cy_DFU_SwitchToApp--取得一個--> APPID 並設置堆疊指>針和重置處理程序

我正在使用 CY_DFU _ 切換應用程序。 我對 NVIC_SystemReset 在呼叫 NVIC_SystemReset 後CAN實際啟動到 App1 感到有點困惑。似乎它只會啟動回到引導加載程序 App0? 此 PSOC6 只有一個可存取的單一核心,即 CM4。 看起來其他具有雙核心的 PSOC6 產品對 CM0 與 CM4 有不同的重置。

appid 是 cy_DFU_ExecuteApp 中的一個 RAM 變量,因此我不確定它如何將其值保留到軟件重置後跳轉到哪個應用程序。 另外,我有一個CAN在 App1 中執行的命令, CAN重置主機板,這樣我CAN將其進入引導程式模式。我使用 NVIC_SystemReset()來做到這一點,所以如果我在引導加載器中有邏輯來檢測我是否進行軟件重置,我將無法區分 App0 NVIC_SystemReset()與 App1 NVIC_SystemReset()。

 

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@shepdog87

 

您如何跳轉到應用程序? 您是否設置堆棧指針並調用重置處理程序還是使用執行 AppId? 我認為你正在使用第一種方法。 如果是這樣,請嘗試使用第二種方法。

 

問候,

羅漢

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@shepdog87

是的,您是對的,重置後 CY_DFU_ExecuteApp 將啟動引導加載器,然後從引導加載器的重置處理程序跳到應用程序。 此方法是首選的,因為我們需要在跳轉到應用程序之前清除所有中斷。 這就是為什麼執行重置以清除中斷的原因。

 

問候,

羅漢

 

0