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

井手: PSoCクリエーター

設計目標: アプリケーションをブートローダー [app0] からブートローダー アプリケーション [app1] に切り替えます。

設計アプローチ: DFU アプリケーション ノートに従い、この PSOC で動作するようにリンカを構成しました。

発行: app0 が app1 に切り替わると、PLL が既に実行されているため、PLL 関数Cy_SysClk_PllManualConfigure は失敗します。 このコードは、"cyfitter_cfg.c" という自動生成されたファイルにあります。 app0 からのすべてのクロックは、app1 のクロックと同じ周波数で実行されます。

app1が実行されるようにするには何をする必要がありますか?

 

shepdog87_1-1696866035676.png

 

0 件の賞賛
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 には、次の 2 つのメソッドがあります。

  • Cy_DFU_ExecuteApp --> APPID を受け取り、NVIC_SystemResetを実行します
  • Cy_DFU_SwitchToApp --> APPID を受け取り、スタックポインタとリセットハンドラを設定します

私はCy_DFU_SwitchToAppを使用しています。 NVIC_SystemResetを呼び出した後、NVIC_SystemReset CAN 実際にApp1を起動する方法について少し混乱しています。 ブートローダーApp0で起動するだけのようですか? このPSOC6には、アクセス可能な単一のコアであるCM4しかありません。 デュアルコアを備えた他のPSOC6製品は、CM0とCM4で異なるリセットを持っているようです。

appidはCy_DFU_ExecuteApp内のRAM変数であるため、ソフトウェアのリセット後にジャンプするアプリにその値をどのように保持できるかはわかりません。 また、App1内で実行 CAN コマンドがあり、ボードをリセット CAN ブートローダーモードに CAN 。 私はNVIC_SystemReset()を使ってそれを行うので、ブートローダ内にソフトウェアリセットを行ったかどうかを検出するロジックがあれば、App0 NVIC_SystemReset()とApp1 NVIC_SystemReset()を区別することはできません。

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@shepdog87

 

どのようにアプリケーションにジャンプしていますか? スタックポインタを設定してリセットハンドラを呼び出していますか、それともappIdの実行を使用していますか? 私はあなたが最初の方法を使用していると思います。 その場合は、2番目の方法を使用してみてください。

 

よろしく

ロハン

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは@shepdog87

はい、リセット後、Cy_DFU_ExecuteAppブートローダーを起動し、ブートローダーのリセットハンドラーからアプリケーションにジャンプします。 この方法は、アプリケーションにジャンプする前にすべての割り込みをクリアする必要があるため、推奨されます。 そのため、割り込みをクリアするためにリセットが実行されます。

 

よろしく

ロハン

 

0 件の賞賛