2291862_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2291862_ja-JP

2291862_ja-JP

CAAM ドライバからのユーザーコールバックの使用方法

がある:

/*! @brief CAAMハンドル
* jobRing とオプションでユーザー コールバック関数を指定します。
* ユーザー コールバック関数は、ジョブリング割り込みがユーザーによって有効にされている場合にのみ呼び出されます。
* デフォルトでは、jobRing 割り込みは無効になっています (デフォルトのジョブ完了テストは CAAM 出力リングをポーリングします)。
*/
typedef 構造体 _caam_handle_t
{
caam_job_ring_t ジョブリング;

/* コールバック関数 */
caam_job_callback_t コールバック; /*!< コールバック関数 */
void *userData; /*!< CAAMジョブ完了コールバックのパラメータ */
} caam_handle_t;

SOコールバックを書いてcaam_handle_t*ハンドルにマッピングしました

静的void xpnd_CAAM_job_ring_1_complete_clb(void* args) {
BaseType_t pxHigherPriorityTaskWoken = pdFALSE;
xSemaphoreGiveFromISR(sem[ITF_1],
&pxHigherPriorityTaskWoken);
IRQ を無効にします(CAAM_IRQ1_IRQn);
}

最後に試したのは:

IRQ を有効にします (CAAM_IRQ1_IRQn);

drv_res = CAAM_RNG_GetRandomDataNonBlocking(
ベース、ハンドル、kCAAM_RngStateHandle0、説明、データ、データサイズ、
kCAAM_RngDataAny、NULL);

if (drv_res == kStatus_Success) {
pdTRUE != xSemaphoreTake(sem[ITF_1], MS_TIMEOUT) の場合 {
PRINTF("CAAM 操作に失敗しました\r\n");
ST_FAILURE を返します。
}
} それ以外 {
PRINTF("ドライバ操作のセットアップに失敗しました、res %d\r\n", drv_res);
ST_FAILURE を返します。
}

セマフォからエラーを報告しなかったため、プログラムはすぐにクラッシュしたと思います。

他に何かする必要がありますか?

アセンブリ startup_mimxrt1176 には CAAM_IRQ0_IRQHandler のプロトタイプがありますが、定義されていない可能性があります。このような状況になるでしょうか?

また、ドライバ コードでは、カスタム コールバックが呼び出される場所がわかりません。

Re: How to use user callback from CAAM driver

こんにちは@jslota13245さん

弊社の製品にご興味をお持ちいただき、またコミュニティをご利用いただき誠にありがとうございます。

あなたのコードは FreeRTOS に基づいているようです。
まず NXP SDK デモ「evkbmimxrt1170_caam_cm4」でテストすることをお勧めします。このデモプロジェクトは、KSDKソフトウェアを使用してプレーンテキストを暗号化し、AESアルゴリズムを使用して復号化するデモプログラムです。CBCモードとGCMモードのデモが行われます。対称鍵は、CAAMの乱数ジェネレータを使用してランダムに生成されます。
 
このデモを実行して、問題が API の使用によるものか、FreeRTOS の統合によるものかを確認してください。
 
よろしくお願いいたします。
メイリュー
Re: How to use user callback from CAAM driver

親愛なる@mayliu1様、

デモでは、ユーザー コールバックの使用方法、または実際の割り込みの使用方法は示されません。

完了時に CAAM ハードウェアからの割り込みが必要です。それについて手伝ってもらえますか?

标记 (1)
无评分
版本历史
最后更新:
‎01-14-2026 04:23 AM
更新人: